Log message for revision 110339:
  Moved the code handling ZCML loading into the ``Zope2.App`` package. The 
component architecture is now setup before the application object is created or 
any database connections are opened. So far the CA was setup somewhat randomly 
in the startup process, when the ``Five`` product was initialized.
  

Changed:
  U   Zope/trunk/doc/CHANGES.rst
  U   Zope/trunk/src/OFS/tests/testCopySupportEvents.py
  U   Zope/trunk/src/OFS/tests/testCopySupportHooks.py
  U   Zope/trunk/src/OFS/tests/testObjectManager.py
  U   Zope/trunk/src/OFS/tests/testTraverse.py
  U   Zope/trunk/src/OFS/tests/test_registerclass.py
  U   Zope/trunk/src/OFS/tests/test_registerpackage.py
  U   Zope/trunk/src/Products/Five/__init__.py
  U   Zope/trunk/src/Products/Five/browser/tests/aqlegacy_ftest.txt
  U   Zope/trunk/src/Products/Five/browser/tests/pages.txt
  U   Zope/trunk/src/Products/Five/browser/tests/pages_ftest.txt
  U   Zope/trunk/src/Products/Five/browser/tests/provider.txt
  U   Zope/trunk/src/Products/Five/browser/tests/resource.txt
  U   Zope/trunk/src/Products/Five/browser/tests/resource_ftest.txt
  U   Zope/trunk/src/Products/Five/browser/tests/skin.txt
  U   Zope/trunk/src/Products/Five/browser/tests/test_absoluteurl.py
  U   Zope/trunk/src/Products/Five/browser/tests/test_defaultview.py
  U   Zope/trunk/src/Products/Five/browser/tests/test_i18n.py
  U   Zope/trunk/src/Products/Five/browser/tests/test_menu.py
  U   Zope/trunk/src/Products/Five/browser/tests/test_pages.py
  U   Zope/trunk/src/Products/Five/browser/tests/test_traversable.py
  U   Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py
  U   Zope/trunk/src/Products/Five/component/makesite.txt
  U   Zope/trunk/src/Products/Five/schema.py
  U   Zope/trunk/src/Products/Five/skin/tests/test_standardmacros.py
  U   Zope/trunk/src/Products/Five/tests/boilerplate.py
  U   Zope/trunk/src/Products/Five/tests/test_directives.py
  U   Zope/trunk/src/Products/Five/tests/test_i18n.py
  U   Zope/trunk/src/Products/Five/tests/test_size.py
  U   Zope/trunk/src/Products/Five/utilities/browser/tests/test_marker.py
  U   Zope/trunk/src/Products/Five/viewlet/README.txt
  U   Zope/trunk/src/Products/Five/viewlet/directives.txt
  U   Zope/trunk/src/Products/Five/zcml.py
  U   
Zope/trunk/src/Products/StandardCacheManagers/tests/test_CacheManagerLocation.py
  U   Zope/trunk/src/Testing/ZopeTestCase/placeless.py
  U   Zope/trunk/src/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py
  A   Zope/trunk/src/Zope2/App/schema.py
  U   Zope/trunk/src/Zope2/App/startup.py
  A   Zope/trunk/src/Zope2/App/zcml.py

-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst  2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/doc/CHANGES.rst  2010-03-30 21:14:23 UTC (rev 110339)
@@ -11,6 +11,11 @@
 Restructuring
 +++++++++++++
 
+- Moved the code handling ZCML loading into the ``Zope2.App`` package. The
+  component architecture is now setup before the application object is created
+  or any database connections are opened. So far the CA was setup somewhat
+  randomly in the startup process, when the ``Five`` product was initialized.
+
 - Downgrade the ``manage_* is discouraged. You should use event subscribers
   instead`` warnings to debug level logging. This particular warning hasn't
   motivated anyone to actually change any code.

Modified: Zope/trunk/src/OFS/tests/testCopySupportEvents.py
===================================================================
--- Zope/trunk/src/OFS/tests/testCopySupportEvents.py   2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/OFS/tests/testCopySupportEvents.py   2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -13,12 +13,13 @@
 from OFS.SimpleItem import SimpleItem
 from OFS.Folder import Folder
 
+from Zope2.App import zcml
+
 from zope import interface
 from zope import component
 from zope.component.interfaces import IObjectEvent
 
 from zope.testing import cleanup
-from Products.Five import zcml
 
 
 class EventLogger(object):
