Navigation Menu

Skip to content

Commit

Permalink
[bugfix] allow more StartupTriggers in conf.xml
Browse files Browse the repository at this point in the history
  • Loading branch information
dizzzz committed Sep 15, 2013
1 parent 977cbbf commit 31fd3df
Showing 1 changed file with 32 additions and 7 deletions.
39 changes: 32 additions & 7 deletions src/org/exist/util/Configuration.java
Expand Up @@ -1205,37 +1205,62 @@ public Map<String, List<? extends Object>> getParams() {
}

private void configureStartup(final Element startup) {
// Retrieve <triggers>
final NodeList nlTriggers = startup.getElementsByTagName("triggers");

// If <triggers> exists
if(nlTriggers != null && nlTriggers.getLength() > 0) {
// Get <triggers>
final Element triggers = (Element)nlTriggers.item(0);

// Get <trigger>
final NodeList nlTrigger = triggers.getElementsByTagName("trigger");

// If <trigger> exists and there are more than 0
if(nlTrigger != null && nlTrigger.getLength() > 0) {

// Initialize trigger configuration
List<StartupTriggerConfig> startupTriggers = (List<StartupTriggerConfig>)config.get(BrokerPool.PROPERTY_STARTUP_TRIGGERS);
if(startupTriggers == null) {
startupTriggers = new ArrayList<StartupTriggerConfig>();
config.put(BrokerPool.PROPERTY_STARTUP_TRIGGERS, startupTriggers);
}

// Iterate over <trigger> elements
for(int i = 0; i < nlTrigger.getLength(); i++) {

// Get <trigger> element
final Element trigger = (Element)nlTrigger.item(i);
List<StartupTriggerConfig> startupTriggers = (List<StartupTriggerConfig>)config.get(BrokerPool.PROPERTY_STARTUP_TRIGGERS);
if(startupTriggers == null) {
startupTriggers = new ArrayList<StartupTriggerConfig>();
config.put(BrokerPool.PROPERTY_STARTUP_TRIGGERS, startupTriggers);
}

// Get @class
final String startupTriggerClass = trigger.getAttribute("class");

boolean isStartupTrigger = false;
try {
// Verify if class is StartupTrigger
for(final Class iface : Class.forName(startupTriggerClass).getInterfaces()) {
if("org.exist.storage.StartupTrigger".equals(iface.getName())) {
isStartupTrigger = true;
break;
}
}

// if it actually is a StartupTrigger
if(isStartupTrigger) {
final Map<String, List<? extends Object>> params = ParametersExtractor.extract(trigger.getElementsByTagName(ParametersExtractor.PARAMETER_ELEMENT_NAME));
// Parse additional parameters
final Map<String, List<? extends Object>> params
= ParametersExtractor.extract(trigger.getElementsByTagName(ParametersExtractor.PARAMETER_ELEMENT_NAME));

// Register trigger
startupTriggers.add(new StartupTriggerConfig(startupTriggerClass, params));
LOG.debug("Registered StartupTrigger: " + startupTriggerClass);

// Done
LOG.info("Registered StartupTrigger: " + startupTriggerClass);

} else {
LOG.warn("StartupTrigger: " + startupTriggerClass + " does not implement org.exist.storage.StartupTrigger. IGNORING!");
}

} catch(final ClassNotFoundException cnfe) {
LOG.error("Could not find StartupTrigger class: " + startupTriggerClass + ". " + cnfe.getMessage(), cnfe);
}
Expand Down

0 comments on commit 31fd3df

Please sign in to comment.