Author: cziegeler
Date: Thu Feb  3 12:53:57 2005
New Revision: 151228

URL: http://svn.apache.org/viewcvs?view=rev&rev=151228
Log:
Remove unused ProcesorWrapper
Start using proxies for poolable components (not finished yet)

Removed:
    cocoon/trunk/src/java/org/apache/cocoon/ProcessorWrapper.java
Modified:
    
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
    
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
    cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java
    
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java

Modified: 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java?view=diff&r1=151227&r2=151228
==============================================================================
--- 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
 (original)
+++ 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/AbstractComponentHandler.java
 Thu Feb  3 12:53:57 2005
@@ -97,8 +97,10 @@
 
         if( Poolable.class.isAssignableFrom( componentClass ) ) {
             numInterfaces++;
-            // FIXME - change this later on to MODEL_POOLED
-            info.setModel(ComponentInfo.MODEL_NON_THREAD_SAFE_POOLED);
+            info.setModel(ComponentInfo.MODEL_POOLED);
+            if ( 
"non-thread-safe-pooled".equals(info.getConfiguration().getAttribute("model", 
null))) {
+                info.setModel(ComponentInfo.MODEL_NON_THREAD_SAFE_POOLED);
+            }
         }
 
         if( numInterfaces > 1 ) {

Modified: 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java?view=diff&r1=151227&r2=151228
==============================================================================
--- 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
 (original)
+++ 
cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/PoolableComponentHandler.java
 Thu Feb  3 12:53:57 2005
@@ -61,6 +61,9 @@
 public class PoolableComponentHandler
 extends NonThreadSafePoolableComponentHandler {
     
+    /** All the interfaces for the proxy */
+    protected final Class[] interfaces;
+    
     /**
      * Create a PoolableComponentHandler which manages a pool of Components
      *  created by the specified factory object.
@@ -75,6 +78,7 @@
                                      final Configuration config )
     throws Exception {
         super(info, logger, factory, config);
+        this.interfaces = this.guessWorkInterfaces(factory.getCreatedClass());
     }
     
     /* (non-Javadoc)
@@ -97,7 +101,7 @@
     
     protected Object createProxy() {
         return 
Proxy.newProxyInstance(this.factory.getCreatedClass().getClassLoader(), 
-                                      
this.guessWorkInterfaces(this.factory.getCreatedClass()), 
+                                      this.interfaces, 
                                       new ProxyHandler(this));
     }
 
@@ -183,7 +187,13 @@
          */
         public void invoke() {
             try {
-                this.handler.putIntoPool(this.componentHolder.get());
+                final Object o = this.componentHolder.get();
+                /*if ( o == null ) {
+                    System.out.println("Releasing null for " + 
this.handler.factory.getCreatedClass());
+                } else {
+                    System.out.println("Releasing: " + o);
+                }*/
+                this.handler.putIntoPool(o);
             } catch (Exception ignore) {
                 // we ignore this
             }

Modified: cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java?view=diff&r1=151227&r2=151228
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java Thu Feb  3 12:53:57 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -94,8 +94,8 @@
     /** active request count */
     private volatile int activeRequestCount = 0;
 
-    /** the Processor if it is ThreadSafe */
-    private Processor threadSafeProcessor;
+    /** the Processor */
+    private Processor processor;
 
     /** The source resolver */
     protected SourceResolver sourceResolver;
@@ -177,14 +177,12 @@
      * @exception Exception if an error occurs
      */
     public void initialize() throws Exception {
-//long start = System.currentTimeMillis();
-
         this.serviceManager = new 
CocoonServiceManager(this.parentServiceManager);
         ContainerUtil.enableLogging(this.serviceManager, 
getLogger().getChildLogger("manager"));
         ContainerUtil.contextualize(this.serviceManager, this.context);
 
         if (getLogger().isDebugEnabled()) {
-            getLogger().debug("New Cocoon object.");
+            getLogger().debug("Initializing new Cocoon object.");
         }
 
         // Log the System Properties.
@@ -196,21 +194,8 @@
 
         ContainerUtil.initialize(this.serviceManager);
 
-        // Get the Processor and keep it if it's ThreadSafe
-        Processor processor = 
(Processor)this.serviceManager.lookup(Processor.ROLE);
-        if (processor instanceof ThreadSafe) {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Processor of class " + 
processor.getClass().getName() +
-                                  " is ThreadSafe");
-            }
-            this.threadSafeProcessor = processor;
-        } else {
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Processor of class " + 
processor.getClass().getName() +
-                                  " is NOT ThreadSafe -- will be looked up at 
each request");
-            }
-            this.serviceManager.release(processor);
-        }
+        // Get the Processor and keep it
+        this.processor = (Processor)this.serviceManager.lookup(Processor.ROLE);
 
         this.environmentHelper = new EnvironmentHelper(
                 (String) this.context.get(ContextHelper.CONTEXT_ROOT_URL));
@@ -222,8 +207,7 @@
         if (this.serviceManager.hasService(RequestListener.ROLE)){
             this.requestListener = (RequestListener) 
this.serviceManager.lookup(RequestListener.ROLE);
         }
-//long delay = System.currentTimeMillis() - start;
-//System.err.println("########## Cocoon.initialize() : " + delay);
+        Core.cleanup();        
     }
 
     /** Dump System Properties */
