summaryrefslogtreecommitdiff
path: root/repoze/bfg/configuration.py
diff options
context:
space:
mode:
Diffstat (limited to 'repoze/bfg/configuration.py')
-rw-r--r--repoze/bfg/configuration.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index f9c70e02d..08fc0da0a 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -261,6 +261,19 @@ class Configurator(object):
self._set_authentication_policy(authentication)
self._set_authorization_policy(authorization)
+ def _fix_registry(self):
+ """ Fix up a ZCA component registry that is not a
+ repoze.bfg.registry.Registry by adding analogues of
+ ``has_listeners`` and ``notify`` through monkey-patching."""
+
+ if not hasattr(self.registry, 'notify'):
+ def notify(*events):
+ [ _ for _ in self.registry.subscribers(events, None) ]
+ self.registry.notify = notify
+
+ if not hasattr(self.registry, 'has_listeners'):
+ self.registry.has_listeners = True
+
# API
def setup_registry(self, settings=None, root_factory=None,
@@ -283,6 +296,7 @@ class Configurator(object):
security policies, renderers, and a debug logger using the
configurator's current registry, as per the descriptions in
the Configurator constructor."""
+ self._fix_registry()
self._set_settings(settings)
self._set_root_factory(root_factory)
if debug_logger is None: