[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