Author: michiel
Date: 2009-11-11 19:17:50 +0100 (Wed, 11 Nov 2009)
New Revision: 39651

Added:
   
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/CollectorBacking.java
Modified:
   
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/BasicBacking.java
   
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/ContextCollector.java
   
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/ContextTagTest.java
   
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/StringListTagTest.java
   
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/BasicBackingTest.java
   
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/PageContextContainerTest.java
   
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/StandaloneContextContainerTest.java
   mmbase/trunk/applications/taglib/src/test/webapp/vars.jsp
Log:
fixed various test-cases

Modified: 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/BasicBacking.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/BasicBacking.java
  2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/BasicBacking.java
  2009-11-11 18:17:50 UTC (rev 39651)
@@ -45,12 +45,12 @@
     /**
      * In this map we keep track of what should be in the page context when 
this backing is {...@link #release}d.
      */
-    protected Map<String, Object> pageContextValues;
+    protected Map<String, Object> originalPageContextValues;
     protected Set<String> myPageContextKeys;
     private final Map<String, Object> b; // the actual backing.
 
-    private final boolean isELIgnored;
-    private  transient PageContext pageContext;
+    protected final boolean isELIgnored;
+    protected transient PageContext pageContext;
 
     /**
      * @param pc The page-context to which variables must be reflected or 
<code>null</code> if this must not happen.
@@ -63,11 +63,11 @@
             log.debug("Pushing page Context " + pc + " --> " + isELIgnored);
         }
         if (! isELIgnored) {
-            pageContextValues = new HashMap<String, Object>();
+            originalPageContextValues = new HashMap<String, Object>();
             myPageContextKeys = new HashSet<String>();
-            pageContext.setAttribute(PAGECONTEXT_KEY + uniqueNumber, 
pageContextValues);
+            pageContext.setAttribute(PAGECONTEXT_KEY + uniqueNumber, 
originalPageContextValues);
         } else {
-            pageContextValues = null;
+            originalPageContextValues = null;
             if (log.isDebugEnabled()) {
                 if (ignoreEL) {
                     log.debug("ISELIGNORED because specified");
@@ -91,6 +91,7 @@
     }
 
     public void pushPageContext(PageContext pc) {
+        PageContext origPageContext = pageContext;
         pageContext = pc;
         if (isELIgnored) {
             log.debug("EL ignored");
@@ -99,13 +100,15 @@
             log.debug("Pushing page context " + b);
         }
 
-        pageContextValues = (Map<String, Object>) 
pageContext.getAttribute(PAGECONTEXT_KEY + uniqueNumber);
-        if (pageContextValues == null) {
-            pageContextValues = new HashMap<String, Object>();
-            pageContext.setAttribute(PAGECONTEXT_KEY + uniqueNumber, 
pageContextValues);
+        originalPageContextValues = (Map<String, Object>) 
pageContext.getAttribute(PAGECONTEXT_KEY + uniqueNumber);
+        if (originalPageContextValues == null) {
+            originalPageContextValues = new HashMap<String, Object>();
+            pageContext.setAttribute(PAGECONTEXT_KEY + uniqueNumber, 
originalPageContextValues);
         }
-        for (Map.Entry<String, Object> entry : b.entrySet()) {
-            mirrorPut(entry.getKey(), entry.getValue());
+        if (! origPageContext.equals(pageContext)) {
+            for (Map.Entry<String, Object> entry : b.entrySet()) {
+                mirrorPut(entry.getKey(), entry.getValue());
+            }
         }
     }
     public void pullPageContext(PageContext pc) {
@@ -113,7 +116,7 @@
         release();
         pageContext = pc;
         if (isELIgnored) return;
-        pageContextValues = (Map<String, Object>) 
pageContext.getAttribute(PAGECONTEXT_KEY + uniqueNumber);
+        originalPageContextValues = (Map<String, Object>) 
pageContext.getAttribute(PAGECONTEXT_KEY + uniqueNumber);
     }
 
     public PageContext getPageContext() {
@@ -174,8 +177,8 @@
                             i.remove();
                             if (! isELIgnored) {
                                 String key = last.getKey();
-                                if (! pageContextValues.containsKey(key)) {
-                                    pageContextValues.put(key, 
pageContext.getAttribute(key, SCOPE));
+                                if (! 
originalPageContextValues.containsKey(key)) {
+                                    originalPageContextValues.put(key, 
pageContext.getAttribute(key, SCOPE));
                                 }
                                 pageContext.removeAttribute(key, SCOPE);
                             }
@@ -200,23 +203,12 @@
             return;
         }
 
-        if (reset) {
-            myPageContextKeys.add(key);
-        }
-
-        if (! pageContextValues.containsKey(key)) {
+        if (! originalPageContextValues.containsKey(key)) {
             // log.debug("Storing pageContext key " + key);
             Object prevValue = pageContext.getAttribute(key, SCOPE);
-            if (prevValue != null) {
-                pageContextValues.put(key, prevValue);
-            } else {
-                // nothing in the pageContext, we'll decide it.
-                myPageContextKeys.add(key);
-            }
+            originalPageContextValues.put(key, prevValue);
         }
-        if (myPageContextKeys.contains(key)) {
-            pageContextValues.put(key, value);
-        }
+
         //System.out.println("MP " + uniqueNumber + " --> " + 
pageContextValues + "(" + myPageContextKeys + ")");
         if (value != null) {
             pageContext.setAttribute(key, Casting.wrap(value, 
(CharTransformer) pageContext.findAttribute(ContentTag.ESCAPER_KEY)), SCOPE);
@@ -259,18 +251,18 @@
     }
 
     void release() {
-        if (pageContextValues != null && pageContext != null) {
-            //log.debug("Restoring pageContext with " + pageContextValues);
+        //System.out.println("Restoring with " + originalPageContextValues);
+        if (originalPageContextValues != null && pageContext != null) {
+            //log.debug("Restoring pageContext with " + 
originalPageContextValues);
             // restore the pageContext
-            //System.out.println("Restoring pageContext for " + this + " with 
" + pageContextValues);
-            for (Map.Entry<String, Object> e : pageContextValues.entrySet()) {
+            for (Map.Entry<String, Object> e : 
originalPageContextValues.entrySet()) {
                 if (e.getValue() == null) {
                     pageContext.removeAttribute(e.getKey(), SCOPE);
                 } else {
                     pageContext.setAttribute(e.getKey(), e.getValue(), SCOPE);
                 }
             }
-            pageContextValues.clear();
+            originalPageContextValues.clear();
         }
     }
 

Added: 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/CollectorBacking.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/CollectorBacking.java
                              (rev 0)
+++ 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/CollectorBacking.java
      2009-11-11 18:17:50 UTC (rev 39651)
@@ -0,0 +1,93 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+
+package org.mmbase.bridge.jsp.taglib.util;
+
+import javax.servlet.jsp.PageContext;
+import java.util.*;
+import javax.servlet.jsp.JspTagException;
+import org.mmbase.util.Casting;
+import org.mmbase.util.transformers.CharTransformer;
+import org.mmbase.bridge.jsp.taglib.ContextTag;
+import org.mmbase.bridge.jsp.taglib.ContentTag;
+import org.mmbase.bridge.jsp.taglib.WriterHelper;
+import org.mmbase.util.logging.*;
+
+
+/**
+ * A basic implementation for the backing of a ContextContainter. It uses a 
HashMap, but is also
+ * writes every entry to the temporary to the page-context, to make them 
available to JSP2's
+ * expression language, unless the 'ELIgnored' parameter of the MMBase taglib 
is true, or no
+ * pageContext is given in the constructor.
+
+ * @author Michiel Meeuwissen
+ * @since MMBase-1.8
+ * @version $Id: BasicBacking.java 39537 2009-11-04 15:23:01Z michiel $
+ */
+
+public  class CollectorBacking extends BasicBacking {
+    private static final Logger log = 
Logging.getLoggerInstance(CollectorBacking.class);
+
+    protected final Set<String> myKeys = new HashSet<String>();
+
+    private final ContextContainer parent;
+    /**
+     * @param pc The page-context to which variables must be reflected or 
<code>null</code> if this must not happen.
+     */
+    public CollectorBacking(PageContext pc, ContextContainer parent) {
+        super(pc, true);
+        this.parent = parent;
+    }
+
+    @Override
+    public Object put(String key, Object value, boolean reset) {
+        if (log.isDebugEnabled()) {
+            log.debug("Putting in collector " + key + "=" + value + " " + 
parent);
+        }
+        //System.out.println("Putting in collector " + key + "=" + value + " " 
+ parent + " " + myPageContextKeys);
+        try {
+            assert parent != null;
+            if (reset || myKeys.contains(key)) {
+                parent.reregister(key, value);
+                myKeys.add(key);
+            } else {
+                if (! parent.containsKey(key)) {
+                    myKeys.add(key);
+                    parent.register(key, value);
+                } else {
+                    parent.register(key, value);
+                }
+            }
+        } catch (JspTagException jte) {
+            throw new RuntimeException(jte);
+        }
+        boolean r = reset || myKeys.contains(key);
+        return super.put(key, value, r);
+    }
+    /**
+     * Put the value also in the 'parent' of this backing.
+     * @param reset If true (default it's false) allow the already existing 
value in the parent to be replaced.
+     * @since MMBase-1.9.2
+     */
+    protected void _mirrorPut(String key, Object value, boolean reset) {
+        if (isELIgnored) {
+            log.debug("EL IGNORED!");
+            return;
+        }
+        if (reset) {
+            myPageContextKeys.add(key);
+        }
+        if (myPageContextKeys.contains(key)) {
+            originalPageContextValues.put(key, value);
+        }
+        super.mirrorPut(key, value, reset);
+    }
+
+}