@@ -345,11 +329,11 @@
      */
     public void dispose() {
         if (this.serviceManager != null) {
-            if (this.requestListener != null) {
-                this.serviceManager.release(this.requestListener);
-            }
-            this.serviceManager.release(this.threadSafeProcessor);
-            this.threadSafeProcessor = null;
+            this.serviceManager.release(this.requestListener);
+            this.requestListener = null;
+
+            this.serviceManager.release(this.processor);
+            this.processor = null;
 
             this.serviceManager.release(this.sourceResolver);
             this.sourceResolver = null;
@@ -459,16 +443,11 @@
         getLogger().debug(msg.toString());
     }
 
-    /**
-     * Process the given <code>Environment</code> to produce the output.
-     *
-     * @param environment an <code>Environment</code> value
-     * @return a <code>boolean</code> value
-     * @exception Exception if an error occurs
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.Processor#process(org.apache.cocoon.environment.Environment)
      */
     public boolean process(Environment environment)
     throws Exception {
-//long start = System.currentTimeMillis();
 
         if (this.disposed) {
             throw new IllegalStateException("You cannot process a Disposed 
Cocoon engine.");
@@ -493,36 +472,19 @@
                 }
             }
 
-            if (this.threadSafeProcessor != null) {
-                result = this.threadSafeProcessor.process(environment);
-                if (this.requestListener != null) {
-                    try {
-                        requestListener.onRequestEnd(environment);
-                    } catch (Exception e) {
-                        getLogger().error("Error encountered monitoring 
request start: " + e.getMessage());
-                    }
-                }
-            } else {
-                Processor processor = 
(Processor)this.serviceManager.lookup(Processor.ROLE);
+            result = this.processor.process(environment);
+
+            if (this.requestListener != null) {
                 try {
-                    result = processor.process(environment);
-                    if (this.requestListener != null) {
-                        try {
-                            requestListener.onRequestEnd(environment);
-                        } catch (Exception e) {
-                            getLogger().error("Error encountered monitoring 
request start: " + e.getMessage());
-                        }
-                    }
-                } finally {
-                    this.serviceManager.release(processor);
+                    requestListener.onRequestEnd(environment);
+                } catch (Exception e) {
+                    getLogger().error("Error encountered monitoring request 
start: " + e.getMessage());
                 }
             }
+
             // commit response on success
             environment.commitResponse();
 
-//long delay = System.currentTimeMillis() - start;
-//System.err.println("########## Cocoon.process() : " + delay);
-
             return result;
         } catch (Exception any) {
             if (this.requestListener != null) {
@@ -541,7 +503,7 @@
             if (getLogger().isDebugEnabled()) {
                 --activeRequestCount;
             }
-            //Core.cleanup();
+            Core.cleanup();
 
             EnvironmentHelper.checkEnvironment(environmentDepth, getLogger());
         }
@@ -562,15 +524,7 @@
                 this.debug(environment, true);
             }
 
-            if (this.threadSafeProcessor != null) {
-                return this.threadSafeProcessor.buildPipeline(environment);
-            }
-            Processor processor = 
(Processor)this.serviceManager.lookup(Processor.ROLE);
-            try {
-                return processor.buildPipeline(environment);
-            } finally {
-                this.serviceManager.release(processor);
-            }
+            return this.processor.buildPipeline(environment);
 
         } finally {
             if (getLogger().isDebugEnabled()) {

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
URL: 
http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java?view=diff&r1=151227&r2=151228
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
 (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/DefaultTreeBuilder.java
 Thu Feb  3 12:53:57 2005
@@ -53,7 +53,7 @@
 public class DefaultTreeBuilder
         extends AbstractLogEnabled
         implements TreeBuilder, Contextualizable, Serviceable,
-                   Initializable, Recyclable, Disposable {
+                   Recyclable, Disposable {
 
     protected Map attributes = new HashMap();
 
@@ -148,10 +148,6 @@
     public void service(ServiceManager manager) throws ServiceException {
         this.manager = manager;
     }
-
-    public void initialize() throws Exception {
-    }
-
 
     /**
      * Get the location of the treebuilder config file. Can be overridden for 
other versions.


Reply via email to