bloritsch 01/10/31 12:25:14 Modified: src/org/apache/cocoon/components/source Tag: cocoon_20_branch SourceHandlerImpl.java Log: Make SourceHandlerImpl ThreadSafe Revision Changes Path No revision No revision 1.1.2.8 +9 -6 xml-cocoon2/src/org/apache/cocoon/components/source/SourceHandlerImpl.java Index: SourceHandlerImpl.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/source/SourceHandlerImpl.java,v retrieving revision 1.1.2.7 retrieving revision 1.1.2.8 diff -u -r1.1.2.7 -r1.1.2.8 --- SourceHandlerImpl.java 2001/10/16 13:47:45 1.1.2.7 +++ SourceHandlerImpl.java 2001/10/31 20:25:14 1.1.2.8 @@ -20,6 +20,7 @@ import org.apache.avalon.framework.context.Contextualizable; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.avalon.framework.logger.Loggable; +import org.apache.avalon.framework.thread.ThreadSafe; import org.apache.cocoon.ProcessingException; import org.apache.cocoon.components.url.URLFactory; import org.apache.cocoon.environment.Environment; @@ -35,11 +36,12 @@ /** * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version $Id: SourceHandlerImpl.java,v 1.1.2.7 2001/10/16 13:47:45 cziegeler Exp $ + * @version $Id: SourceHandlerImpl.java,v 1.1.2.8 2001/10/31 20:25:14 bloritsch Exp $ */ public final class SourceHandlerImpl extends AbstractLoggable -implements Configurable, Disposable, Composable, Contextualizable, SourceHandler { +implements Configurable, Disposable, Composable, Contextualizable, SourceHandler, + ThreadSafe { /** The component manager */ private ComponentManager manager; @@ -60,21 +62,22 @@ throws ConfigurationException { try { getLogger().debug("Getting the SourceFactories"); - this.sourceFactories = new HashMap(); + HashMap factories = new HashMap(); Configuration[] configs = conf.getChildren("protocol"); SourceFactory sourceFactory = null; String protocol = null; for (int i = 0; i < configs.length; i++) { protocol = configs[i].getAttribute("name"); - if (this.sourceFactories.containsKey(protocol) == true) { + if (factories.containsKey(protocol) == true) { throw new ConfigurationException("SourceFactory defined twice for protocol: " + protocol); } getLogger().debug("\tfor protocol: " + protocol + " " + configs[i].getAttribute("class")); sourceFactory = (SourceFactory) ClassUtils.newInstance(configs[i].getAttribute("class")); this.init(sourceFactory); - this.sourceFactories.put(protocol, sourceFactory); + factories.put(protocol, sourceFactory); } + this.sourceFactories = java.util.Collections.synchronizedMap(factories); } catch (ConfigurationException e) { throw e; } catch (Exception e) { @@ -157,8 +160,8 @@ public void addFactory(String protocol, SourceFactory factory) throws ProcessingException { try { - this.sourceFactories.put(protocol, factory); this.init(factory); + this.sourceFactories.put(protocol, factory); } catch (ComponentException e) { throw new ProcessingException("cannot initialize factory: " + factory, e); } catch (ContextException e) {
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]