Modified: 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/ContextCollector.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/ContextCollector.java
      2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/main/java/org/mmbase/bridge/jsp/taglib/util/ContextCollector.java
      2009-11-11 18:17:50 UTC (rev 39651)
@@ -32,7 +32,6 @@
 public class  ContextCollector extends StandaloneContextContainer {
     private static final Logger log = 
Logging.getLoggerInstance(ContextCollector.class);
 
-    private final Set<String> myKeys = new HashSet<String>();
 
     public ContextCollector(ContextProvider p) throws JspTagException {
         super(p.getPageContext(), "CONTEXT-COLLECTOR " + (p.getId() == null ? 
"" : "-" + p.getId()), p.getContextContainer());
@@ -44,34 +43,7 @@
     @Override
     protected BasicBacking createBacking(PageContext pc) {
         //        System.out.println("IGNORE " + (parent instanceof 
PageContextContainer || parent instanceof ContextCollector));
-        return new BasicBacking(pc, parent instanceof PageContextContainer || 
parent instanceof ContextCollector) {
-
-            @Override
-            public Object put(String key, Object value, boolean reset) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Putting in collector " + key + "=" + value + " 
" + parent);
-                }
-                //System.out.println("Putting in collector " + key + "=" + 
value + " " + parent + " " + myPageContextKeys);
-                try {
-                    assert parent != null;
-                    if (reset || myKeys.contains(key)) {
-                        parent.reregister(key, value);
-                        myKeys.add(key);
-                    } else {
-                        if (! parent.containsKey(key)) {
-                            myKeys.add(key);
-                            parent.register(key, value);
-                        } else {
-                            parent.register(key, value);
-                        }
-                    }
-                } catch (JspTagException jte) {
-                    throw new RuntimeException(jte);
-                }
-                boolean r = reset || myKeys.contains(key);
-                return super.put(key, value, r);
-            }
-        };
+        return new CollectorBacking(pc, parent);
     }
 
     @Override