@@ -59,15 +60,13 @@
     @classmethod
     def setUp(cls):
         cleanup.cleanUp()
-        zcml._initialized = 0
-        zcml.load_site()
+        zcml.load_site(force=True)
         component.provideHandler(eventlog.trace, (ITestItem, IObjectEvent))
         component.provideHandler(eventlog.trace, (ITestFolder, IObjectEvent))
 
     @classmethod
     def tearDown(cls):
         cleanup.cleanUp()
-        zcml._initialized = 0
 
 
 class EventTest(unittest.TestCase):

Modified: Zope/trunk/src/OFS/tests/testCopySupportHooks.py
===================================================================
--- Zope/trunk/src/OFS/tests/testCopySupportHooks.py    2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/OFS/tests/testCopySupportHooks.py    2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -6,7 +6,6 @@
 import transaction
 
 from zope.testing import cleanup
-from Products.Five import zcml
 
 from Testing.makerequest import makerequest
 
@@ -16,7 +15,9 @@
 from OFS.SimpleItem import SimpleItem
 from OFS.Folder import Folder
 
+from Zope2.App import zcml
 
+
 class EventLogger(object):
     def __init__(self):
         self.reset()
@@ -64,15 +65,13 @@
     @classmethod
     def setUp(cls):
         cleanup.cleanUp()
-        zcml._initialized = 0
-        zcml.load_site()
+        zcml.load_site(force=True)
         setDeprecatedManageAddDelete(TestItem)
         setDeprecatedManageAddDelete(TestFolder)
 
     @classmethod
     def tearDown(cls):
         cleanup.cleanUp()
-        zcml._initialized = 0
 
 
 class HookTest(unittest.TestCase):

Modified: Zope/trunk/src/OFS/tests/testObjectManager.py
===================================================================
--- Zope/trunk/src/OFS/tests/testObjectManager.py       2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/OFS/tests/testObjectManager.py       2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -15,7 +15,7 @@
 from OFS.ObjectManager import ObjectManager
 from OFS.SimpleItem import SimpleItem
 import Products.Five
-from Products.Five import zcml
+from Zope2.App import zcml
 from zExceptions import BadRequest
 
 logger = getLogger('OFS.subscribers')            

Modified: Zope/trunk/src/OFS/tests/testTraverse.py
===================================================================
--- Zope/trunk/src/OFS/tests/testTraverse.py    2010-03-30 20:25:30 UTC (rev 
110338)
+++ Zope/trunk/src/OFS/tests/testTraverse.py    2010-03-30 21:14:23 UTC (rev 
110339)
@@ -414,7 +414,7 @@
     publishing they do unrestrictedTraverse.
 
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
       >>> from Testing.makerequest import makerequest
       >>> self.app = makerequest(self.app)
