Search in sources :

Example 1 with CollectionTrigger

use of org.exist.collections.triggers.CollectionTrigger in project exist by eXist-db.

the class CollectionConfiguration method configureTrigger.

private void configureTrigger(final ClassLoader cl, final Element triggerElement, final XmldbURI collectionConfigurationURI, final boolean testOnly) throws CollectionConfigurationException {
    // TODO : rely on schema-driven validation -pb
    final String classname = triggerElement.getAttributes().getNamedItem(CLASS_ATTRIBUTE).getNodeValue();
    try {
        final Class clazz = Class.forName(classname, true, cl);
        if (!Trigger.class.isAssignableFrom(clazz)) {
            throwOrLog("Trigger's class '" + classname + "' is not assignable from '" + Trigger.class + "'", testOnly);
            return;
        }
        final NodeList nlParameter = triggerElement.getElementsByTagNameNS(NAMESPACE, PARAMETER_ELEMENT);
        final Map<String, List<? extends Object>> parameters = ParametersExtractor.extract(nlParameter);
        boolean added = false;
        if (DocumentTrigger.class.isAssignableFrom(clazz)) {
            docTriggers.add(new DocumentTriggerProxy((Class<? extends DocumentTrigger>) clazz, parameters));
            added = true;
        }
        if (CollectionTrigger.class.isAssignableFrom(clazz)) {
            colTriggers.add(new CollectionTriggerProxy((Class<? extends CollectionTrigger>) clazz, parameters));
            added = true;
        }
        if (!added) {
            throw new TriggerException("Unknown Trigger class type: " + clazz.getName());
        }
    } catch (final ClassNotFoundException | TriggerException e) {
        if (testOnly) {
            throw new CollectionConfigurationException(e.getMessage(), e);
        } else {
            LOG.warn("Trigger class not found: {}", e.getMessage(), e);
        }
    }
}
Also used : NodeList(org.w3c.dom.NodeList) DocumentTriggerProxy(org.exist.collections.triggers.DocumentTriggerProxy) CollectionTrigger(org.exist.collections.triggers.CollectionTrigger) CollectionTriggerProxy(org.exist.collections.triggers.CollectionTriggerProxy) CollectionTrigger(org.exist.collections.triggers.CollectionTrigger) Trigger(org.exist.collections.triggers.Trigger) DocumentTrigger(org.exist.collections.triggers.DocumentTrigger) DocumentTrigger(org.exist.collections.triggers.DocumentTrigger) ConfigurationClass(org.exist.config.annotation.ConfigurationClass) NodeList(org.w3c.dom.NodeList) ArrayList(java.util.ArrayList) List(java.util.List) TriggerException(org.exist.collections.triggers.TriggerException)

Aggregations

ArrayList (java.util.ArrayList)1 List (java.util.List)1 CollectionTrigger (org.exist.collections.triggers.CollectionTrigger)1 CollectionTriggerProxy (org.exist.collections.triggers.CollectionTriggerProxy)1 DocumentTrigger (org.exist.collections.triggers.DocumentTrigger)1 DocumentTriggerProxy (org.exist.collections.triggers.DocumentTriggerProxy)1 Trigger (org.exist.collections.triggers.Trigger)1 TriggerException (org.exist.collections.triggers.TriggerException)1 ConfigurationClass (org.exist.config.annotation.ConfigurationClass)1 NodeList (org.w3c.dom.NodeList)1