Modified: 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/ContextTagTest.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/ContextTagTest.java
     2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/ContextTagTest.java
     2009-11-11 18:17:50 UTC (rev 39651)
@@ -40,9 +40,15 @@
             // ok
         }
         assertEquals("A", pageContext.getAttribute("a"));
+        assertEquals("A", tag.getObject("a"));
+
+        System.out.println("container impl: " + 
tag.getContextContainer().getClass().getName());
         tag.doAfterBody();
         tag.doEndTag();
+
+        assertEquals(null, pageContext.getAttribute("a"));
     }
 
 
+
 }

Modified: 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/StringListTagTest.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/StringListTagTest.java
  2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/StringListTagTest.java
  2009-11-11 18:17:50 UTC (rev 39651)
@@ -94,7 +94,7 @@
             assertEquals("bla" + index, pageContext.getAttribute("foo"));
             assertEquals("bla" + index, context.getObject("foo"));
             it = tag.doAfterBody();
-            assertEquals(null, pageContext.getAttribute("foo"));
+            assertEquals("bla" + index , pageContext.getAttribute("foo"));
         }
         tag.doEndTag();
 

Modified: 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/BasicBackingTest.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/BasicBackingTest.java
      2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/BasicBackingTest.java
      2009-11-11 18:17:50 UTC (rev 39651)
