updated microtest
[sfa.git] / sfa / rspecs / version_manager.py
index 97f50f8..8c00664 100644 (file)
@@ -1,5 +1,5 @@
 import os
-from sfa.util.faults import InvalidRSpec, InvalidRSpecVersion
+from sfa.util.faults import InvalidRSpec, UnsupportedRSpecVersion
 from sfa.rspecs.baseversion import BaseVersion 
 from sfa.util.sfalogging import logger    
 
@@ -32,8 +32,10 @@ class VersionManager:
                     if content_type is None or content_type.lower() == version.content_type.lower() \
                       or version.content_type == '*':
                         retval = version
+                        ### sounds like we should be glad with the first match, not the last one
+                        break
         if not retval:
-            raise InvalidRSpecVersion("No such version: %s %s %s "% (type, version_num, content_type))
+            raise UnsupportedRSpecVersion("[%s %s %s] is not suported here"% (type, version_num, content_type))
         return retval
 
     def get_version(self, version=None):
@@ -54,7 +56,7 @@ class VersionManager:
         elif isinstance(version, BaseVersion):
             retval = version
         else:
-            raise InvalidRSpecVersion("No such version: %s "% str(version))
+            raise UnsupportedRSpecVersion("No such version: %s "% str(version))
  
         return retval
 
@@ -67,11 +69,23 @@ class VersionManager:
             raise InvalidRSpec("Unkwnown RSpec schema: %s" % schema)
         return retval
 
+def show_by_string(string):
+    try:
+        print v.get_version(string)
+    except Exception,e:
+        print e
+def show_by_schema(string):
+    try:
+        print v.get_version_by_schema(string)
+    except Exception,e:
+        print e
+
 if __name__ == '__main__':
     v = VersionManager()
     print v.versions
-    print v.get_version('sfa 1') 
-    print v.get_version('protogeni 2') 
-    print v.get_version('protogeni 2 advertisement') 
-    print v.get_version_by_schema('http://www.protogeni.net/resources/rspec/2/ad.xsd') 
+    show_by_string('sfa 1') 
+    show_by_string('protogeni 2') 
+    show_by_string('protogeni 2 advertisement') 
+    show_by_schema('http://www.protogeni.net/resources/rspec/2/ad.xsd') 
+    show_by_schema('http://sorch.netmode.ntua.gr/ws/RSpec/ad.xsd')