You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/02/20 03:20:11 UTC
svn commit: r509412 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/corelib/base/
main/java/org/apache/tapestry/corelib/components/
main/java/org/apache/tapestry/services/
test/java/org/apache/tapestry/corelib/components/
Author: hlship
Date: Mon Feb 19 18:20:10 2007
New Revision: 509412
URL: http://svn.apache.org/viewvc?view=rev&rev=509412
Log:
Isolate the (internal) interface FormParameterLookup inside FormSupportImpl so that subclasses of AbstractField do not have to see it.
Add a getParameterValue() method to FormSupport.
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractField.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/FormSupportImpl.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Select.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Submit.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/FormSupport.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/FormSupportImplTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/SubmitTest.java
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractField.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractField.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractField.java Mon Feb 19 18:20:10 2007
@@ -35,7 +35,6 @@
import org.apache.tapestry.corelib.mixins.RenderDisabled;
import org.apache.tapestry.corelib.mixins.RenderInformals;
import org.apache.tapestry.internal.TapestryUtils;
-import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.services.DefaultComponentParameterBindingSource;
import org.apache.tapestry.services.FormSupport;
@@ -139,9 +138,6 @@
@Inject
private ComponentResources _resources;
- @Inject("service:tapestry.internal.FormParameterLookup")
- private FormParameterLookup _paramLookup;
-
@Inject("infrastructure:DefaultComponentParameterBindingSource")
private DefaultComponentParameterBindingSource _defaultBindingSource;
@@ -208,7 +204,7 @@
private void processSubmission()
{
if (!_disabled)
- processSubmission(_paramLookup, _elementName);
+ processSubmission(_formSupport, _elementName);
}
/**
@@ -228,15 +224,14 @@
* form. The element's elementName property will already have been set. This method is only
* invoked if the field is <strong>not {@link #isDisabled() disabled}</strong>.
*
- * @param paramLookup
- * an object providing lookup access to form parameters, presumably so that the
- * component may extract a query parameter value that matches the component's element
- * name. Usually this object is the current request but could be a mock object if the
- * app is driven by a {@link org.apache.tapestry.test.pagelevel.PageTester}.
+ * @param formSupport
+ * support for the form submission, used to
+ * {@link FormSupport#getParameterValue(String) obtain submitted parameter values}.
+ * Passing this value in saves subclasses from having to (re)inject it.
* @param elementName
* the name of the element (used to find the correct parameter in the request)
*/
- protected abstract void processSubmission(FormParameterLookup paramLookup, String elementName);
+ protected abstract void processSubmission(FormSupport formSupport, String elementName);
@BeginRender
final void beforeDecorator(MarkupWriter writer)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/base/AbstractTextField.java Mon Feb 19 18:20:10 2007
@@ -28,9 +28,9 @@
import org.apache.tapestry.annotations.Environmental;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Parameter;
-import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.ioc.Messages;
import org.apache.tapestry.services.FieldValidatorDefaultSource;
+import org.apache.tapestry.services.FormSupport;
import org.apache.tapestry.services.TranslatorDefaultSource;
import org.apache.tapestry.services.ValidationMessagesSource;
@@ -161,9 +161,9 @@
protected abstract void writeFieldTag(MarkupWriter writer, String value);
@Override
- protected final void processSubmission(FormParameterLookup paramLookup, String elementName)
+ protected final void processSubmission(FormSupport formSupport, String elementName)
{
- String rawValue = paramLookup.getParameter(elementName);
+ String rawValue = formSupport.getParameterValue(elementName);
_tracker.recordInput(this, rawValue);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java Mon Feb 19 18:20:10 2007
@@ -20,7 +20,7 @@
import org.apache.tapestry.annotations.BeginRender;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.corelib.base.AbstractField;
-import org.apache.tapestry.internal.services.FormParameterLookup;
+import org.apache.tapestry.services.FormSupport;
/** A Checkbox component is simply a <input type="checkbox">. */
public class Checkbox extends AbstractField
@@ -62,9 +62,9 @@
}
@Override
- protected void processSubmission(FormParameterLookup paramLookup, String elementName)
+ protected void processSubmission(FormSupport formSupport, String elementName)
{
- String postedValue = paramLookup.getParameter(elementName);
+ String postedValue = formSupport.getParameterValue(elementName);
_value = postedValue != null;
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Form.java Mon Feb 19 18:20:10 2007
@@ -264,7 +264,7 @@
{
_tracker.clear();
- _formSupport = new FormSupportImpl();
+ _formSupport = new FormSupportImpl(_paramLookup);
_environment.push(ValidationTracker.class, _tracker);
_environment.push(FormSupport.class, _formSupport);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/FormSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/FormSupportImpl.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/FormSupportImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/FormSupportImpl.java Mon Feb 19 18:20:10 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 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.
@@ -12,9 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-/**
- *
- */
package org.apache.tapestry.corelib.components;
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newList;
@@ -26,7 +23,7 @@
import java.util.List;
import org.apache.tapestry.ComponentAction;
-import org.apache.tapestry.ioc.internal.util.Defense;
+import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.ioc.internal.util.IdAllocator;
import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.FormSupport;
@@ -44,16 +41,32 @@
private final ObjectOutputStream _actions;
+ private final FormParameterLookup _parameterLookup;
+
private List<Runnable> _commands;
- public FormSupportImpl()
+ /** Constructor used when processing a form submission. */
+ public FormSupportImpl(FormParameterLookup parameterLookup)
+ {
+ this(null, parameterLookup);
+ }
+
+ /** Constructor used when rendering. */
+ public FormSupportImpl(ObjectOutputStream actions)
{
- this(null);
+ this(actions, null);
}
- public FormSupportImpl(final ObjectOutputStream actions)
+ /** For testing only. */
+ FormSupportImpl()
+ {
+ this(null, null);
+ }
+
+ FormSupportImpl(ObjectOutputStream actions, FormParameterLookup parameterLookup)
{
_actions = actions;
+ _parameterLookup = parameterLookup;
}
public String allocateElementName(String id)
@@ -95,7 +108,7 @@
if (_commands == null)
_commands = newList();
- _commands.add(Defense.notNull(command, "command"));
+ _commands.add(notNull(command, "command"));
}
void executeDeferred()
@@ -107,6 +120,11 @@
r.run();
_commands.clear();
+ }
+
+ public String getParameterValue(String name)
+ {
+ return _parameterLookup.getParameter(name);
}
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Select.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Select.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Select.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Select.java Mon Feb 19 18:20:10 2007
@@ -33,8 +33,8 @@
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Parameter;
import org.apache.tapestry.corelib.base.AbstractField;
-import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.services.FieldValidatorDefaultSource;
+import org.apache.tapestry.services.FormSupport;
import org.apache.tapestry.util.EnumSelectModel;
import org.apache.tapestry.util.EnumValueEncoder;
@@ -233,9 +233,9 @@
}
@Override
- protected void processSubmission(FormParameterLookup paramLookup, String elementName)
+ protected void processSubmission(FormSupport formSupport, String elementName)
{
- String primaryKey = paramLookup.getParameter(elementName);
+ String primaryKey = formSupport.getParameterValue(elementName);
Object selectedValue = _encoder.toValue(primaryKey);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Submit.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Submit.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Submit.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Submit.java Mon Feb 19 18:20:10 2007
@@ -19,7 +19,6 @@
import org.apache.tapestry.annotations.Environmental;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.corelib.base.AbstractField;
-import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.services.FormSupport;
import org.apache.tapestry.services.Heartbeat;
@@ -59,9 +58,9 @@
}
@Override
- protected void processSubmission(FormParameterLookup paramLookup, String elementName)
+ protected void processSubmission(FormSupport formSupport, String elementName)
{
- String value = paramLookup.getParameter(elementName);
+ String value = formSupport.getParameterValue(elementName);
if (value == null)
return;
@@ -86,12 +85,14 @@
}
+ // For testing:
+
void setDefer(boolean defer)
{
_defer = defer;
}
- void testInject(ComponentResources resources, FormSupport support, Heartbeat heartbeat)
+ void setup(ComponentResources resources, FormSupport support, Heartbeat heartbeat)
{
_resources = resources;
_formSupport = support;
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/FormSupport.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/FormSupport.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/FormSupport.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/FormSupport.java Mon Feb 19 18:20:10 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 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.
@@ -15,6 +15,7 @@
package org.apache.tapestry.services;
import org.apache.tapestry.ComponentAction;
+import org.apache.tapestry.test.pagelevel.PageTester;
/**
* Services provided by an enclosing Form control component to the various form element components
@@ -48,4 +49,15 @@
* @param command
*/
void defer(Runnable command);
+
+ /**
+ * Returns the name for the given parameter, or null if not found. For a multi-valued parameter,
+ * returns the first value. Components should make use of this interface, rather than
+ * {@link Request#getParameters(String)}, to stay compatible with {@link PageTester}.
+ *
+ * @param name
+ * of parameter to retrieve
+ * @return the parameter value, or null
+ */
+ String getParameterValue(String name);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/FormSupportImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/FormSupportImplTest.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/FormSupportImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/FormSupportImplTest.java Mon Feb 19 18:20:10 2007
@@ -14,7 +14,9 @@
package org.apache.tapestry.corelib.components;
+import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.services.FormSupport;
import org.testng.annotations.Test;
public class FormSupportImplTest extends InternalBaseTestCase
@@ -83,4 +85,24 @@
verify();
}
+
+ @Test
+ public void get_parameter_value()
+ {
+ String name = "param";
+ String value = "zaphod";
+
+ FormParameterLookup lookup = newFormParameterLookup();
+
+ train_getParameter(lookup, name, value);
+
+ replay();
+
+ FormSupport support = new FormSupportImpl(lookup);
+
+ assertSame(support.getParameterValue(name), value);
+
+ verify();
+ }
+
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/SubmitTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/SubmitTest.java?view=diff&rev=509412&r1=509411&r2=509412
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/SubmitTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/corelib/components/SubmitTest.java Mon Feb 19 18:20:10 2007
@@ -18,6 +18,7 @@
import org.apache.tapestry.internal.services.FormParameterLookup;
import org.apache.tapestry.internal.services.HeartbeatImpl;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.services.FormSupport;
import org.apache.tapestry.services.Heartbeat;
import org.testng.annotations.Test;
@@ -26,17 +27,17 @@
@Test
public void not_trigger_of_submission()
{
- FormParameterLookup lookup = newFormParameterLookup();
+ FormSupport support = newFormSupport();
String elementName = "myname";
- train_getParameter(lookup, elementName, null);
+ train_getParameterValue(support, elementName, null);
replay();
Submit submit = new Submit();
- submit.processSubmission(lookup, elementName);
+ submit.processSubmission(support, elementName);
verify();
}
@@ -46,7 +47,7 @@
{
FormParameterLookup lookup = newFormParameterLookup();
ComponentResources resources = newComponentResources();
- FormSupportImpl support = new FormSupportImpl();
+ FormSupportImpl support = new FormSupportImpl(lookup);
String elementName = "myname";
@@ -56,9 +57,9 @@
Submit submit = new Submit();
- submit.testInject(resources, support, null);
+ submit.setup(resources, support, null);
- submit.processSubmission(lookup, elementName);
+ submit.processSubmission(support, elementName);
verify();
@@ -74,13 +75,13 @@
@Test
public void trigger_immediate()
{
- FormParameterLookup lookup = newFormParameterLookup();
+ FormSupport support = newFormSupport();
ComponentResources resources = newComponentResources();
Heartbeat heartbeat = new HeartbeatImpl();
String elementName = "myname";
- train_getParameter(lookup, elementName, "login");
+ train_getParameterValue(support, elementName, "login");
replay();
@@ -88,10 +89,10 @@
Submit submit = new Submit();
- submit.testInject(resources, null, heartbeat);
+ submit.setup(resources, support, heartbeat);
submit.setDefer(false);
- submit.processSubmission(lookup, elementName);
+ submit.processSubmission(support, elementName);
verify();
@@ -103,6 +104,16 @@
verify();
+ }
+
+ protected final void train_getParameterValue(FormSupport support, String name, String value)
+ {
+ expect(support.getParameterValue(name)).andReturn(value).atLeastOnce();
+ }
+
+ protected final FormSupport newFormSupport()
+ {
+ return newMock(FormSupport.class);
}
}