@@ -29,52 +29,6 @@
 
 
 
-    /**
-     * Tests a backing, using given pageContext.
-     */
-    static void basic(BasicBacking backing, PageContext pageContext) {
-
-        // - put something in.   (a -> A)
-        // - put something else in (b-> B)
-        // (the point is that one of those was already in the pageContext(.
-
-        backing.put("a", "A");
-        assertEquals("A", backing.get("a"));
-        if (pageContext != null) {
-            assertEquals("A", pageContext.getAttribute("a"));
-        }
-
-
-        backing.put("b", "B");
-
-        assertEquals("B", backing.get("b"));
-        if (pageContext != null) {
-            assertEquals("B", pageContext.getAttribute("b"));
-        }
-
-
-        backing.release();
-
-
-    }
-
-    static void reset(BasicBacking backing, PageContext pageContext) {
-        pageContext.setAttribute("a", "X");
-
-        backing.put("a", "A", true);
-        assertEquals("A", backing.get("a"));
-        assertEquals("A", pageContext.getAttribute("a"));
-
-        backing.put("a", "AA", true);
-        assertEquals("AA", backing.get("a"));
-        assertEquals("AA", pageContext.getAttribute("a"));
-
-        backing.release();
-
-        assertEquals("AA", pageContext.getAttribute("a"));
-
-    }
-
     @Test
     public void mirrorPut() {
         PageContext pageContext = new MockPageContext();
@@ -91,15 +45,15 @@
         assertEquals("B", pageContext.getAttribute("b"));
         assertEquals("C", pageContext.getAttribute("c"));
 
-        assertEquals("X",  backing.pageContextValues.get("a"));
-        assertEquals("B",  backing.pageContextValues.get("b"));
-        assertEquals("C",  backing.pageContextValues.get("c"));
+        assertEquals("X",  backing.originalPageContextValues.get("a"));
+        assertEquals("Y",  backing.originalPageContextValues.get("b"));
+        assertEquals(null,  backing.originalPageContextValues.get("c"));
 
         backing.release();
 
         assertEquals("X", pageContext.getAttribute("a"));
-        assertEquals("B", pageContext.getAttribute("b"));
-        assertEquals("C", pageContext.getAttribute("c"));
+        assertEquals("Y", pageContext.getAttribute("b"));
+        assertEquals(null, pageContext.getAttribute("c"));
 
 
     }
@@ -112,8 +66,31 @@
 
         PageContext pageContext = new MockPageContext();
         pageContext.setAttribute("a", "X");
-        basic(new BasicBacking(pageContext, false), pageContext);
-        assertEquals("B", pageContext.getAttribute("b"));  // should have the 
last value set in the backing
+
+
+        BasicBacking backing = new BasicBacking(pageContext, false);
+        // - put something in.   (a -> A)
+        // - put something else in (b-> B)
+        // (the point is that one of those was already in the pageContext(.
+
+        backing.put("a", "A");
+        assertEquals("A", backing.get("a"));
+        if (pageContext != null) {
+            assertEquals("A", pageContext.getAttribute("a"));
+        }
+
+
+        backing.put("b", "B");
+
+        assertEquals("B", backing.get("b"));
+        if (pageContext != null) {
+            assertEquals("B", pageContext.getAttribute("b"));
+        }
+
+
+        backing.release();
+
+        assertEquals(null, pageContext.getAttribute("b"));
         assertEquals("X", pageContext.getAttribute("a"));   // should have the 
original value
 
     }
@@ -126,50 +103,24 @@
 
         PageContext pageContext = new MockPageContext();
         pageContext.setAttribute("a", "X");
-        reset(new BasicBacking(pageContext, false), pageContext);
-        assertEquals("AA", pageContext.getAttribute("a")); // Since the value 
was _reset_ it should not have the original value, but the last value set in 
the backing.
-    }
 