@@ -594,7 +594,7 @@
       ...       />
       ... </configure>'''
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
       >>> zcml.load_string(configure_zcml)
 

Modified: Zope/trunk/src/OFS/tests/test_registerclass.py
===================================================================
--- Zope/trunk/src/OFS/tests/test_registerclass.py      2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/OFS/tests/test_registerclass.py      2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -24,7 +24,7 @@
       >>> setUp()
       >>> import Products
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> from Products.Five.tests.testing.simplecontent import SimpleContent
       >>> from Products.Five.tests.testing.simplecontent import ISimpleContent
       >>> from persistent.interfaces import IPersistent

Modified: Zope/trunk/src/OFS/tests/test_registerpackage.py
===================================================================
--- Zope/trunk/src/OFS/tests/test_registerpackage.py    2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/OFS/tests/test_registerpackage.py    2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -30,7 +30,7 @@
       >>> setUp()
       >>> import Products
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('meta.zcml', Products.Five)
 
     Make sure a python package with a valid initialize gets its

Modified: Zope/trunk/src/Products/Five/__init__.py
===================================================================
--- Zope/trunk/src/Products/Five/__init__.py    2010-03-30 20:25:30 UTC (rev 
110338)
+++ Zope/trunk/src/Products/Five/__init__.py    2010-03-30 21:14:23 UTC (rev 
110339)
@@ -15,22 +15,12 @@
 
 $Id$
 """
-from Products.Five import zcml
 
 # public API provided by Five
 # usage: from Products.Five import <something>
 from Products.Five.browser import BrowserView
 from Products.Five.skin.standardmacros import StandardMacros
 
-# load the site's ZCML tree (usually site.zcml) upon product
-# initialization
-def initialize(context):
-    from zope.schema.vocabulary import setVocabularyRegistry
-    from Products.Five.schema import Zope2VocabularyRegistry
-
-    zcml.load_site()
-    setVocabularyRegistry(Zope2VocabularyRegistry())
-
 # some convenience methods/decorators
 
 def fivemethod(func):

Modified: Zope/trunk/src/Products/Five/browser/tests/aqlegacy_ftest.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/aqlegacy_ftest.txt       
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/aqlegacy_ftest.txt       
2010-03-30 21:14:23 UTC (rev 110339)
@@ -5,7 +5,7 @@
 some:
 
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config('aqlegacy.zcml', package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/pages.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/pages.txt        2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/pages.txt        2010-03-30 
21:14:23 UTC (rev 110339)
@@ -4,7 +4,7 @@
 Let's register a quite large amount of test pages:
 
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config('pages.zcml', package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/pages_ftest.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/pages_ftest.txt  2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/pages_ftest.txt  2010-03-30 
21:14:23 UTC (rev 110339)
@@ -5,7 +5,7 @@
 some:
 
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config('pages.zcml', package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/provider.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/provider.txt     2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/provider.txt     2010-03-30 
21:14:23 UTC (rev 110339)
@@ -9,7 +9,7 @@
 
   >>> from zope.contentprovider import interfaces
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config('provider.zcml', package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/resource.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/resource.txt     2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/resource.txt     2010-03-30 
21:14:23 UTC (rev 110339)
@@ -4,7 +4,7 @@
 Set up the test fixtures:
 
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/resource_ftest.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/resource_ftest.txt       
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/resource_ftest.txt       
2010-03-30 21:14:23 UTC (rev 110339)
@@ -4,7 +4,7 @@
 Set up the test fixtures:
 
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config('resource.zcml', package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/skin.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/skin.txt 2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/skin.txt 2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -4,7 +4,7 @@
 Let's register a test layer and test skin:
 
   >>> import Products.Five.browser.tests
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
   >>> zcml.load_config("skin.zcml", package=Products.Five.browser.tests)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/test_absoluteurl.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_absoluteurl.py      
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_absoluteurl.py      
2010-03-30 21:14:23 UTC (rev 110339)
@@ -23,7 +23,7 @@
     First we make some preparations:
 
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
 
       >>> from Products.Five.tests.testing import 
manage_addFiveTraversableFolder

Modified: Zope/trunk/src/Products/Five/browser/tests/test_defaultview.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_defaultview.py      
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_defaultview.py      
2010-03-30 21:14:23 UTC (rev 110339)
@@ -24,7 +24,7 @@
     default viewable:
 
       >>> import Products.Five.browser.tests
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
       >>> zcml.load_config('defaultview.zcml', Products.Five.browser.tests)
 
@@ -114,7 +114,7 @@
 
       >>> import AccessControl
       >>> import Products.Five.tests
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('meta.zcml', Products.Five)
       >>> zcml.load_config("permissions.zcml", AccessControl)
       >>> zcml.load_config('directives.zcml', Products.Five.tests)

Modified: Zope/trunk/src/Products/Five/browser/tests/test_i18n.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_i18n.py     2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_i18n.py     2010-03-30 
21:14:23 UTC (rev 110339)
@@ -40,7 +40,7 @@
       ... </configure>'''
 
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
       >>> zcml.load_string(configure_zcml)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/test_menu.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_menu.py     2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_menu.py     2010-03-30 
21:14:23 UTC (rev 110339)
@@ -25,7 +25,7 @@
 
       >>> import AccessControl
       >>> import Products.Five.browser.tests
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("meta.zcml", Products.Five)
       >>> zcml.load_config("permissions.zcml", AccessControl)
       >>> zcml.load_config('menu.zcml', package=Products.Five.browser.tests)

Modified: Zope/trunk/src/Products/Five/browser/tests/test_pages.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_pages.py    2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_pages.py    2010-03-30 
21:14:23 UTC (rev 110339)
@@ -23,7 +23,7 @@
     provide dummy contexts which are not wrapped.
 
     >>> import Products.Five.browser.tests
-    >>> from Products.Five import zcml
+    >>> from Zope2.App import zcml
     >>> zcml.load_config("configure.zcml", Products.Five)
     >>> zcml.load_config('pages.zcml', package=Products.Five.browser.tests)
     >>> from Products.Five.tests.testing import simplecontent as sc

