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