-    @Test
-    public void basicCollector() throws Exception {
-        PageContext pageContext = new MockPageContext();
+        BasicBacking backing = new BasicBacking(pageContext, false);
+
         pageContext.setAttribute("a", "X");
-        ContextProvider parent = new MockContextProvider(pageContext);
 
-        ContextCollector collector = new ContextCollector(parent);
+        backing.put("a", "A", true);
+        assertEquals("A", backing.get("a"));
+        assertEquals("A", pageContext.getAttribute("a"));
 
-        basic(collector.createBacking(pageContext), pageContext);
+        backing.put("a", "AA", true);
+        assertEquals("AA", backing.get("a"));
+        assertEquals("AA", pageContext.getAttribute("a"));
 
-        collector.release(pageContext, parent.getContextContainer());
+        backing.release();
 
+        assertEquals("X", pageContext.getAttribute("a"));
 
-        // collectors are 'transparent' to parent
-        assertEquals("B",  parent.getContextContainer().get("b")); // should 
have the last value set in the backing
-
-        assertEquals("A",  parent.getContextContainer().get("a")); // should 
have the last value set in the backing
-        //
-        System.out.println("NOW releasing " +         
parent.getContextContainer());
-        parent.getContextContainer().release(pageContext, null);
-
-        assertEquals("B", pageContext.getAttribute("b"));
-        //        assertEquals("X",  pageContext.getAttribute("a")); // FAILS
-
-
     }
 
-    @Test
-    public void resetCollector() throws Exception {
-        PageContext pageContext = new MockPageContext();
-        pageContext.setAttribute("a", "X");
-        ContextProvider parent = new MockContextProvider(pageContext);
-        ContextCollector collector = new ContextCollector(parent);
-        reset(collector.createBacking(pageContext), pageContext);
-        assertEquals("AA",  parent.getContextContainer().get("a"));
-        assertEquals("AA",  pageContext.getAttribute("a"));
 
-    }
-
-
-
-
 }

Modified: 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/PageContextContainerTest.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/PageContextContainerTest.java
      2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/PageContextContainerTest.java
      2009-11-11 18:17:50 UTC (rev 39651)
@@ -56,7 +56,6 @@
         assertEquals("AA", pageContext.getAttribute("a"));
 
 
-
     }
 
 }

Modified: 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/StandaloneContextContainerTest.java
===================================================================
--- 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/StandaloneContextContainerTest.java
        2009-11-11 16:38:27 UTC (rev 39650)
+++ 
mmbase/trunk/applications/taglib/src/test/java/org/mmbase/bridge/jsp/taglib/util/StandaloneContextContainerTest.java
        2009-11-11 18:17:50 UTC (rev 39651)
@@ -34,17 +34,15 @@
     @Test
     public void basic() throws Exception {
 
-        PageContext pageContext1 = new MockPageContext();
-        PageContextContainer parent1 = new PageContextContainer(pageContext1);
+        PageContext pageContext = new MockPageContext();
 
-        PageContext pageContext2 = new MockPageContext();
-        PageContextContainer parent2 = new PageContextContainer(pageContext2);
+        PageContextContainer parent = new PageContextContainer(pageContext);
 
-        StandaloneContextContainer container = new 
StandaloneContextContainer(pageContext1, "test", parent1);
+        StandaloneContextContainer container = new 
StandaloneContextContainer(pageContext, "test", parent);
 
         container.register("a", "A");
         assertEquals("A", container.get("a"));
-        assertEquals("A", pageContext1.getAttribute("a"));
+        assertEquals("A", pageContext.getAttribute("a"));
         try {
             container.register("a", "AA");
             fail("Should throw exception");
@@ -57,20 +55,13 @@
         container.reregister("a", "AA");
 
         assertEquals("AA", container.get("a"));
-        assertEquals("AA", pageContext1.getAttribute("a"));
+        assertEquals("AA", pageContext.getAttribute("a"));
 
-        container.release(pageContext1, parent1);
-        container.setParent(pageContext2, parent2);
+        container.release(pageContext, null);
 
         assertEquals("AA", container.get("a"));
-        assertEquals("AA", pageContext2.getAttribute("a"));
-        assertEquals("AA", pageContext1.getAttribute("a")); // FAILS
+        assertEquals(null, pageContext.getAttribute("a"));
 
-
-
-
-
-
     }
 
 }

