Removed the logic for detecting parser mappings from 'META-INF/spring-integration.parsers' files now that each module provides its own NamespaceHandler.

This commit is contained in:
Mark Fisher
2008-09-22 17:05:38 +00:00
parent ee058d2696
commit de939c57f0

View File

@@ -16,21 +16,9 @@
package org.springframework.integration.config;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.xml.BeanDefinitionParser;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.integration.config.annotation.AnnotationDrivenParser;
import org.springframework.integration.gateway.config.GatewayParser;
import org.springframework.util.ClassUtils;
/**
* Namespace handler for the integration namespace.
@@ -40,12 +28,6 @@ import org.springframework.util.ClassUtils;
*/
public class IntegrationNamespaceHandler extends NamespaceHandlerSupport {
private static final String ADAPTER_PARSER_MAPPINGS_LOCATION = "META-INF/spring-integration.parsers";
private final Log logger = LogFactory.getLog(this.getClass());
public void init() {
registerBeanDefinitionParser("message-bus", new MessageBusParser());
registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenParser());
@@ -61,48 +43,6 @@ public class IntegrationNamespaceHandler extends NamespaceHandlerSupport {
registerBeanDefinitionParser("aggregator", new AggregatorParser());
registerBeanDefinitionParser("resequencer", new ResequencerParser());
registerBeanDefinitionParser("pool-executor", new PoolExecutorParser());
Map<String, Class<? extends BeanDefinitionParser>> parserMappings = this.loadAdapterParserMappings();
try {
for (Map.Entry<String, Class<? extends BeanDefinitionParser>> entry : parserMappings.entrySet()) {
registerBeanDefinitionParser(entry.getKey(), (BeanDefinitionParser) entry.getValue().newInstance());
}
}
catch (Exception e) {
throw new IllegalStateException("Failed to instantiate BeanDefinitionParser.", e);
}
}
private Map<String, Class<? extends BeanDefinitionParser>> loadAdapterParserMappings() {
Map<String, Class<? extends BeanDefinitionParser>> parserMappings =
new HashMap<String, Class<? extends BeanDefinitionParser>>();
ClassLoader classLoader = getClass().getClassLoader();
try {
Properties mappings =
PropertiesLoaderUtils.loadAllProperties(ADAPTER_PARSER_MAPPINGS_LOCATION, classLoader);
if (logger.isDebugEnabled()) {
logger.debug("Loaded parser mappings [" + mappings + "]");
}
Enumeration<?> propertyNames = mappings.propertyNames();
while (propertyNames.hasMoreElements()) {
String name = (String) propertyNames.nextElement();
String classname = mappings.getProperty(name);
Class<?> parserClass = ClassUtils.forName(classname, classLoader);
if (!BeanDefinitionParser.class.isAssignableFrom(parserClass)) {
throw new IllegalStateException("Expected class of type BeanDefinitionParser, but '" +
name + "' was of type '" + parserClass.getSimpleName() + "'");
}
parserMappings.put(name, (Class<? extends BeanDefinitionParser>) parserClass);
}
return parserMappings;
}
catch (IOException e) {
throw new IllegalStateException(
"Unable to load BeanDefinitionParser mappings from location [" +
ADAPTER_PARSER_MAPPINGS_LOCATION + "]. Root cause: " + e);
}
catch (ClassNotFoundException e) {
throw new IllegalStateException("Failed to load BeanDefinitionParser.", e);
}
}
}