fix bug in hrn_to_urn()
[sfa.git] / sfa / util / xrn.py
index 38656a7..9656304 100644 (file)
@@ -123,16 +123,18 @@ class Xrn:
         if Xrn.is_urn(xrn):
             self.hrn=None
             self.urn=xrn
-            if type:
-                self.type=type 
             if id:
                 self.urn = "%s-%s" % (self.urn, str(id))
             self.urn_to_hrn()
+            if type:
+                self.type=type
+                self.hrn_to_urn()
         else:
             self.urn=None
             self.hrn=xrn
             self.type=type
             self.hrn_to_urn()
+
         self._normalize()
 # happens all the time ..
 #        if not type:
@@ -242,6 +244,9 @@ class Xrn:
         else:
             self.authority = Xrn.hrn_auth_list(self.hrn)
             name = Xrn.hrn_leaf(self.hrn)
+            # separate name from id
+            name_parts = name.split("-")
+            name = name_parts[0]
             authority_string = self.get_authority_urn()
 
         if self.type == None:
@@ -250,7 +255,7 @@ class Xrn:
             urn = "+".join(['',authority_string,self.type,Xrn.unescape(name)])
 
         if hasattr(self, 'id') and self.id:
-            urn = "%s:%s" % (urn, self.id)        
+            urn = "%s-%s" % (urn, self.id)        
 
         self.urn = Xrn.URN_PREFIX + urn