[CalendarServer-changes] [12081] twext/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Wed Mar 12 11:21:48 PDT 2014
Revision: 12081
http://trac.calendarserver.org//changeset/12081
Author: wsanchez at apple.com
Date: 2013-12-12 19:03:31 -0800 (Thu, 12 Dec 2013)
Log Message:
-----------
Add plugins dir
Modified Paths:
--------------
twext/trunk/setup.py
Added Paths:
-----------
twext/trunk/twisted/
twext/trunk/twisted/plugins/
twext/trunk/twisted/plugins/masterchild.py
Modified: twext/trunk/setup.py
===================================================================
--- twext/trunk/setup.py 2013-12-13 03:03:13 UTC (rev 12080)
+++ twext/trunk/setup.py 2013-12-13 03:03:31 UTC (rev 12081)
@@ -28,7 +28,7 @@
def find_packages():
modules = [
- # "twisted.plugins",
+ "twisted.plugins",
]
excludes = [
Copied: twext/trunk/twisted/plugins/masterchild.py (from rev 12070, CalendarServer/trunk/twisted/plugins/masterchild.py)
===================================================================
--- twext/trunk/twisted/plugins/masterchild.py (rev 0)
+++ twext/trunk/twisted/plugins/masterchild.py 2013-12-13 03:03:31 UTC (rev 12081)
@@ -0,0 +1,85 @@
+##
+# Copyright (c) 2010-2013 Apple Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##
+
+from zope.interface import implementer
+
+from twisted.python.reflect import namedClass
+from twisted.plugin import IPlugin
+from twisted.application.service import IServiceMaker
+
+
+
+ at implementer(IPlugin, IServiceMaker)
+class ServiceMakerWrapper(object):
+ """
+ ServiceMaker that instantiates and wraps a ServiceMaker, given a class name
+ and arguments.
+ """
+
+ def __init__(self, className, *args, **kwargs):
+ """
+ @param className: The fully qualified name of the
+ L{IServiceMaker}-providing class to instiantiate.
+ @type className: L{str}
+
+ @param args: Sequential arguments to pass to the class's constructor.
+ @type args: arguments L{list}
+
+ @param kwargs: Keyword arguments to pass to the class's constructor.
+ @type args: arguments L{dict}
+ """
+ self.className = className
+ self.args = args
+ self.kwargs = kwargs
+
+
+ @property
+ def wrappedServiceMaker(self):
+ if not hasattr(self, "_wrappedServiceMaker"):
+ makerClass = namedClass(self.className)
+ maker = makerClass(*self.args, **self.kwargs)
+ self._wrappedServiceMaker = maker
+
+ return self._wrappedServiceMaker
+
+
+ @property
+ def tapname(self):
+ return self.wrappedServiceMaker.tapname
+
+
+ @property
+ def description(self):
+ return self.wrappedServiceMaker.description
+
+
+ @property
+ def options(self):
+ return self.wrappedServiceMaker.options
+
+
+ def makeService(self, options):
+ return self.wrappedServiceMaker.makeService(options)
+
+
+
+masterServiceMaker = ServiceMakerWrapper(
+ "twext.application.masterchild.MasterServiceMaker"
+)
+
+childServiceMaker = ServiceMakerWrapper(
+ "twext.application.masterchild.ChildServiceMaker"
+)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/72ebcdd5/attachment.html>
More information about the calendarserver-changes
mailing list