Modified: Zope/trunk/src/Products/Five/browser/tests/test_traversable.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_traversable.py      
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_traversable.py      
2010-03-30 21:14:23 UTC (rev 110339)
@@ -25,7 +25,7 @@
     Test the behaviour of Five-traversable classes.
 
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
 
     ``SimpleContent`` is a traversable class by default.  Its fallback
@@ -211,7 +211,7 @@
       ...       />
       ... </configure>'''
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
       >>> zcml.load_string(configure_zcml)
 

Modified: Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py    
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py    
2010-03-30 21:14:23 UTC (rev 110339)
@@ -23,7 +23,7 @@
       ... </configure>'''
 
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config("configure.zcml", Products.Five)
       >>> zcml.load_string(configure_zcml)
 

Modified: Zope/trunk/src/Products/Five/component/makesite.txt
===================================================================
--- Zope/trunk/src/Products/Five/component/makesite.txt 2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/component/makesite.txt 2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -13,7 +13,7 @@
 Load all of Five's configuration (this is a functional test):
 
     >>> import Products.Five
-    >>> from Products.Five.zcml import load_config
+    >>> from Zope2.App.zcml import load_config
     >>> load_config('configure.zcml', package=Products.Five)
 
 Enable local component lookup hooks:

Modified: Zope/trunk/src/Products/Five/schema.py
===================================================================
--- Zope/trunk/src/Products/Five/schema.py      2010-03-30 20:25:30 UTC (rev 
110338)
+++ Zope/trunk/src/Products/Five/schema.py      2010-03-30 21:14:23 UTC (rev 
110339)
@@ -1,36 +1,3 @@
-##############################################################################
-#
-# Copyright (c) 2004, 2005 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Five-specific schema support
+# BBB
 
