[Zope-Checkins] CVS: Zope3/lib/python/Zope/ComponentArchitecture - GlobalServiceManager.py:1.3 IServiceManager.py:1.3 __init__.py:1.5

Jim Fulton jim@zope.com
Tue, 2 Jul 2002 19:44:15 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/ComponentArchitecture
In directory cvs.zope.org:/tmp/cvs-serv17483/lib/python/Zope/ComponentArchitecture

Modified Files:
	GlobalServiceManager.py IServiceManager.py __init__.py 
Log Message:
Refactored service manager and service lookup get routines to be
consistent with the Zope 3 get style, using get and query
routines. Added some missing tests.

Moved the service-manager lookup hooks to
Zope.App.ComponentArchitecture.




=== Zope3/lib/python/Zope/ComponentArchitecture/GlobalServiceManager.py 1.2 => 1.3 ===
     def getService(self, name):
         """see IServiceManager interface"""
-
-        try:
-            return self.__services[name]
-        except KeyError:
+        service = self.queryService(name)
+        if service is None:
             raise ComponentLookupError(name)
+
+        return service
+
+    def queryService(self, name, default=None):
+        """see IServiceManager interface"""
+
+        return self.__services.get(name, default)
 
     _clear = __init__
 


=== Zope3/lib/python/Zope/ComponentArchitecture/IServiceManager.py 1.2 => 1.3 ===
         """        
 
+    def getInterfaceFor(name):
+        """Retrieve the service interface for the given name
+        """        
+
     def getService(name):
         """Retrieve a service implementation
 
         Raises ComponentLookupError if the service can't be found.
+
+        """
+
+    def queryService(name, default=None):
+        """Look for a named service.
+
+        Return the default if the service can't be found.
+
         """
+        


=== Zope3/lib/python/Zope/ComponentArchitecture/__init__.py 1.4 => 1.5 ===
     return getServiceManager_hook(context)
 
+def queryServiceManager(context, default=None):
+    try:
+        return getServiceManager(context)
+    except ComponentLookupError:
+        return default
+
 def getServiceManager_hook(context): # default hook
     return serviceManager
 
 def getService(context, name):
     return getServiceManager(context).getService(name)
 
+def queryService(context, name, default=None):
+    sm = queryServiceManager(context)
+    if sm is None:
+        return default
+    return sm.queryService(name, default)
+
 def getServiceDefinitions(context): 
     return getServiceManager(context).getServiceDefinitions()
 
@@ -46,14 +58,27 @@
 def getNextServiceManager(context): # hookable
     return getNextServiceManager_hook(context)
 
+def queryNextServiceManager(context, default=None):
+    try:
+        return getNextServiceManager_hook(context)
+    except ComponentLookupError:
+        return default
+
 def getNextServiceManager_hook(context): #default hook
     raise ComponentLookupError
     
 def getNextService(context, name):
-    sm=getNextServiceManager(context)
-    if sm is not None:
-        return sm.getService(name)
-    return None
+    service = queryNextService(context, name)
+    if service is None:
+        raise ComponentLookupError('service', name)
+    return service
+    
+def queryNextService(context, name, default=None):
+    try:
+        sm = getNextServiceManager(context)
+    except ComponentLookupError:
+        return default
+    return sm.queryService(name, default)
 
 
 # Utility service