You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/02/24 14:22:35 UTC
svn commit: r380667 - in
/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon: Processor.java
core/container/spring/ConfigReader.java
Author: cziegeler
Date: Fri Feb 24 05:22:28 2006
New Revision: 380667
URL: http://svn.apache.org/viewcvs?rev=380667&view=rev
Log:
Cleanup code and add some logging statements
Modified:
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/Processor.java
cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/Processor.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/Processor.java?rev=380667&r1=380666&r2=380667&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/Processor.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/Processor.java Fri Feb 24 05:22:28 2006
@@ -17,7 +17,6 @@
import java.util.Map;
-import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.components.pipeline.ProcessingPipeline;
Modified: cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java?rev=380667&r1=380666&r2=380667&view=diff
==============================================================================
--- cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java (original)
+++ cocoon/trunk/cocoon-core/src/main/java/org/apache/cocoon/core/container/spring/ConfigReader.java Fri Feb 24 05:22:28 2006
@@ -26,56 +26,39 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.core.container.util.ConfigurationBuilder;
import org.apache.cocoon.core.container.util.SimpleSourceResolver;
import org.apache.cocoon.matching.helpers.WildcardHelper;
import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.TraversableSource;
/**
* This component reads in Avalon style configuration files and returns all
* contained components and their configurations.
*
- * FIXME - Add logging statements
- *
* @since 2.2
* @version $Id$
*/
-public class ConfigReader {
+public class ConfigReader extends AbstractLogEnabled {
- /** Parameter map for the context protocol */
+ /** Parameter map for the context protocol. */
protected static final Map CONTEXT_PARAMETERS = Collections.singletonMap("force-traversable", Boolean.TRUE);
- protected SourceResolver resolver;
+ /** Source resolver for reading configuration files. */
+ protected final SimpleSourceResolver resolver;
/** The configuration info. */
- protected ConfigurationInfo configInfo;
+ protected final ConfigurationInfo configInfo;
/** Avalon environment. */
- protected AvalonEnvironment environment;
+ protected final AvalonEnvironment environment;
public static ConfigurationInfo readConfiguration(String source, AvalonEnvironment env)
throws Exception {
- final SimpleSourceResolver sourceResolver = new SimpleSourceResolver();
- sourceResolver.enableLogging(env.logger);
- sourceResolver.contextualize(env.context);
-
- ConfigReader converter = new ConfigReader();
- converter.resolver = sourceResolver;
- converter.environment = env;
- converter.configInfo = new ConfigurationInfo();
-
+ ConfigReader converter = new ConfigReader(env, null);
converter.convert(source);
- final Iterator i = converter.configInfo.getClassNames().values().iterator();
- while ( i.hasNext() ) {
- final ComponentInfo current = (ComponentInfo)i.next();
- converter.configInfo.addComponent(current);
- }
- converter.configInfo.clearClassNames();
-
return converter.configInfo;
}
@@ -83,82 +66,94 @@
ConfigurationInfo parentInfo,
AvalonEnvironment env)
throws Exception {
- final SimpleSourceResolver sourceResolver = new SimpleSourceResolver();
- sourceResolver.enableLogging(env.logger);
- sourceResolver.contextualize(env.context);
-
- ConfigReader converter = new ConfigReader();
- converter.resolver = sourceResolver;
- converter.environment = env;
- converter.configInfo = new ConfigurationInfo(parentInfo);
+ ConfigReader converter = new ConfigReader(env, parentInfo);
+ converter.convert(config, null);
+ return converter.configInfo;
+ }
+
+ private ConfigReader(AvalonEnvironment env, ConfigurationInfo parentInfo)
+ throws Exception {
+ this.resolver = new SimpleSourceResolver();
+ this.resolver.enableLogging(env.logger);
+ this.resolver.contextualize(env.context);
+
+ this.enableLogging(env.logger);
+ this.environment = env;
+
// now add selectors from parent
if ( parentInfo != null ) {
+ this.configInfo = new ConfigurationInfo(parentInfo);
final Iterator i = parentInfo.getComponents().values().iterator();
while ( i.hasNext() ) {
final ComponentInfo current = (ComponentInfo)i.next();
if ( current.isSelector() ) {
- converter.configInfo.getClassNames().put(current.getRole(), current);
+ this.configInfo.getClassNames().put(current.getRole(), current);
}
}
+ } else {
+ this.configInfo = new ConfigurationInfo();
}
- converter.convert(config);
- final Iterator i = converter.configInfo.getClassNames().values().iterator();
- while ( i.hasNext() ) {
- final ComponentInfo current = (ComponentInfo)i.next();
- converter.configInfo.addComponent(current);
- }
- converter.configInfo.clearClassNames();
-
- return converter.configInfo;
- }
-
- private ConfigReader() {
- // nothing to do
}
protected void convert(String relativePath)
throws Exception {
+ if ( this.getLogger().isInfoEnabled() ) {
+ this.getLogger().info("Reading avalon configuration from " + relativePath);
+ }
final Source root = this.resolver.resolveURI(relativePath);
try {
- ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
- Configuration config = b.build(SourceUtil.getInputSource(root));
+ final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
+ final Configuration config = b.build(SourceUtil.getInputSource(root));
- // It's possible to define a logger on a per sitemap/service manager base.
- // This is the default logger for all components defined with this sitemap/manager.
- this.configInfo.setRootLogger(config.getAttribute("logger", null));
-
- // and load configuration with a empty list of loaded configurations
- final Set loadedConfigs = new HashSet();
- this.parseConfiguration(config, root.getURI(),loadedConfigs);
- // test for optional user-roles attribute
- final String userRoles = config.getAttribute("user-roles", null);
- if (userRoles != null) {
- final Source userRolesSource = this.resolver.resolveURI(userRoles, root.getURI(), null);
- try {
- Configuration userRolesConfig = b.build(SourceUtil.getInputSource(userRolesSource));
- this.parseConfiguration(userRolesConfig, userRolesSource.getURI(), loadedConfigs);
- } finally {
- this.resolver.release(userRolesSource);
- }
- }
+ this.convert(config, root.getURI());
+
} finally {
this.resolver.release(root);
}
}
- protected void convert(Configuration config)
+ protected void convert(Configuration config, String rootUri)
throws Exception {
+ if ( this.getLogger().isInfoEnabled() ) {
+ this.getLogger().info("Converting avalon configuration");
+ }
// It's possible to define a logger on a per sitemap/service manager base.
// This is the default logger for all components defined with this sitemap/manager.
this.configInfo.setRootLogger(config.getAttribute("logger", null));
// and load configuration with a empty list of loaded configurations
- this.parseConfiguration(config, null, new HashSet());
+ final Set loadedConfigs = new HashSet();
+ this.parseConfiguration(config, null, loadedConfigs);
+
+ // test for optional user-roles attribute
+ if ( rootUri != null ) {
+ final String userRoles = config.getAttribute("user-roles", null);
+ if (userRoles != null) {
+ if ( this.getLogger().isInfoEnabled() ) {
+ this.getLogger().info("Reading additional user roles: " + userRoles);
+ }
+ final Source userRolesSource = this.resolver.resolveURI(userRoles, rootUri, null);
+ try {
+ final ConfigurationBuilder b = new ConfigurationBuilder(this.environment.settings);
+ final Configuration userRolesConfig = b.build(SourceUtil.getInputSource(userRolesSource));
+ this.parseConfiguration(userRolesConfig, userRolesSource.getURI(), loadedConfigs);
+ } finally {
+ this.resolver.release(userRolesSource);
+ }
+ }
+ }
+ // add roles as components
+ final Iterator i = this.configInfo.getClassNames().values().iterator();
+ while ( i.hasNext() ) {
+ final ComponentInfo current = (ComponentInfo)i.next();
+ this.configInfo.addComponent(current);
+ }
+ this.configInfo.clearClassNames();
}
protected void parseConfiguration(final Configuration configuration,
- String contextURI,
- Set loadedURIs)
+ String contextURI,
+ Set loadedURIs)
throws ConfigurationException {
final Configuration[] configurations = configuration.getChildren();
@@ -226,14 +221,7 @@
classAttribute = "src";
}
if ( classAttribute == null ) {
- // TODO: Unknown selector
- try {
- System.out.println("** Found unknown selector: " + className);
- DefaultConfigurationSerializer dcs = new DefaultConfigurationSerializer();
- System.out.println(dcs.serialize(info.getConfiguration()));
- System.out.println("----------------------------------------------------");
- } catch (Exception ignore) {
- }
+ this.getLogger().warn("Found unknown selector type (continuing anyway: " + className);
} else {
String componentRole = role;
if ( componentRole.endsWith("Selector") ) {
@@ -256,8 +244,8 @@
}
}
- protected void handleInclude(final String contextURI,
- final Set loadedURIs,
+ protected void handleInclude(final String contextURI,
+ final Set loadedURIs,
final Configuration includeStatement)
throws ConfigurationException {
final String includeURI = includeStatement.getAttribute("src", null);
@@ -315,14 +303,17 @@
}
}
- protected void loadURI(final Source src,
- final Set loadedURIs,
+ protected void loadURI(final Source src,
+ final Set loadedURIs,
final Configuration includeStatement)
throws ConfigurationException {
// If already loaded: do nothing
final String uri = src.getURI();
if (!loadedURIs.contains(uri)) {
+ if ( this.getLogger().isInfoEnabled() ) {
+ this.getLogger().info("Loading configuration: " + uri);
+ }
// load it and store it in the read set
Configuration includeConfig = null;
try {