-$Id$
-"""
-from zope.component import getUtility
-from zope.interface import implements
-from zope.schema.interfaces import IVocabularyRegistry
-from zope.schema.interfaces import IVocabularyFactory
-
-class Zope2VocabularyRegistry(object):
-    """IVocabularyRegistry that supports global and local utilities.
-
-    Cloned from the version in zope.app.schema.vocabulary:  it was the
-    only feature in that package!
-    """
-    implements(IVocabularyRegistry)
-    __slots__ = ()
-
-    def get(self, context, name):
-        """See zope.schema.interfaces.IVocabularyRegistry.
-        """
-        factory = getUtility(IVocabularyFactory, name)
-        return factory(context)
+from Zope2.App.schema import Zope2VocabularyRegistry

Modified: Zope/trunk/src/Products/Five/skin/tests/test_standardmacros.py
===================================================================
--- Zope/trunk/src/Products/Five/skin/tests/test_standardmacros.py      
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/skin/tests/test_standardmacros.py      
2010-03-30 21:14:23 UTC (rev 110339)
@@ -27,7 +27,7 @@
       >>> manage_addFiveTraversableFolder(self.folder, 'testoid', 'Testoid')
 
       >>> import Products.Five.skin.tests
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('configure.zcml', package=Products.Five)
       >>> zcml.load_config('configure.zcml', package=Products.Five.skin.tests) 
   
 

Modified: Zope/trunk/src/Products/Five/tests/boilerplate.py
===================================================================
--- Zope/trunk/src/Products/Five/tests/boilerplate.py   2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/tests/boilerplate.py   2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -22,7 +22,7 @@
       >>> setUp()
 
       >>> import Products.Five.tests
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('boilerplate.zcml', Products.Five.tests)
 
       >>> from Products.Five.tests.testing import 
manage_addFiveTraversableFolder

Modified: Zope/trunk/src/Products/Five/tests/test_directives.py
===================================================================
--- Zope/trunk/src/Products/Five/tests/test_directives.py       2010-03-30 
20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/tests/test_directives.py       2010-03-30 
21:14:23 UTC (rev 110339)
@@ -28,7 +28,7 @@
     But first, we load the configuration file:
 
       >>> import Products.Five.tests
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('meta.zcml', Products.Five)
       >>> zcml.load_config('directives.zcml', Products.Five.tests)
 

Modified: Zope/trunk/src/Products/Five/tests/test_i18n.py
===================================================================
--- Zope/trunk/src/Products/Five/tests/test_i18n.py     2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/tests/test_i18n.py     2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -24,7 +24,7 @@
     directive:
 
       >>> import zope.i18n
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('meta.zcml', zope.i18n)
 
     Let's register the gettext locales using the ZCML directive:

Modified: Zope/trunk/src/Products/Five/tests/test_size.py
===================================================================
--- Zope/trunk/src/Products/Five/tests/test_size.py     2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/tests/test_size.py     2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -72,7 +72,7 @@
       ... </configure>'''
 
       >>> import Products.Five
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('meta.zcml', Products.Five)
       >>> zcml.load_string(configure_zcml)
 

Modified: Zope/trunk/src/Products/Five/utilities/browser/tests/test_marker.py
===================================================================
--- Zope/trunk/src/Products/Five/utilities/browser/tests/test_marker.py 
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Products/Five/utilities/browser/tests/test_marker.py 
2010-03-30 21:14:23 UTC (rev 110339)
@@ -25,7 +25,7 @@
       >>> import AccessControl
       >>> import Products.Five
       >>> import Products.Five.utilities
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
       >>> zcml.load_config('meta.zcml', Products.Five)
       >>> zcml.load_config('permissions.zcml', AccessControl)
       >>> zcml.load_config('configure.zcml', Products.Five.utilities)

Modified: Zope/trunk/src/Products/Five/viewlet/README.txt
===================================================================
--- Zope/trunk/src/Products/Five/viewlet/README.txt     2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/viewlet/README.txt     2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -12,7 +12,7 @@
 Setup traversal stuff
 
   >>> import Products.Five
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
 
 Set a loose security policy because these are unit tests, security will be

Modified: Zope/trunk/src/Products/Five/viewlet/directives.txt
===================================================================
--- Zope/trunk/src/Products/Five/viewlet/directives.txt 2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Products/Five/viewlet/directives.txt 2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -5,7 +5,7 @@
 Setup traversal stuff
 
   >>> import Products.Five
-  >>> from Products.Five import zcml
+  >>> from Zope2.App import zcml
   >>> zcml.load_config("configure.zcml", Products.Five)
 
 The ``viewletManager`` directive allows you to quickly register a new viewlet
@@ -13,7 +13,6 @@
 directive. Before we can use the directives, we have to register their
 handlers by executing the package's meta configuration:
 
-  >>> from Products.Five import zcml
   >>> context = zcml.load_string('''
   ... <configure i18n_domain="zope">
   ...   <include package="Products.Five.viewlet" file="meta.zcml" />

Modified: Zope/trunk/src/Products/Five/zcml.py
===================================================================
--- Zope/trunk/src/Products/Five/zcml.py        2010-03-30 20:25:30 UTC (rev 
110338)
+++ Zope/trunk/src/Products/Five/zcml.py        2010-03-30 21:14:23 UTC (rev 
110339)
@@ -1,78 +1,9 @@
-##############################################################################
-#
-# Copyright (c) 2004, 2005 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""ZCML machinery
+# BBB
 
-$Id$
-"""
-import os
-import os.path
-from zope.configuration import xmlconfig
+from Zope2.App.zcml import _context
+from Zope2.App.zcml import _initialized
 
-_initialized = False
-_context = None
-
-
-def load_site():
-    """Load a Five/Zope site by finding and loading the appropriate site
-    configuration file."""
-    global _initialized
-    if _initialized:
-        return
-    _initialized = True
-
-    import Globals
-    Globals.INSTANCE_HOME
-
-    # load instance site configuration file
-    site_zcml = os.path.join(Globals.INSTANCE_HOME, "etc", "site.zcml")
-
-    import Zope2.utilities
-    zope_utilities = os.path.dirname(Zope2.utilities.__file__)
-    skel_site_zcml = os.path.join(zope_utilities, "skel", "etc", "site.zcml")
-    
-    if os.path.exists(site_zcml):
-        file = site_zcml
-    else:
-        # check for zope installation home skel during running unit tests
-        file = skel_site_zcml
-
-    global _context
-    _context = xmlconfig.file(file)
-
-
-def load_config(file, package=None, execute=True):
-    """Load an additional ZCML file into the context.
-
-    Use with extreme care.
-    """
-    global _context
-    _context = xmlconfig.file(file, package, _context, execute=execute)
-
-def load_string(s):
-    """Load a snipped of ZCML into the context.
-
-    Use with extreme care.
-    """
-    global _context
-    _context = xmlconfig.string(s, _context)
-
-# clean up code
-
-def cleanUp():
-    global _context
-    _context = None
-
-from zope.testing.cleanup import addCleanUp
-addCleanUp(cleanUp)
-del addCleanUp
+from Zope2.App.zcml import load_site
+from Zope2.App.zcml import load_config
+from Zope2.App.zcml import load_string
+from Zope2.App.zcml import cleanUp

