You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by da...@apache.org on 2005/06/01 00:32:44 UTC

svn commit: r179298 - /cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlockManager.java /cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlocksManager.java

Author: danielf
Date: Tue May 31 15:32:42 2005
New Revision: 179298

URL: http://svn.apache.org/viewcvs?rev=179298&view=rev
Log:
Setting of the current block should only be done in the BlocksManager. This is the only entry point for a block call. Polymorphism will also be easier to implement if it is the caller of the BlockManager rather than the BlockManager it self that set current block.

Modified:
    cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlockManager.java
    cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlocksManager.java

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlockManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlockManager.java?rev=179298&r1=179297&r2=179298&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlockManager.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlockManager.java Tue May 31 15:32:42 2005
@@ -225,6 +225,12 @@
         this.blocksManager = blocksManager;
     }
 
+    // This is for being able to call EnvironmentHelper.enterProcessor
+    // in BlocksManager, don't know if it really is needed
+    public ServiceManager getServiceManager() {
+        return this.serviceManager;
+    }
+
     // The Processor methods
 
     public boolean process(Environment environment) throws Exception {
@@ -241,15 +247,8 @@
             getLogger().debug("Resolving block: " + blockName + " to " + blockId);
             return this.blocksManager.process(blockId, environment);
         } else {
-            getLogger().debug("Enter processing in block " + this.id);
             // Request to the own block
-            EnvironmentHelper.enterProcessor(this, this.serviceManager, environment);
-            try {
-                return this.processor.process(environment);
-            } finally {
-                EnvironmentHelper.leaveProcessor();
-                getLogger().debug("Leaving processing in block " + this.id);
-            }
+            return this.processor.process(environment);
         }
     }
 

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlocksManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlocksManager.java?rev=179298&r1=179297&r2=179298&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlocksManager.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/blocks/BlocksManager.java Tue May 31 15:32:42 2005
@@ -43,6 +43,7 @@
 import org.apache.cocoon.core.Core;
 import org.apache.cocoon.core.CoreUtil;
 import org.apache.cocoon.environment.Environment;
+import org.apache.cocoon.environment.internal.EnvironmentHelper;
 import org.xml.sax.SAXException;
 
 /**
@@ -212,11 +213,18 @@
         } else {
             // Resolve the URI relative to the mount point
             uri = uri.substring(mountPoint.length());
+            getLogger().debug("Enter processing in block at " + mountPoint);
             try {
                 environment.setURI("", uri);
+                // It is important to set the current block each time
+                // a new block is entered, this is used for the block
+                // protocol
+                EnvironmentHelper.enterProcessor(block, block.getServiceManager(), environment);
                 return block.process(environment);
             } finally {
+                EnvironmentHelper.leaveProcessor();
                 environment.setURI(oldPrefix, oldURI);
+                getLogger().debug("Leaving processing in block at " + mountPoint);
             }
         }
     }
@@ -226,7 +234,17 @@
         if (block == null) {
             return false;
         } else {
-            return block.process(environment);
+            getLogger().debug("Enter processing in block " + blockId);
+            try {
+                // It is important to set the current block each time
+                // a new block is entered, this is used for the block
+                // protocol
+                EnvironmentHelper.enterProcessor(block, block.getServiceManager(), environment);
+                return block.process(environment);
+            } finally {
+                EnvironmentHelper.leaveProcessor();
+                getLogger().debug("Leaving processing in block " + blockId);
+            }
         }
     }