summaryrefslogtreecommitdiff
path: root/src/mailman/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/core')
-rw-r--r--src/mailman/core/chains.py20
-rw-r--r--src/mailman/core/pipelines.py11
-rw-r--r--src/mailman/core/rules.py10
3 files changed, 6 insertions, 35 deletions
diff --git a/src/mailman/core/chains.py b/src/mailman/core/chains.py
index 0eedd8b8c..c251d38bc 100644
--- a/src/mailman/core/chains.py
+++ b/src/mailman/core/chains.py
@@ -17,12 +17,10 @@
"""Application support for chain processing."""
-from mailman.chains.base import Chain, TerminalChainBase
from mailman.config import config
from mailman.interfaces.chain import IChain, LinkAction
-from mailman.utilities.modules import find_components
+from mailman.utilities.modules import add_components
from public import public
-from zope.interface.verify import verifyObject
@public
@@ -91,19 +89,5 @@ def process(mlist, msg, msgdata, start_chain='default-posting-chain'):
@public
def initialize():
"""Set up chains, both built-in and from the database."""
- for chain_class in find_components('mailman.chains', IChain):
- # FIXME 2010-12-28 barry: We need a generic way to disable automatic
- # instantiation of discovered classes. This is useful not just for
- # chains, but also for rules, handlers, etc. Ideally it should be
- # part of find_components(). For now, hard code the ones we do not
- # want to instantiate.
- if chain_class in (Chain, TerminalChainBase):
- continue
- chain = chain_class()
- verifyObject(IChain, chain)
- assert chain.name not in config.chains, (
- 'Duplicate chain "{}" found in {} (previously: {}'.format(
- chain.name, chain_class, config.chains[chain.name]))
- config.chains[chain.name] = chain
+ add_components('mailman.chains', IChain, config.chains)
# XXX Read chains from the database and initialize them.
- pass
diff --git a/src/mailman/core/pipelines.py b/src/mailman/core/pipelines.py
index 07780dfeb..15e23a022 100644
--- a/src/mailman/core/pipelines.py
+++ b/src/mailman/core/pipelines.py
@@ -25,10 +25,9 @@ from mailman.core.i18n import _
from mailman.interfaces.handler import IHandler
from mailman.interfaces.pipeline import (
DiscardMessage, IPipeline, RejectMessage)
-from mailman.utilities.modules import find_components
+from mailman.utilities.modules import add_components
from public import public
from zope.interface import implementer
-from zope.interface.verify import verifyObject
dlog = logging.getLogger('mailman.debug')
@@ -139,13 +138,7 @@ class VirginPipeline(BasePipeline):
def initialize():
"""Initialize the pipelines."""
# Find all handlers in the registered plugins.
- for handler_class in find_components('mailman.handlers', IHandler):
- handler = handler_class()
- verifyObject(IHandler, handler)
- assert handler.name not in config.handlers, (
- 'Duplicate handler "{}" found in {}'.format(
- handler.name, handler_class))
- config.handlers[handler.name] = handler
+ add_components('mailman.handlers', IHandler, config.handlers)
# Set up some pipelines.
for pipeline_class in (OwnerPipeline, PostingPipeline, VirginPipeline):
pipeline = pipeline_class()
diff --git a/src/mailman/core/rules.py b/src/mailman/core/rules.py
index ce89b06ba..8e0d9197c 100644
--- a/src/mailman/core/rules.py
+++ b/src/mailman/core/rules.py
@@ -19,18 +19,12 @@
from mailman.config import config
from mailman.interfaces.rules import IRule
-from mailman.utilities.modules import find_components
+from mailman.utilities.modules import add_components
from public import public
-from zope.interface.verify import verifyObject
@public
def initialize():
"""Find and register all rules in all plugins."""
# Find rules in plugins.
- for rule_class in find_components('mailman.rules', IRule):
- rule = rule_class()
- verifyObject(IRule, rule)
- assert rule.name not in config.rules, (
- 'Duplicate rule "{}" found in {}'.format(rule.name, rule_class))
- config.rules[rule.name] = rule
+ add_components('mailman.rules', IRule, config.rules)