Modified: 
Zope/trunk/src/Products/StandardCacheManagers/tests/test_CacheManagerLocation.py
===================================================================
--- 
Zope/trunk/src/Products/StandardCacheManagers/tests/test_CacheManagerLocation.py
    2010-03-30 20:25:30 UTC (rev 110338)
+++ 
Zope/trunk/src/Products/StandardCacheManagers/tests/test_CacheManagerLocation.py
    2010-03-30 21:14:23 UTC (rev 110339)
@@ -32,7 +32,7 @@
 from OFS.tests.testCopySupport import UnitTestSecurityPolicy
 from OFS.tests.testCopySupport import UnitTestUser
 
-from Products.Five import zcml
+from Zope2.App import zcml
 from Products.StandardCacheManagers.RAMCacheManager import RAMCacheManager
 from Products.StandardCacheManagers.AcceleratedHTTPCacheManager \
      import AcceleratedHTTPCacheManager

Modified: Zope/trunk/src/Testing/ZopeTestCase/placeless.py
===================================================================
--- Zope/trunk/src/Testing/ZopeTestCase/placeless.py    2010-03-30 20:25:30 UTC 
(rev 110338)
+++ Zope/trunk/src/Testing/ZopeTestCase/placeless.py    2010-03-30 21:14:23 UTC 
(rev 110339)
@@ -52,7 +52,7 @@
 del ps
 
 # For convenience
-from Products.Five import zcml
+from Zope2.App import zcml
 
 
 def callZCML(zcml_callback):

Modified: 
Zope/trunk/src/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py
===================================================================
--- Zope/trunk/src/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py     
2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Testing/ZopeTestCase/zopedoctest/testPackageAsProduct.py     
2010-03-30 21:14:23 UTC (rev 110339)
@@ -15,11 +15,14 @@
 $Id$
 """
 
+import sys
 from unittest import TestSuite
+
+
 from Testing import ZopeTestCase
 from Testing.ZopeTestCase import ZopeLite
 from Testing.ZopeTestCase import ZopeDocTestSuite
-from Products.Five import zcml
+from Zope2.App import zcml
 from zope.testing import cleanup
 import Products
 
@@ -29,7 +32,7 @@
     Test if installPackage works.
 
       >>> from Testing import ZopeTestCase
-      >>> from Products.Five import zcml
+      >>> from Zope2.App import zcml
 
     Register testpackage
 
@@ -84,8 +87,7 @@
 
     def afterSetUp(self):
         cleanup.cleanUp()
-        zcml._initialized = False
-        zcml.load_site()
+        zcml.load_site(force=True)
 
         self.saved = sys.path[:]
         sys.path.append(ZopeTestCase.__path__[0])

Copied: Zope/trunk/src/Zope2/App/schema.py (from rev 110303, 
Zope/trunk/src/Products/Five/schema.py)
===================================================================
--- Zope/trunk/src/Zope2/App/schema.py                          (rev 0)
+++ Zope/trunk/src/Zope2/App/schema.py  2010-03-30 21:14:23 UTC (rev 110339)
@@ -0,0 +1,32 @@
+##############################################################################
+#
+# Copyright (c) 2004, 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+from zope.component import getUtility
+from zope.interface import implements
+from zope.schema.interfaces import IVocabularyFactory
+from zope.schema.interfaces import IVocabularyRegistry
+
+
+class Zope2VocabularyRegistry(object):
+    """IVocabularyRegistry that supports global and local utilities.
+    """
+
+    implements(IVocabularyRegistry)
+    __slots__ = ()
+
+    def get(self, context, name):
+        """See zope.schema.interfaces.IVocabularyRegistry.
+        """
+        factory = getUtility(IVocabularyFactory, name)
+        return factory(context)

Modified: Zope/trunk/src/Zope2/App/startup.py
===================================================================
--- Zope/trunk/src/Zope2/App/startup.py 2010-03-30 20:25:30 UTC (rev 110338)
+++ Zope/trunk/src/Zope2/App/startup.py 2010-03-30 21:14:23 UTC (rev 110339)
@@ -14,6 +14,10 @@
 """
 
 from zope.component import queryMultiAdapter
