bloritsch    01/10/31 12:18:39

  Modified:    src/org/apache/cocoon/components/source
                        SourceHandlerImpl.java
  Log:
  Make SourceHandlerImpl ThreadSafe
  
  Revision  Changes    Path
  1.10      +10 -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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SourceHandlerImpl.java    2001/10/16 15:33:38     1.9
  +++ SourceHandlerImpl.java    2001/10/31 20:18:39     1.10
  @@ -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.9 2001/10/16 15:33:38 cziegeler Exp $
  + * @version $Id: SourceHandlerImpl.java,v 1.10 2001/10/31 20:18:39 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,23 @@
       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, configs[i]);
  -                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 +161,8 @@
       public void addFactory(String protocol, SourceFactory factory)
       throws ProcessingException {
           try {
  -            this.sourceFactories.put(protocol, factory);
               this.init(factory, null);
  +            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]

Reply via email to