You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2005/10/26 18:45:28 UTC
svn commit: r328669 [2/2] - in /jakarta/tapestry/trunk: ./
framework/src/documentation/content/xdocs/tapestry/ComponentReference/
framework/src/java/org/apache/tapestry/components/
framework/src/java/org/apache/tapestry/engine/ framework/src/java/org/a...
Copied: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormSupportTest.java (from r328435, jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestFormSupport.java)
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormSupportTest.java?p2=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormSupportTest.java&p1=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestFormSupport.java&r1=328435&r2=328669&rev=328669&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestFormSupport.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormSupportTest.java Wed Oct 26 09:44:54 2005
@@ -16,9 +16,10 @@
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
-import org.apache.hivemind.test.HiveMindTestCase;
import org.apache.hivemind.util.ClasspathResource;
+import org.apache.tapestry.BaseComponentTestCase;
import org.apache.tapestry.IEngine;
+import org.apache.tapestry.IForm;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRender;
import org.apache.tapestry.IRequestCycle;
@@ -27,7 +28,6 @@
import org.apache.tapestry.StaleLinkException;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.valid.IValidationDelegate;
-import org.easymock.MockControl;
/**
* Tests for {@link org.apache.tapestry.form.FormSupportImpl}.
@@ -35,7 +35,7 @@
* @author Howard M. Lewis Ship
* @since 4.0
*/
-public class TestFormSupport extends HiveMindTestCase
+public class FormSupportTest extends BaseComponentTestCase
{
private IRender newComponentRenderBody(final FormSupport fs, final IFormComponent component,
@@ -62,11 +62,10 @@
private IFormComponent newFormComponent(String id, String name)
{
- MockControl componentc = newControl(IFormComponent.class);
- final IFormComponent component = (IFormComponent) componentc.getMock();
+ IFormComponent component = (IFormComponent) newMock(IFormComponent.class);
component.getId();
- componentc.setReturnValue(id);
+ setReturnValue(component, id);
component.setName(name);
@@ -75,17 +74,16 @@
private IFormComponent newFormComponent(String id, String extendedId, Location location)
{
- MockControl componentc = newControl(IFormComponent.class);
- final IFormComponent component = (IFormComponent) componentc.getMock();
+ IFormComponent component = (IFormComponent) newMock(IFormComponent.class);
component.getId();
- componentc.setReturnValue(id);
+ setReturnValue(component, id);
component.getExtendedId();
- componentc.setReturnValue(extendedId);
+ setReturnValue(component, extendedId);
component.getLocation();
- componentc.setReturnValue(location);
+ setReturnValue(component, location);
return component;
}
@@ -95,47 +93,25 @@
return (IValidationDelegate) newMock(IValidationDelegate.class);
}
- private IMarkupWriter newWriter()
- {
- return (IMarkupWriter) newMock(IMarkupWriter.class);
- }
-
- private NestedMarkupWriter newNestedWriter()
- {
- return (NestedMarkupWriter) newMock(NestedMarkupWriter.class);
- }
-
public void testComplexRender()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
+ PageRenderSupport support = newPageRenderSupport();
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -152,26 +128,16 @@
form.setBody(body);
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
-
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -185,19 +151,19 @@
writer.println();
writer.begin("div");
-
+
trainHidden(writer, "formids", "barney,wilma,barney_0");
trainHidden(writer, "service", "fred");
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
- trainGetFocusField(delegatec, delegate, "wilma");
- trainGetFieldFocus(cyclec, cycle, null);
+ trainGetFocusField(delegate, "wilma");
+ trainGetFieldFocus(cycle, null);
trainFocus(support);
@@ -205,11 +171,22 @@
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
+ protected void trainIsRewound(IRequestCycle cycle, IForm form, boolean isRewound)
+ {
+ cycle.isRewound(form);
+ setReturnValue(cycle, isRewound);
+ }
+
+ protected IEngine newEngine()
+ {
+ return (IEngine) newMock(IEngine.class);
+ }
+
private void trainRegister(PageRenderSupport support)
{
support.addExternalScript(new ClasspathResource(getClassResolver(),
@@ -228,50 +205,29 @@
cycle.setAttribute(FormSupportImpl.FIELD_FOCUS_ATTRIBUTE, Boolean.TRUE);
}
- private void trainGetFieldFocus(MockControl control, IRequestCycle cycle, Object value)
+ private void trainGetFieldFocus(IRequestCycle cycle, Object value)
{
cycle.getAttribute(FormSupportImpl.FIELD_FOCUS_ATTRIBUTE);
- control.setReturnValue(value);
+ setReturnValue(cycle, value);
}
- private void trainGetPageRenderSupport(MockControl control, IRequestCycle cycle,
- PageRenderSupport support)
- {
- cycle.getAttribute("org.apache.tapestry.PageRenderSupport");
- control.setReturnValue(support);
- }
-
- private void trainGetFocusField(MockControl control, IValidationDelegate delegate,
- String fieldName)
+ private void trainGetFocusField(IValidationDelegate delegate, String fieldName)
{
delegate.getFocusField();
- control.setReturnValue(fieldName);
+ setReturnValue(delegate, fieldName);
}
public void testComplexRewind()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
IValidationDelegate delegate = newDelegate();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
+ IEngine engine = newEngine(getClassResolver());
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
-
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainIsRewound(cycle, form, true);
+ trainGetEngine(cycle, engine);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -281,7 +237,7 @@
delegate.clear();
- trainCycleForRewind(cyclec, cycle, "barney,wilma,barney_0", null);
+ trainCycleForRewind(cycle, "barney,wilma,barney_0", null);
final IFormComponent barney1 = newFormComponent("barney", "barney");
final IFormComponent wilma = newFormComponent("wilma", "wilma");
@@ -301,35 +257,20 @@
public void testComplexSubmitEventHandler()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ PageRenderSupport support = newPageRenderSupport();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
-
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
-
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainIsRewound(cycle, form, false);
+ trainGetEngine(cycle, engine);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -347,26 +288,17 @@
}
});
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -380,13 +312,13 @@
writer.println();
writer.begin("div");
-
+
trainHidden(writer, "formids", "");
trainHidden(writer, "service", "fred");
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
@@ -396,46 +328,40 @@
// Side test: what if no focus field?
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
- public void testEncodingType()
+ private void trainGetURL(ILink link, String scheme, String URL)
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
- NestedMarkupWriter nested = newNestedWriter();
+ // This will change shortly, with the new scheme parameter passed into FormSupport.render()
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
+ link.getURL(scheme, null, 0, null, false);
+ setReturnValue(link, URL);
+ }
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ public void testEncodingType()
+ {
+ IMarkupWriter writer = newWriter();
+ NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ PageRenderSupport support = newPageRenderSupport();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
-
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainIsRewound(cycle, form, false);
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
-
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -451,26 +377,17 @@
}
});
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -484,57 +401,44 @@
writer.println();
writer.begin("div");
-
+
trainHidden(writer, "formids", "");
trainHidden(writer, "service", "fred");
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
public void testHiddenValues()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ PageRenderSupport support = newPageRenderSupport();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
-
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -551,26 +455,17 @@
}
});
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -592,48 +487,38 @@
trainHidden(writer, "hidden2", "id2", "value2");
writer.end();
-
+
nested.close();
writer.end();
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
public void testInvalidEncodingType()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ PageRenderSupport support = newPageRenderSupport();
+ ILink link = newLink();
+ IRender render = newRender();
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockForm form = new MockForm(newDelegate());
-
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ MockForm form = new MockForm(delegate);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainIsRewound(cycle, form, false);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
+ trainGetEngine(cycle, engine);
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -650,29 +535,21 @@
}
});
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
replayControls();
try
{
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
unreachable();
}
catch (ApplicationRuntimeException ex)
@@ -688,35 +565,22 @@
public void testRenderExtraReservedIds()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ PageRenderSupport support = newPageRenderSupport();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
-
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -730,26 +594,17 @@
form.setBody(body);
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "action" });
- link.getParameterValues("action");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "action", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -763,58 +618,45 @@
writer.println();
writer.begin("div");
-
+
trainHidden(writer, "formids", "action_0");
trainHidden(writer, "action", "fred");
trainHidden(writer, "reservedids", "action");
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
public void testResetEventHandler()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ PageRenderSupport support = newPageRenderSupport();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
-
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -831,26 +673,17 @@
}
});
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -870,7 +703,7 @@
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
@@ -878,11 +711,11 @@
support
.addInitializationScript("Tapestry.onreset('myform', function (event)\n{\n myReset1();\n myReset2();\n});\n");
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
@@ -890,26 +723,18 @@
public void testRewindExtraReservedIds()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
+ NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
IValidationDelegate delegate = newDelegate();
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, true);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -919,7 +744,7 @@
delegate.clear();
- trainCycleForRewind(cyclec, cycle, "action_0", "action");
+ trainCycleForRewind(cycle, "action_0", "action");
final IFormComponent component = newFormComponent("action", "action_0");
@@ -936,29 +761,16 @@
public void testRewindMismatch()
{
-
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
IValidationDelegate delegate = newDelegate();
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
-
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainIsRewound(cycle, form, true);
+ trainGetEngine(cycle, engine);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -974,7 +786,7 @@
// some kind of conditional that evaluated to true during the render,
// but is now false on the rewind.
- trainCycleForRewind(cyclec, cycle, "barney,wilma,pebbles,barney_0", null);
+ trainCycleForRewind(cycle, "barney,wilma,pebbles,barney_0", null);
final IFormComponent barney1 = newFormComponent("barney", "barney");
final IFormComponent wilma = newFormComponent("wilma", "wilma");
@@ -1007,27 +819,15 @@
public void testRewindTooLong()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
IValidationDelegate delegate = newDelegate();
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
-
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainIsRewound(cycle, form, true);
+ trainGetEngine(cycle, engine);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -1043,7 +843,7 @@
// some kind of loop that executed once on the render, but twice
// on the rewind (i.e., an additional object was added in between).
- trainCycleForRewind(cyclec, cycle, "barney,wilma", null);
+ trainCycleForRewind(cycle, "barney,wilma", null);
final IFormComponent barney1 = newFormComponent("barney", "barney");
final IFormComponent wilma = newFormComponent("wilma", "wilma");
@@ -1077,27 +877,15 @@
{
Location l = newLocation();
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
IValidationDelegate delegate = newDelegate();
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
MockForm form = new MockForm(delegate, l);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
-
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainIsRewound(cycle, form, true);
+ trainGetEngine(cycle, engine);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -1111,7 +899,7 @@
// some kind of loop that executed twice on the render, but only once
// on the rewind (i.e., the object was deleted in between).
- trainCycleForRewind(cyclec, cycle, "barney,wilma,barney$0", null);
+ trainCycleForRewind(cycle, "barney,wilma,barney$0", null);
final IFormComponent barney1 = newFormComponent("barney", "barney");
final IFormComponent wilma = newFormComponent("wilma", "wilma");
@@ -1142,35 +930,23 @@
public void testSimpleRender()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
+ PageRenderSupport support = newPageRenderSupport();
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -1184,26 +960,16 @@
form.setBody(body);
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
-
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -1223,55 +989,122 @@
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
- trainGetFocusField(delegatec, delegate, "barney");
+ trainGetFocusField(delegate, "barney");
// Side test: check for another form already grabbing focus
- trainGetFieldFocus(cyclec, cycle, Boolean.TRUE);
+ trainGetFieldFocus(cycle, Boolean.TRUE);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
- public void testSimpleRenderWithDeferredRunnable()
+ public void testSimpleRenderWithScheme()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ ILink link = newLink();
+ IRender render = newRender();
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
+ MockForm form = new MockForm(delegate);
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
+ trainIsRewound(cycle, form, false);
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ trainGetEngine(cycle, engine);
- MockForm form = new MockForm(delegate);
+ PageRenderSupport support = newPageRenderSupport();
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
+ trainGetPageRenderSupport(cycle, support);
+
+ replayControls();
+
+ final FormSupport fs = new FormSupportImpl(writer, cycle, form);
+
+ verifyControls();
+
+ final IFormComponent component = newFormComponent("barney", "barney");
+
+ IRender body = newComponentRenderBody(fs, component, nested);
+
+ form.setBody(body);
+
+ trainRegister(support);
+
+ trainGetParameterNames(link, new String[]
+ { "service" });
+ trainGetParameterValues(link, "service", new String[]
+ { "fred" });
+
+ trainGetNestedWriter(writer, nested);
+
+ trainGetURL(link, "https", "https://foo.bar/app");
+
+ writer.begin("form");
+ writer.attribute("method", "post");
+ writer.attribute("action", "https://foo.bar/app");
+
+ writer.attribute("name", "myform");
+ writer.attribute("id", "myform");
+
+ render.render(writer, cycle);
+
+ writer.println();
+
+ writer.begin("div");
+
+ trainHidden(writer, "formids", "barney");
+ trainHidden(writer, "service", "fred");
+ trainHidden(writer, "submitmode", "");
+
+ writer.end();
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ nested.close();
+
+ writer.end();
+
+ trainGetFocusField(delegate, "barney");
+
+ // Side test: check for another form already grabbing focus
+
+ trainGetFieldFocus(cycle, Boolean.TRUE);
+
+ replayControls();
+
+ fs.render("post", render, link, "https");
+
+ verifyControls();
+ }
+
+ public void testSimpleRenderWithDeferredRunnable()
+ {
+ IMarkupWriter writer = newWriter();
+ NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ ILink link = newLink();
+ IRender render = newRender();
+
+ MockForm form = new MockForm(delegate);
+
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
+ PageRenderSupport support = newPageRenderSupport();
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -1299,26 +1132,16 @@
form.setBody(body);
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
-
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -1338,7 +1161,7 @@
trainHidden(writer, "submitmode", "");
writer.end();
-
+
// EasyMock can't fully verify that this gets called at the right moment, nor can we truly
// prove (well, except by looking at the code), that the deferred runnables execute at the
// right time.
@@ -1349,11 +1172,11 @@
writer.end();
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
@@ -1361,27 +1184,16 @@
public void testSimpleRewind()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
IValidationDelegate delegate = newDelegate();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
+ IEngine engine = newEngine(getClassResolver());
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, true);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -1391,7 +1203,7 @@
delegate.clear();
- trainCycleForRewind(cyclec, cycle, "barney", null);
+ trainCycleForRewind(cycle, "barney", null);
final IFormComponent component = newFormComponent("barney", "barney");
@@ -1409,27 +1221,16 @@
public void testRefreshRewind()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
IValidationDelegate delegate = newDelegate();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
+ IEngine engine = newEngine(getClassResolver());
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
+ trainIsRewound(cycle, form, true);
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainGetEngine(cycle, engine);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -1439,7 +1240,7 @@
delegate.clear();
- trainCycleForRewind(cyclec, cycle, "refresh", "barney", null);
+ trainCycleForRewind(cycle, "refresh", "barney", null);
final IFormComponent component = newFormComponent("barney", "barney");
@@ -1457,27 +1258,16 @@
public void testCancelRewind()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
IValidationDelegate delegate = newDelegate();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
+ IEngine engine = newEngine(getClassResolver());
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
+ trainIsRewound(cycle, form, true);
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainGetEngine(cycle, engine);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
-
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -1487,7 +1277,7 @@
delegate.clear();
- trainGetParameter(cyclec, cycle, FormSupportImpl.SUBMIT_MODE, "cancel");
+ trainGetParameter(cycle, FormSupportImpl.SUBMIT_MODE, "cancel");
// Create a body, just to provie it doesn't get invoked.
@@ -1505,27 +1295,16 @@
public void testSimpleRewindWithDeferredRunnable()
{
IMarkupWriter writer = newWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
+ IRequestCycle cycle = newCycle();
IValidationDelegate delegate = newDelegate();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
+ IEngine engine = newEngine(getClassResolver());
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(true);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, true);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- trainGetPageRenderSupport(cyclec, cycle, null);
+ trainGetPageRenderSupport(cycle, null);
replayControls();
@@ -1535,7 +1314,7 @@
delegate.clear();
- trainCycleForRewind(cyclec, cycle, "", null);
+ trainCycleForRewind(cycle, "", null);
writer.print("DEFERRED");
@@ -1567,35 +1346,23 @@
public void testSimpleSubmitEventHandler()
{
- MockControl writerc = newControl(IMarkupWriter.class);
- IMarkupWriter writer = (IMarkupWriter) writerc.getMock();
-
+ IMarkupWriter writer = newWriter();
NestedMarkupWriter nested = newNestedWriter();
-
- MockControl cyclec = newControl(IRequestCycle.class);
- IRequestCycle cycle = (IRequestCycle) cyclec.getMock();
-
- MockControl enginec = newControl(IEngine.class);
- IEngine engine = (IEngine) enginec.getMock();
-
- MockControl delegatec = newControl(IValidationDelegate.class);
- IValidationDelegate delegate = (IValidationDelegate) delegatec.getMock();
+ IRequestCycle cycle = newCycle();
+ IEngine engine = newEngine(getClassResolver());
+ IValidationDelegate delegate = newDelegate();
+ ILink link = newLink();
+ IRender render = newRender();
MockForm form = new MockForm(delegate);
- cycle.isRewound(form);
- cyclec.setReturnValue(false);
-
- cycle.getEngine();
- cyclec.setReturnValue(engine);
+ trainIsRewound(cycle, form, false);
- engine.getClassResolver();
- enginec.setReturnValue(getClassResolver());
+ trainGetEngine(cycle, engine);
- MockControl supportc = newControl(PageRenderSupport.class);
- PageRenderSupport support = (PageRenderSupport) supportc.getMock();
+ PageRenderSupport support = newPageRenderSupport();
- trainGetPageRenderSupport(cyclec, cycle, support);
+ trainGetPageRenderSupport(cycle, support);
replayControls();
@@ -1611,26 +1378,16 @@
}
});
- MockControl linkc = newControl(ILink.class);
- ILink link = (ILink) linkc.getMock();
-
- IRender render = (IRender) newMock(IRender.class);
-
trainRegister(support);
- link.getParameterNames();
- linkc.setReturnValue(new String[]
+ trainGetParameterNames(link, new String[]
{ "service" });
-
- link.getParameterValues("service");
- linkc.setReturnValue(new String[]
+ trainGetParameterValues(link, "service", new String[]
{ "fred" });
- writer.getNestedWriter();
- writerc.setReturnValue(nested);
+ trainGetNestedWriter(writer, nested);
- link.getURL(null, false);
- linkc.setReturnValue("/app");
+ trainGetURL(link, null, "/app");
writer.begin("form");
writer.attribute("method", "post");
@@ -1650,7 +1407,7 @@
trainHidden(writer, "submitmode", "");
writer.end();
-
+
nested.close();
writer.end();
@@ -1658,34 +1415,26 @@
support
.addInitializationScript("Tapestry.onsubmit('myform', function (event)\n{\n mySubmit();\n});\n");
- trainGetFocusField(delegatec, delegate, null);
+ trainGetFocusField(delegate, null);
replayControls();
- fs.render("post", render, link);
+ fs.render("post", render, link, null);
verifyControls();
}
- private void trainCycleForRewind(MockControl cyclec, IRequestCycle cycle, String allocatedIds,
- String reservedIds)
- {
- trainCycleForRewind(cyclec, cycle, "submit", allocatedIds, reservedIds);
- }
-
- private void trainCycleForRewind(MockControl cyclec, IRequestCycle cycle, String submitMode,
- String allocatedIds, String reservedIds)
+ private void trainCycleForRewind(IRequestCycle cycle, String allocatedIds, String reservedIds)
{
- trainGetParameter(cyclec, cycle, FormSupportImpl.SUBMIT_MODE, submitMode);
- trainGetParameter(cyclec, cycle, FormSupportImpl.FORM_IDS, allocatedIds);
- trainGetParameter(cyclec, cycle, FormSupportImpl.RESERVED_FORM_IDS, reservedIds);
+ trainCycleForRewind(cycle, "submit", allocatedIds, reservedIds);
}
- private void trainGetParameter(MockControl cyclec, IRequestCycle cycle, String parameterName,
- String value)
+ private void trainCycleForRewind(IRequestCycle cycle, String submitMode, String allocatedIds,
+ String reservedIds)
{
- cycle.getParameter(parameterName);
- cyclec.setReturnValue(value);
+ trainGetParameter(cycle, FormSupportImpl.SUBMIT_MODE, submitMode);
+ trainGetParameter(cycle, FormSupportImpl.FORM_IDS, allocatedIds);
+ trainGetParameter(cycle, FormSupportImpl.RESERVED_FORM_IDS, reservedIds);
}
private void trainHidden(IMarkupWriter writer, String name, String value)
Copied: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormTest.java (from r328435, jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestForm.java)
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormTest.java?p2=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormTest.java&p1=jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestForm.java&r1=328435&r2=328669&rev=328669&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestForm.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/FormTest.java Wed Oct 26 09:44:54 2005
@@ -14,9 +14,23 @@
package org.apache.tapestry.form;
+import org.apache.hivemind.test.AggregateArgumentsMatcher;
+import org.apache.hivemind.test.ArgumentMatcher;
import org.apache.tapestry.BaseComponentTestCase;
import org.apache.tapestry.IActionListener;
+import org.apache.tapestry.IForm;
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRender;
+import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.IgnoreMatcher;
+import org.apache.tapestry.RenderRewoundException;
+import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.engine.DirectServiceParameter;
+import org.apache.tapestry.engine.IEngineService;
+import org.apache.tapestry.engine.ILink;
+import org.apache.tapestry.listener.ListenerInvoker;
import org.apache.tapestry.valid.IValidationDelegate;
+import org.apache.tapestry.web.WebResponse;
import org.easymock.MockControl;
/**
@@ -26,11 +40,209 @@
* @author Howard Lewis Ship
* @since 4.0
*/
-public class TestForm extends BaseComponentTestCase
+public class FormTest extends BaseComponentTestCase
{
private IActionListener newListener()
{
return (IActionListener) newMock(IActionListener.class);
+ }
+
+ private FormSupport newFormSupport()
+ {
+ return (FormSupport) newMock(FormSupport.class);
+ }
+
+ protected void trainGetNextActionId(IRequestCycle cycle, String actionId)
+ {
+ cycle.getNextActionId();
+ setReturnValue(cycle, actionId);
+ }
+
+ protected void trainGetUniqueId(IRequestCycle cycle, String baseId, String uniqueId)
+ {
+ cycle.getUniqueId(baseId);
+
+ setReturnValue(cycle, uniqueId);
+ }
+
+ protected WebResponse newResponse()
+ {
+ return (WebResponse) newMock(WebResponse.class);
+ }
+
+ protected void trainGetNamespace(WebResponse response, String namespace)
+ {
+ response.getNamespace();
+ setReturnValue(response, namespace);
+ }
+
+ protected IValidationDelegate newDelegate()
+ {
+ return (IValidationDelegate) newMock(IValidationDelegate.class);
+ }
+
+ public void testRewind()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ FormSupport support = newFormSupport();
+ IValidationDelegate delegate = newDelegate();
+ IActionListener listener = newListener();
+ ListenerInvoker invoker = newListenerInvoker();
+
+ Form form = (Form) newInstance(FormFixture.class, new Object[]
+ { "id", "myform", "direct", true, "expectedWriter", writer, "expectedRequestCycle", cycle,
+ "formSupport", support, "listener", listener, "listenerInvoker", invoker,
+ "delegate", delegate });
+
+ trainStoreForm(cycle, form);
+
+ trainIsRewinding(support, true);
+
+ trainGetNextActionId(cycle, "7");
+
+ support.rewind();
+ setReturnValue(support, FormConstants.SUBMIT_NORMAL);
+
+ delegate.getHasErrors();
+ setReturnValue(delegate, false);
+
+ invoker.invokeListener(listener, form, cycle);
+
+ delegate.setFormComponent(null);
+
+ TapestryUtils.removeForm(cycle);
+
+ replayControls();
+
+ try
+ {
+ form.render(writer, cycle);
+ }
+ catch (RenderRewoundException ex)
+ {
+ assertSame(form, ex.getComponent());
+ }
+
+ verifyControls();
+ }
+
+ private ListenerInvoker newListenerInvoker()
+ {
+ return (ListenerInvoker) newMock(ListenerInvoker.class);
+ }
+
+ public void testBasicRender()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ FormSupport support = newFormSupport();
+ WebResponse response = newResponse();
+ IEngineService direct = newEngineService();
+ ILink link = newLink();
+ IRender render = newRender();
+ IValidationDelegate delegate = newDelegate();
+
+ Form form = (Form) newInstance(FormFixture.class, new Object[]
+ { "id", "myform", "direct", true, "expectedWriter", writer, "expectedRequestCycle", cycle,
+ "formSupport", support, "response", response, "directService", direct, "method",
+ "post", "delegate", delegate });
+
+ trainStoreForm(cycle, form);
+
+ trainIsRewinding(support, false);
+
+ trainGetNextActionId(cycle, "7");
+
+ trainGetUniqueId(cycle, "myform", "myform_1");
+
+ trainGetNamespace(response, "$ns");
+
+ trainGetLinkCheckIgnoreParameter(
+ direct,
+ cycle,
+ true,
+ new DirectServiceParameter(form),
+ link);
+
+ trainRender(support, link, render, null);
+
+ delegate.setFormComponent(null);
+
+ TapestryUtils.removeForm(cycle);
+
+ replayControls();
+
+ form.render(writer, cycle);
+
+ verifyControls();
+ }
+
+ public void testRenderWithScheme()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ FormSupport support = newFormSupport();
+ WebResponse response = newResponse();
+ IEngineService direct = newEngineService();
+ ILink link = newLink();
+ IRender render = newRender();
+ IValidationDelegate delegate = newDelegate();
+
+ Form form = (Form) newInstance(FormFixture.class, new Object[]
+ { "id", "myform", "direct", true, "expectedWriter", writer, "expectedRequestCycle", cycle,
+ "formSupport", support, "response", response, "directService", direct, "method",
+ "post", "delegate", delegate, "scheme", "https" });
+
+ trainStoreForm(cycle, form);
+
+ trainIsRewinding(support, false);
+
+ trainGetNextActionId(cycle, "7");
+
+ trainGetUniqueId(cycle, "myform", "myform_1");
+
+ trainGetNamespace(response, "$ns");
+
+ trainGetLinkCheckIgnoreParameter(
+ direct,
+ cycle,
+ true,
+ new DirectServiceParameter(form),
+ link);
+
+ trainRender(support, link, render, "https");
+
+ delegate.setFormComponent(null);
+
+ TapestryUtils.removeForm(cycle);
+
+ replayControls();
+
+ form.render(writer, cycle);
+
+ verifyControls();
+ }
+
+ protected void trainStoreForm(IRequestCycle cycle, IForm form)
+ {
+ trainGetAttribute(cycle, TapestryUtils.FORM_ATTRIBUTE, null);
+
+ cycle.setAttribute(TapestryUtils.FORM_ATTRIBUTE, form);
+ }
+
+ private void trainRender(FormSupport support, ILink link, IRender render, String scheme)
+ {
+ support.render("post", render, link, scheme);
+ getControl(support).setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[]
+ { null, new IgnoreMatcher(), null, null }));
+ }
+
+ protected void trainIsRewinding(FormSupport support, boolean isRewinding)
+ {
+
+ support.isRewinding();
+ setReturnValue(support, isRewinding);
}
public void testFindCancelListener()
Modified: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java?rev=328669&r1=328668&r2=328669&view=diff
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java (original)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/MockForm.java Wed Oct 26 09:44:54 2005
@@ -39,7 +39,7 @@
import org.apache.tapestry.valid.IValidationDelegate;
/**
- * Mock object used by the {@link org.apache.tapestry.form.TestFormSupport}.
+ * Mock object used by the {@link org.apache.tapestry.form.FormSupportTest}.
*
* @author Howard M. Lewis Ship
* @since 4.0
Added: jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/link/DefaultLinkRendererTest.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/link/DefaultLinkRendererTest.java?rev=328669&view=auto
==============================================================================
--- jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/link/DefaultLinkRendererTest.java (added)
+++ jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/link/DefaultLinkRendererTest.java Wed Oct 26 09:44:54 2005
@@ -0,0 +1,437 @@
+// Copyright 2005 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.link;
+
+import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.Location;
+import org.apache.tapestry.BaseComponentTestCase;
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.NestedMarkupWriter;
+import org.apache.tapestry.Tapestry;
+import org.apache.tapestry.components.ILinkComponent;
+import org.apache.tapestry.engine.ILink;
+
+/**
+ * Tests for {@link org.apache.tapestry.link.DefaultLinkRenderer}.
+ *
+ * @author Howard M. Lewis Ship
+ * @since 4.0
+ */
+public class DefaultLinkRendererTest extends BaseComponentTestCase
+{
+ class RendererFixture extends DefaultLinkRenderer
+ {
+ private IMarkupWriter _writer;
+
+ private IRequestCycle _cycle;
+
+ private ILinkComponent _component;
+
+ private String _element;
+
+ private boolean _hasBody;
+
+ private String _targetAttribute;
+
+ private String _urlAttribute;
+
+ public RendererFixture(IMarkupWriter writer, IRequestCycle cycle, ILinkComponent component,
+ String element, boolean body, String targetAttribute, String urlAttribute)
+ {
+ _writer = writer;
+ _cycle = cycle;
+ _component = component;
+ _element = element;
+ _hasBody = body;
+ _targetAttribute = targetAttribute;
+ _urlAttribute = urlAttribute;
+ }
+
+ @Override
+ protected void afterBodyRender(IMarkupWriter writer, IRequestCycle cycle,
+ ILinkComponent link)
+ {
+ assertSame(_writer, writer);
+ assertSame(_cycle, cycle);
+ assertSame(_component, link);
+
+ writer.print("AFTER-BODY-RENDER");
+ }
+
+ @Override
+ protected void beforeBodyRender(IMarkupWriter writer, IRequestCycle cycle,
+ ILinkComponent link)
+ {
+ assertSame(_writer, writer);
+ assertSame(_cycle, cycle);
+ assertSame(_component, link);
+
+ writer.print("BEFORE-BODY-RENDER");
+ }
+
+ @Override
+ protected String getElement()
+ {
+ return _element;
+ }
+
+ @Override
+ protected boolean getHasBody()
+ {
+ // TODO Auto-generated method stub
+ return _hasBody;
+ }
+
+ @Override
+ protected String getTargetAttribute()
+ {
+
+ return _targetAttribute;
+ }
+
+ @Override
+ protected String getUrlAttribute()
+ {
+ return _urlAttribute;
+ }
+
+ }
+
+ protected ILinkComponent newComponent()
+ {
+ return (ILinkComponent) newMock(ILinkComponent.class);
+ }
+
+ public void testNoNesting()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent existing = newComponent();
+ ILinkComponent active = newComponent();
+ Location l = newLocation();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, existing);
+
+ trainGetLocation(active, l);
+
+ replayControls();
+
+ try
+ {
+ new DefaultLinkRenderer().renderLink(writer, cycle, active);
+ unreachable();
+ }
+ catch (ApplicationRuntimeException ex)
+ {
+ assertEquals(LinkMessages.noNesting(), ex.getMessage());
+ assertSame(active, ex.getComponent());
+ assertSame(l, ex.getLocation());
+ }
+
+ verifyControls();
+ }
+
+ public void testStandardNotDisabled()
+ {
+ IMarkupWriter writer = newWriter();
+ NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+ Location l = newLocation();
+ ILink link = newLink();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, false);
+
+ writer.begin("a");
+
+ trainGetLink(component, cycle, link);
+
+ trainGetScheme(component, null);
+ trainGetAnchor(component, null);
+
+ trainGetURL(link, null, null, "/foo/bar.baz");
+
+ writer.attribute("href", "/foo/bar.baz");
+
+ trainGetTarget(component, null);
+
+ trainGetNestedWriter(writer, nested);
+
+ component.renderBody(nested, cycle);
+
+ component.renderAdditionalAttributes(writer, cycle);
+
+ nested.close();
+
+ writer.end();
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new DefaultLinkRenderer().renderLink(writer, cycle, component);
+
+ verifyControls();
+ }
+
+ protected void trainGetScheme(ILinkComponent component, String scheme)
+ {
+ component.getScheme();
+ setReturnValue(component, scheme);
+ }
+
+ public void testStandardWithSchemaAnchorAndTarget()
+ {
+ IMarkupWriter writer = newWriter();
+ NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+ ILink link = newLink();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, false);
+
+ writer.begin("a");
+
+ trainGetLink(component, cycle, link);
+
+ trainGetScheme(component, "https");
+
+ trainGetAnchor(component, "my-anchor");
+
+ trainGetURL(link, "https", "my-anchor", "http://zap.com/foo/bar.baz#my-anchor");
+
+ writer.attribute("href", "http://zap.com/foo/bar.baz#my-anchor");
+
+ trainGetTarget(component, "some-target");
+
+ writer.attribute("target", "some-target");
+
+ trainGetNestedWriter(writer, nested);
+
+ component.renderBody(nested, cycle);
+
+ component.renderAdditionalAttributes(writer, cycle);
+
+ nested.close();
+
+ writer.end();
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new DefaultLinkRenderer().renderLink(writer, cycle, component);
+
+ verifyControls();
+ }
+
+ public void testDisabled()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, true);
+
+ component.renderBody(writer, cycle);
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new DefaultLinkRenderer().renderLink(writer, cycle, component);
+
+ verifyControls();
+ }
+
+ public void testWithSubclass()
+ {
+ IMarkupWriter writer = newWriter();
+ NestedMarkupWriter nested = newNestedWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+ ILink link = newLink();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, false);
+
+ writer.begin("xlink");
+
+ trainGetLink(component, cycle, link);
+
+ trainGetScheme(component, null);
+
+ trainGetAnchor(component, "my-anchor");
+
+ trainGetURL(link, null, "my-anchor", "/foo/bar.baz#my-anchor");
+
+ writer.attribute("xurl", "/foo/bar.baz#my-anchor");
+
+ trainGetTarget(component, "some-target");
+
+ writer.attribute("xtarget", "some-target");
+
+ writer.print("BEFORE-BODY-RENDER");
+
+ trainGetNestedWriter(writer, nested);
+
+ component.renderBody(nested, cycle);
+
+ writer.print("AFTER-BODY-RENDER");
+
+ component.renderAdditionalAttributes(writer, cycle);
+
+ nested.close();
+
+ writer.end();
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new RendererFixture(writer, cycle, component, "xlink", true, "xtarget", "xurl").renderLink(
+ writer,
+ cycle,
+ component);
+
+ verifyControls();
+ }
+
+ public void testWithSubclassNoBody()
+ {
+ IMarkupWriter writer = newWriter();
+ NestedMarkupWriter nested = newNestedWriter();
+
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+ ILink link = newLink();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, false);
+
+ writer.beginEmpty("xlink");
+
+ trainGetLink(component, cycle, link);
+
+ trainGetScheme(component, null);
+
+ trainGetAnchor(component, "my-anchor");
+
+ trainGetURL(link, null, "my-anchor", "/foo/bar.baz#my-anchor");
+
+ writer.attribute("xurl", "/foo/bar.baz#my-anchor");
+
+ trainGetTarget(component, "some-target");
+
+ writer.attribute("xtarget", "some-target");
+
+ writer.print("BEFORE-BODY-RENDER");
+
+ trainGetNestedWriter(writer, nested);
+
+ writer.print("AFTER-BODY-RENDER");
+
+ writer.closeTag();
+
+ component.renderAdditionalAttributes(writer, cycle);
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new RendererFixture(writer, cycle, component, "xlink", false, "xtarget", "xurl")
+ .renderLink(writer, cycle, component);
+
+ verifyControls();
+ }
+
+ public void testWithSubclassDisabled()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, true);
+
+ component.renderBody(writer, cycle);
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new RendererFixture(writer, cycle, component, "xlink", true, "xtarget", "xurl").renderLink(
+ writer,
+ cycle,
+ component);
+
+ verifyControls();
+ }
+
+ public void testWithSubclassDisabledNoBody()
+ {
+ IMarkupWriter writer = newWriter();
+ IRequestCycle cycle = newCycle();
+ ILinkComponent component = newComponent();
+
+ trainGetAttribute(cycle, Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, null);
+ cycle.setAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME, component);
+
+ trainIsDisabled(component, true);
+
+ cycle.removeAttribute(Tapestry.LINK_COMPONENT_ATTRIBUTE_NAME);
+
+ replayControls();
+
+ new RendererFixture(writer, cycle, component, "xlink", false, "xtarget", "xurl")
+ .renderLink(writer, cycle, component);
+
+ verifyControls();
+ }
+
+ protected void trainGetAnchor(ILinkComponent component, String anchor)
+ {
+ component.getAnchor();
+ setReturnValue(component, anchor);
+ }
+
+ protected void trainGetTarget(ILinkComponent component, String target)
+ {
+ component.getTarget();
+ setReturnValue(component, target);
+ }
+
+ protected void trainIsDisabled(ILinkComponent component, boolean isDisabled)
+ {
+ component.isDisabled();
+ setReturnValue(component, isDisabled);
+ }
+}
Modified: jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLink.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLink.java?rev=328669&r1=328668&r2=328669&view=diff
==============================================================================
--- jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLink.java (original)
+++ jakarta/tapestry/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletLink.java Wed Oct 26 09:44:54 2005
@@ -118,6 +118,12 @@
}
}
+ public String getURL(String scheme, String server, int port, String anchor, boolean includeParameters)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
public String getAbsoluteURL()
{
throw new UnsupportedOperationException(PortletMessages.unsupportedMethod("getAbsoluteURL"));
Modified: jakarta/tapestry/trunk/status.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=328669&r1=328668&r2=328669&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Wed Oct 26 09:44:54 2005
@@ -52,6 +52,7 @@
<changes>
<release version="4.0-beta-12" date="unreleased">
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-718">Asset injection makes assets appear as null inside finishLoad()</action>
+ <action type="fix" dev="HLS" fixes-bug="TAPESTRY-580">Form, PageLink, DirectLink, etc. should support a scheme parameter for controlling the scheme of the generated URL</action>
</release>
<release version="4.0-beta-11" date="Oct 16 2005">
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-650">ClassNotFoundException thrown when deserializing an object from a client persistent property</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org