+from zope.event import notify
+from zope.processlifetime import DatabaseOpened
+from zope.schema.vocabulary import setVocabularyRegistry
+
 from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl.SecurityManagement import noSecurityManager
 from Acquisition import aq_acquire
@@ -22,10 +26,8 @@
 from Acquisition import aq_parent
 from App.config import getConfiguration
 from time import asctime
-from types import StringType, ListType
 from zExceptions import upgradeException
 from zExceptions import Redirect
-from zExceptions import Unauthorized
 from ZODB.POSException import ConflictError
 import transaction
 import AccessControl.User
@@ -40,9 +42,6 @@
 import Zope2
 import ZPublisher
 
-from zope.event import notify
-from zope.processlifetime import DatabaseOpened
-
 app = None
 startup_time = asctime()
 
@@ -92,7 +91,7 @@
         from ZODB.ActivityMonitor import ActivityMonitor
         DB.setActivityMonitor(ActivityMonitor())
 
-    Globals.DB = DB # Ick, this is temporary until we come up with some 
registry
+    Globals.DB = DB
     Zope2.DB = DB
 
     # Hook for providing multiple transaction object manager undo support:
@@ -105,6 +104,14 @@
     # "Log on" as system user
     newSecurityManager(None, AccessControl.User.system)
 
+    # Set up the CA
+    from .zcml import load_site
+    load_site()
+
+    # Set up Zope2 specific vocabulary registry
+    from .schema import Zope2VocabularyRegistry
+    setVocabularyRegistry(Zope2VocabularyRegistry())
+
     # Set up the "app" object that automagically opens
     # connections
     app = App.ZApplication.ZApplicationWrapper(
@@ -138,8 +145,11 @@
 
 
 class RequestContainer(ExtensionClass.Base):
-    def __init__(self,r): self.REQUEST=r
 
+    def __init__(self, r):
+        self.REQUEST=r
+
+
 class ZPublisherExceptionHook:
 
     def __init__(self):
@@ -215,7 +225,7 @@
                 return response
 
             if (published is None or published is app or
-                type(published) is ListType):
+                isinstance(published, list)):
                 # At least get the top-level object
                 published=app.__bobo_traverse__(REQUEST).__of__(
                     RequestContainer(REQUEST))

Copied: Zope/trunk/src/Zope2/App/zcml.py (from rev 110303, 
Zope/trunk/src/Products/Five/zcml.py)
===================================================================
--- Zope/trunk/src/Zope2/App/zcml.py                            (rev 0)
+++ Zope/trunk/src/Zope2/App/zcml.py    2010-03-30 21:14:23 UTC (rev 110339)
@@ -0,0 +1,76 @@
+##############################################################################
+#
+# Copyright (c) 2004, 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""ZCML machinery
+"""
+
+import os
+import os.path
+from zope.configuration import xmlconfig
+
+_initialized = False
+_context = None
+
+
+def load_site(force=False):
+    """Load a Zope site by finding and loading the appropriate site
+    configuration file."""
+    global _initialized
+    if _initialized and not force:
+        return
+    _initialized = True
+
+    import Globals
+    Globals.INSTANCE_HOME
+
+    # load instance site configuration file
+    site_zcml = os.path.join(Globals.INSTANCE_HOME, "etc", "site.zcml")
+
+    if not os.path.exists(site_zcml):
+        # check for zope installation home skel during running unit tests
+        import Zope2.utilities
+        zope_utils = os.path.dirname(Zope2.utilities.__file__)
+        site_zcml = os.path.join(zope_utils, "skel", "etc", "site.zcml")
+
+    global _context
+    _context = xmlconfig.file(site_zcml)
+
+
+def load_config(config, package=None, execute=True):
+    """Load an additional ZCML file into the context.
+
+    Use with extreme care.
+    """
+    global _context
+    _context = xmlconfig.file(config, package, _context, execute=execute)
+
+
+def load_string(s):
+    """Load a snipped of ZCML into the context.
+
+    Use with extreme care.
+    """
+    global _context
+    _context = xmlconfig.string(s, _context)
+
+
+# clean up code
+
+def cleanUp():
+    global _context
+    _context = None
+
+
+from zope.testing.cleanup import addCleanUp
+addCleanUp(cleanUp)
+del addCleanUp

_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
https://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to