Modified: mmbase/trunk/applications/taglib/src/test/webapp/vars.jsp
===================================================================
--- mmbase/trunk/applications/taglib/src/test/webapp/vars.jsp   2009-11-11 
16:38:27 UTC (rev 39650)
+++ mmbase/trunk/applications/taglib/src/test/webapp/vars.jsp   2009-11-11 
18:17:50 UTC (rev 39651)
@@ -114,7 +114,8 @@
           <td>
             <c:catch var="e"><mm:stringlist referid="list"><mm:import 
id="af"><mm:index /></mm:import></mm:stringlist></c:catch>
             <jsp:text>${empty e ? '' : 'an exception,'}</jsp:text>
-            <mm:write referid="af" />
+            <c:catch var="e"><mm:write referid="af" /></c:catch>
+            <jsp:text>${empty e ? '' : 'an exception'}</jsp:text>
             <jsp:text>, ${af}</jsp:text>
           </td>
           <td>4, 4</td>
@@ -176,7 +177,8 @@
             <td>
               <c:catch var="e"><mm:stringlist referid="list"><mm:import 
id="bf"><mm:index /></mm:import></mm:stringlist></c:catch>
               <jsp:text>${empty e ? '' : 'an exception,'}</jsp:text>
-              <mm:write referid="bf" />
+              <c:catch var="e"><mm:write referid="bf" /></c:catch>
+              <jsp:text>${empty e ? '' : 'an exception'}</jsp:text>
               <jsp:text>, ${bf}</jsp:text>
             </td>
             <td>4, 4</td>
@@ -203,18 +205,18 @@
         <mm:stringlist referid="list" max="3">
           <mm:import id="ca" reset="true"><mm:write /></mm:import>
           <tr>
-            <td>c a</td>
+            <td>c a <mm:index /></td>
             <td><mm:write referid="ca" />, ${ca}</td>
             <td><mm:index />, <mm:index /></td>
           </tr>
           <mm:import id="cb"><mm:write /></mm:import>
           <tr>
-            <td>c b</td>
+            <td>c b <mm:index /></td>
             <td><mm:write referid="cb" />, ${cb}</td>
             <td><mm:index />, <mm:index /></td>
           </tr>
           <tr>
-            <td>c c</td>
+            <td>c c <mm:index /></td>
             <td>
               <c:catch var="e"><mm:import id="cc"><mm:write 
/></mm:import></c:catch>
               <jsp:text>${empty e ? '' : 'an exception, '}</jsp:text>
@@ -230,7 +232,7 @@
           </tr>
           <mm:first>
             <tr>
-              <td>c d</td>
+              <td>c d <mm:index /></td>
               <td>
                 <c:catch var="e"><mm:import id="cd"><mm:write 
/></mm:import></c:catch>
                 <jsp:text>${empty e ? '' : 'an exception, '}</jsp:text>
@@ -241,7 +243,7 @@
             </tr>
           </mm:first>
           <tr>
-            <td>c f</td>
+            <td>c f <mm:index /></td>
             <td>
               <mm:import id="cf"><mm:write /></mm:import>
               <mm:write referid="cf" />
@@ -254,10 +256,10 @@
             <td><mm:index />, <mm:index />, an exception, </td>
           </tr>
         </mm:stringlist>
-        <tr><td>c a</td><td><mm:write referid="ca" />, ${ca}</td><td>3, 
3</td></tr>
-        <tr><td>c b</td><td><mm:write referid="cb" />, ${cb}</td><td>3, 
3</td><td><a 
href="http://www.mmbase.org/jira/browse/MMB-1702";>MMB-1702</a></td></tr>
-        <tr><td>c c</td><td><mm:write referid="cc" />, ${cc}</td><td>C, 
C</td><td>3,3 in MMBase 1.8 (See remarks about exception in first 
iteration)</td></tr>
-        <tr><td>c d</td><td><mm:write referid="cd" />, ${cd}</td><td>D, 
D</td></tr>
+        <tr><td>c a</td><td><c:catch><mm:write referid="ca" /></c:catch>, 
${ca}</td><td>3, 3</td></tr>
+        <tr><td>c b</td><td><c:catch><mm:write referid="cb" /></c:catch>, 
${cb}</td><td>3, 3</td><td><a 
href="http://www.mmbase.org/jira/browse/MMB-1702";>MMB-1702</a></td></tr>
+        <tr><td>c c</td><td><c:catch><mm:write referid="cc" /></c:catch>, 
${cc}</td><td>C, C</td><td>3,3 in MMBase 1.8 (See remarks about exception in 
first iteration)</td></tr>
+        <tr><td>c d</td><td><c:catch><mm:write referid="cd" /></c:catch>, 
${cd}</td><td>D, D</td></tr>
         <tr>
           <td>c f</td>
           <td>
