Author: upayavira
Date: Wed Mar 30 12:31:30 2005
New Revision: 159521

URL: http://svn.apache.org/viewcvs?view=rev&rev=159521
Log:
Allow the CocoonBean to use an existing Cocoon object, if one exists. 
You just need to do cocoonBean.setUseExistingCocoon(true);


Modified:
    
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java

Modified: 
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java
URL: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java?view=diff&r1=159520&r2=159521
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java 
(original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/bean/CocoonWrapper.java 
Wed Mar 30 12:31:30 2005
@@ -40,6 +40,7 @@
 import org.apache.avalon.framework.logger.Logger;
 
 import org.apache.cocoon.Cocoon;
+import org.apache.cocoon.CocoonAccess;
 import org.apache.cocoon.Constants;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.components.CocoonComponentManager;
@@ -100,6 +101,7 @@
     private HashMap empty = new HashMap();
 
     private boolean initialized = false;
+    private boolean useExistingCocoon = false;
 
     //
     // INITIALISATION METHOD
@@ -164,12 +166,16 @@
 
             loadClasses(classList);
 
-            cocoon = new Cocoon();
-            ContainerUtil.enableLogging(cocoon, log);
-            ContainerUtil.contextualize(cocoon, appContext);
-            cocoon.setLoggerManager(logManager);
-            ContainerUtil.initialize(cocoon);
-
+            if (this.useExistingCocoon) {
+                cocoon = getCocoon();
+            }
+            if (cocoon == null) {
+                cocoon = new Cocoon();
+                ContainerUtil.enableLogging(cocoon, log);
+                ContainerUtil.contextualize(cocoon, appContext);
+                cocoon.setLoggerManager(logManager);
+                ContainerUtil.initialize(cocoon);
+            }
         } catch (Exception e) {
             log.fatalError("Exception caught", e);
             throw e;
@@ -177,6 +183,14 @@
         initialized = true;
     }
 
+    private Cocoon getCocoon() {
+        return new CocoonAccess() {
+            final Cocoon instance() {
+                return super.getCocoon();
+            }
+        }.instance();
+    }
+    
     protected ExcaliburComponentManager getComponentManager() {
         return cocoon.getComponentManager();
     }
@@ -367,6 +381,11 @@
     public void addLoadedClasses(List classList) {
         this.classList.addAll(classList);
     }
+
+    public void setUseExistingCocoon(boolean useExistingCocoon) {
+        this.useExistingCocoon = useExistingCocoon;
+    }
+    
     /**
      * Process single URI into given output stream.
      *


Reply via email to