[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Services/ConnectionService - ConnectionService.py:1.2 IConnectionAdding.py:1.2 configure.zcml:1.2
Stephan Richter
srichter@cbu.edu
Wed, 10 Jul 2002 19:52:48 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Services/ConnectionService
In directory cvs.zope.org:/tmp/cvs-serv6998
Modified Files:
ConnectionService.py IConnectionAdding.py configure.zcml
Log Message:
Finished up the Connectoin Service and provide views for Database Adapters.
=== Zope3/lib/python/Zope/App/OFS/Services/ConnectionService/ConnectionService.py 1.1 => 1.2 ===
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-"""$Id$
"""
+$Id$
+"""
+from types import TupleType
+
+from Zope.ComponentArchitecture import queryNextService
+from Zope.ContextWrapper import ContextMethod
-from Zope.ComponentArchitecture import getNextService
-from IConnectionManager import IConnectionManager
-from Persistence import PersistentMapping, Persistent
+from Zope.App.OFS.Container.IContainer import IHomogenousContainer, IContainer
+from Zope.App.OFS.Container.BTreeContainer import BTreeContainer
-class ConnectionService(Persistent):
+from Zope.App.RDB.IConnectionService import IConnectionService
+from Zope.App.RDB.IZopeDatabaseAdapter import IZopeDatabaseAdapter
+
+class ILocalConnectionService(IConnectionService, IContainer,
+ IHomogenousContainer):
+ """TTW manageable connection service"""
- __implements__ = IConnectionManager
- def __init__(self):
- self.__connections = PersistentMapping()
+class ConnectionService(BTreeContainer):
+
+ __implements__ = ILocalConnectionService
- # IContainer methods
- def __getitem__(self, key):
- """see interface Zope.App.OFS.Container.IContainer."""
- return self.__connections[key]
-
- def get(self, key, default=None):
- """see interface Zope.App.OFS.Container.IContainer."""
- return self.__connections.get(key, default)
-
- def __contains__(self, key):
- """see interface Zope.App.OFS.Container.IContainer."""
- return self.__connections.has_key(key)
-
- def keys(self):
- """see interface Zope.App.OFS.Container.IContainer."""
- return self.__connections.keys()
-
- def values(self):
- """see interface Zope.App.OFS.Container.IContainer."""
- return self.__connections.values()
-
- def items(self):
- """see interface Zope.App.OFS.Container.IContainer."""
- return self.__connections.items()
-
- def __len__(self):
- """see interface Zope.App.OFS.Container.IContainer."""
- return len(self.__connections)
-
- def setObject(self, key, object):
- """see interface Zope.App.OFS.Container.IContainer."""
- self.__connections[key] = object
- return object
-
- def __delitem__(self, key):
- """see interface Zope.App.OFS.Container.IContainer."""
- del self.__connections[key]
+ ############################################################
+ # Implementation methods for interface
+ # Zope.App.RDB.ConnectionService.ILocalConnectionService
+
+ ######################################
+ # from: Zope.App.RDB.IConnectionService.IConnectionService
- # IConnectionService methods
def getConnection(self, name):
- """see interface Zope.App.RDB.IConnectionService """
- return self[name]()
-
- def queryConnection(self, name, default):
- """see interface Zope.App.RDB.IConnectionService """
- return self.get(name, default)()
+ 'See Zope.App.RDB.IConnectionService.IConnectionService'
+ return self.__getitem__(name)()
+
+ def queryConnection(self, name, default=None):
+ 'See Zope.App.RDB.IConnectionService.IConnectionService'
+ adapter = self.get(name, default)
+ if adapter is not default:
+ return adapter()
+ return default
def getAvailableConnections(self):
- """Returns the connections known to this connection service"""
- # XXX, not yet
- # connections = self.keys()
- # return connections + \getNextService(self, "ConnectionService").getAvailableConnections()
-
+ 'See Zope.App.RDB.IConnectionService.IConnectionService'
+ connections = list(self.keys())
+ service = queryNextService(self, "ConnectionService")
+ if service is not None:
+ connections.append(service.getAvailableConnections())
+ return connections
+
+ getAvailableConnections = ContextMethod(getAvailableConnections)
+
+ ######################################
+ # from: Zope.App.OFS.Container.IContainer.IHomogenousContainer
+
+ def isAddable(self, interfaces):
+ 'See Zope.App.OFS.Container.IContainer.IHomogenousContainer'
+ if type(interfaces) != TupleType:
+ interfaces = (interfaces,)
+ if IZopeDatabaseAdapter in interfaces:
+ return 1
+ return 0
+
+ #
+ ############################################################
=== Zope3/lib/python/Zope/App/OFS/Services/ConnectionService/IConnectionAdding.py 1.1 => 1.2 ===
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-"""XXX short summary goes here.
-
-XXX longer description goes here.
-
-$Id$
+"""$Id$
"""
from Zope.App.OFS.Container.IAdding import IAdding
=== Zope3/lib/python/Zope/App/OFS/Services/ConnectionService/configure.zcml 1.1 => 1.2 ===
<zopeConfigure
- xmlns='http://namespaces.zope.org/zope'
- xmlns:browser='http://namespaces.zope.org/browser'
-
- xmlns:service='http://namespaces.zope.org/service'
->
- <content class=".ConnectionService.">
-
- <factory
- id="ConnectionService"
- permission="Zope.ManageServices"
- />
+ xmlns='http://namespaces.zope.org/zope'>
+<content class=".ConnectionService.">
+ <factory id="ConnectionService" permission="Zope.ManageServices" />
<require
permission="Zope.View"
interface="Zope.App.RDB.IConnectionService." />
<require
permission="Zope.ManageServices"
interface="Zope.App.OFS.Container.IContainer." />
+</content>
- </content>
-
- <browser:menuItem menu="add_service" for="Zope.App.OFS.Container.IAdding."
- action="ConnectionService" title="RDBMS Connection Service" />
-
- <include package=".Views" />
+<include package=".Views" />
</zopeConfigure>