Update of /var/cvs/src/org/mmbase/framework/basic
In directory james.mmbase.org:/tmp/cvs-serv10667/basic

Modified Files:
        BasicFramework.java ChainedUrlConverter.java 
        DirectoryUrlConverter.java State.java 
Log Message:
if 'filtered' by a specified url converter, don't jump to another one. 


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/framework/basic


Index: BasicFramework.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/BasicFramework.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- BasicFramework.java 1 Sep 2008 08:12:40 -0000       1.33
+++ BasicFramework.java 1 Sep 2008 21:05:02 -0000       1.34
@@ -34,7 +34,7 @@
  * are configured is the order in which they are processed.
  *
  * @author Michiel Meeuwissen
- * @version $Id: BasicFramework.java,v 1.33 2008/09/01 08:12:40 michiel Exp $
+ * @version $Id: BasicFramework.java,v 1.34 2008/09/01 21:05:02 michiel Exp $
  * @since MMBase-1.9
  */
 public class BasicFramework extends Framework {
@@ -234,7 +234,9 @@
             }
 
             state.render(actualRenderer);
+
             setBlockParametersForRender(state, blockParameters);
+
             RenderHints hints = new RenderHints(actualRenderer, windowState, 
state.getId(), getComponentClass());
             actualRenderer.render(blockParameters, w, hints);
         } catch (FrameworkException fe) {


Index: ChainedUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/ChainedUrlConverter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- ChainedUrlConverter.java    1 Sep 2008 07:06:12 -0000       1.8
+++ ChainedUrlConverter.java    1 Sep 2008 21:05:02 -0000       1.9
@@ -11,6 +11,8 @@
 
 import java.util.*;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.mmbase.framework.*;
 import org.mmbase.util.functions.Parameters;
 import org.mmbase.util.functions.Parameter;
@@ -25,13 +27,14 @@
  * outcome of a converter can be added to the outcome of its preceder.
  *
  * @author André van Toly
- * @version $Id: ChainedUrlConverter.java,v 1.8 2008/09/01 07:06:12 michiel 
Exp $
+ * @version $Id: ChainedUrlConverter.java,v 1.9 2008/09/01 21:05:02 michiel 
Exp $
  * @since MMBase-1.9
  */
 public class ChainedUrlConverter implements UrlConverter {
 
     private static final Logger log = 
Logging.getLoggerInstance(ChainedUrlConverter.class);
 
+    public static String URLCONVERTER = "org.mmbase.urlconverter";
     /**
      * List containing the UrlConverters found in the framework configuration.
      */
@@ -73,9 +76,17 @@
                          Map<String, Object> params,
                          Parameters frameworkParameters, boolean escapeAmps) 
throws FrameworkException {
 
+        HttpServletRequest request = 
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
         for (UrlConverter uc : uclist) {
             String b = uc.getUrl(path, params, frameworkParameters, 
escapeAmps);
             if (b != null) {
+                UrlConverter current  = (UrlConverter) 
request.getAttribute(URLCONVERTER);
+                if (current != null && uc != current) {
+                    log.debug("Explicit block, but not currently rendering is 
done by other UrlConverter");
+                    return null;
+                } else {
+                    log.debug("No current urlconverter ");
+                }
                 return b;
             }
         }
@@ -104,8 +115,12 @@
                                         Parameters frameworkParameters) throws 
FrameworkException {
         for (UrlConverter uc : uclist) {
             String b = uc.getInternalUrl(path, params, frameworkParameters);
+            if (b != null) {
             log.debug("ChainedUrlConverter has: " + b);
-            if (b != null) return b;
+                HttpServletRequest request = 
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
+                request.setAttribute(URLCONVERTER, uc);
+                return b;
+            }
         }
         return null;
     }


Index: DirectoryUrlConverter.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/DirectoryUrlConverter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- DirectoryUrlConverter.java  1 Sep 2008 18:36:04 -0000       1.3
+++ DirectoryUrlConverter.java  1 Sep 2008 21:05:02 -0000       1.4
@@ -26,7 +26,7 @@
  * #getFilteredInternalUrl}.
  *
  * @author Michiel Meeuwissen
- * @version $Id: DirectoryUrlConverter.java,v 1.3 2008/09/01 18:36:04 michiel 
Exp $
+ * @version $Id: DirectoryUrlConverter.java,v 1.4 2008/09/01 21:05:02 michiel 
Exp $
  * @since MMBase-1.9
  */
 public abstract class DirectoryUrlConverter implements UrlConverter {
@@ -90,6 +90,10 @@
 
     public Block getBlock(String path, Parameters frameworkParameters) throws 
FrameworkException {
 
+
+        HttpServletRequest request = 
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
+        State state = State.getState(request);
+
         // First explore
         Block block = getExplicitBlock(frameworkParameters);
         if (block != null) {
@@ -101,14 +105,12 @@
             return block;
         }
 
-        HttpServletRequest request = 
BasicUrlConverter.getUserRequest(frameworkParameters.get(Parameter.REQUEST));
         if (directory == null) throw new RuntimeException("Directory not set");
-
         // dealing with the case when we know that we're in 'nice' mode 
already.
 
         boolean filteredMode = 
FrameworkFilter.getPath(request).startsWith(directory);
+
         if (filteredMode) {
-            State state = State.getState(request);
             if (state.isRendering() && state.getDepth() == 0) {
                 Block stateBlock = state.getBlock();
                 if (components == null || 
components.contains(stateBlock.getComponent())) {


Index: State.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/basic/State.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- State.java  26 Aug 2008 06:45:36 -0000      1.9
+++ State.java  1 Sep 2008 21:05:02 -0000       1.10
@@ -25,7 +25,7 @@
  *
  *
  * @author Michiel Meeuwissen
- * @version $Id: State.java,v 1.9 2008/08/26 06:45:36 michiel Exp $
+ * @version $Id: State.java,v 1.10 2008/09/01 21:05:02 michiel Exp $
  * @since MMBase-1.9
  */
 public class State {
@@ -166,7 +166,7 @@
 
     protected void setType(Renderer.Type t) {
         if (t.ordinal() < type.ordinal()) {
-            throw new IllegalStateException();
+            throw new IllegalStateException(t + " should not have come after " 
+ type);
         }
         if (t.ordinal() > type.ordinal()) {
             // restart keeping the track.
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to