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]

Reply via email to