@@ -281,18 +283,18 @@
           <mm:stringlist referid="list" max="3">
             <mm:import id="da" reset="true"><mm:write /></mm:import>
             <tr>
-              <td>d a</td>
+              <td>d a <mm:index /></td>
               <td><mm:write referid="da" />, ${da}</td>
               <td><mm:index />, <mm:index /></td>
             </tr>
             <mm:import id="db"><mm:write /></mm:import>
             <tr>
-              <td>d b</td>
+              <td>d b <mm:index /></td>
               <td><mm:write referid="db" />, ${db}</td>
               <td><mm:index />, <mm:index /></td>
             </tr>
             <tr>
-              <td>d c</td>
+              <td>d c <mm:index /></td>
               <td>
                 <c:catch var="e"><mm:import id="dc"><mm:write 
/></mm:import></c:catch>
                 <jsp:text>${empty e ? '' : 'an exception, '}</jsp:text>
@@ -308,7 +310,7 @@
             </tr>
             <mm:first>
               <tr>
-                <td>d d</td>
+                <td>d d <mm:index /></td>
                 <td>
                   <c:catch var="e"><mm:import id="dd"><mm:write 
/></mm:import></c:catch>
                   <jsp:text>${empty e ? '' : 'an exception, '}</jsp:text>
@@ -318,7 +320,7 @@
                 <td>an exception, D, D</td>
               </tr>
               <tr>
-                <td>d e</td>
+                <td>d e <mm:index /></td>
                 <td>
                   <c:catch var="e">
                     <mm:write write="false" id="de" value="EE" reset="true" />
@@ -332,11 +334,11 @@
               </tr>
             </mm:first>
           </mm:stringlist>
-          <tr><td>d a</td><td><mm:write referid="da" />, <mm:write 
referid="test2.da" />, ${da}</td><td>3, 3, 3</td><td>3,1 in MMBase 1.8 
(Fail)</td></tr>
-          <tr><td>d b</td><td><mm:write referid="db" />, ${db}</td><td>3, 
3</td><td>3,1 in MMBase 1.8 (Fail)</td></tr>
-          <tr><td>d c</td><td><mm:write referid="dc" />, ${dc}</td><td>C, 
C</td><td>3,2 in MMBase 1.8 (Fail)</td></tr>
-          <tr><td>d d</td><td><mm:write referid="dd" />, ${dd}</td><td>D, 
D</td></tr>
-          <tr><td>d e</td><td><mm:write referid="de" />, ${de}</td><td>EE, 
EE</td><td>reset=true not supported in 1.8 (so fails)</td></tr>
+          <tr><td>d a</td><td><c:catch><mm:write referid="da" /></c:catch>, 
<c:catch><mm:write referid="test2.da" /></c:catch>, ${da}</td><td>3, 3, 
3</td><td>3,1 in MMBase 1.8 (Fail)</td></tr>
+          <tr><td>d b</td><td><c:catch><mm:write referid="db" /></c:catch>, 
${db}</td><td>3, 3</td><td>3,1 in MMBase 1.8 (Fail)</td></tr>
+          <tr><td>d c</td><td><c:catch><mm:write referid="dc" /></c:catch>, 
${dc}</td><td>C, C</td><td>3,2 in MMBase 1.8 (Fail)</td></tr>
+          <tr><td>d d</td><td><c:catch><mm:write referid="dd" /></c:catch>, 
${dd}</td><td>D, D</td></tr>
+          <tr><td>d e</td><td><c:catch><mm:write referid="de" /></c:catch>, 
${de}</td><td>EE, EE</td><td>reset=true not supported in 1.8 (so 
fails)</td></tr>
         </table>
       </mm:context>
 

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to