You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/12/18 17:56:28 UTC
svn commit: r605248 - in /tapestry/tapestry4/trunk: ./
tapestry-framework/src/java/org/apache/tapestry/form/
tapestry-framework/src/java/org/apache/tapestry/services/impl/
tapestry-framework/src/test/org/apache/tapestry/form/
Author: jkuhnert
Date: Tue Dec 18 08:56:23 2007
New Revision: 605248
URL: http://svn.apache.org/viewvc?rev=605248&view=rev
Log:
Fixes TAPESTRY-1989.
Modified:
tapestry/tapestry4/trunk/pom.xml
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java
Modified: tapestry/tapestry4/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/pom.xml?rev=605248&r1=605247&r2=605248&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/pom.xml (original)
+++ tapestry/tapestry4/trunk/pom.xml Tue Dec 18 08:56:23 2007
@@ -182,7 +182,7 @@
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
- <version>2.7.1</version>
+ <version>2.7.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/FormSupportImpl.java?rev=605248&r1=605247&r2=605248&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/FormSupportImpl.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/FormSupportImpl.java Tue Dec 18 08:56:23 2007
@@ -14,31 +14,11 @@
package org.apache.tapestry.form;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.HiveMind;
import org.apache.hivemind.Location;
import org.apache.hivemind.util.Defense;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.NestedMarkupWriter;
-import org.apache.tapestry.PageRenderSupport;
-import org.apache.tapestry.StaleLinkException;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.*;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.event.BrowserEvent;
import org.apache.tapestry.javascript.JavascriptManager;
@@ -48,6 +28,8 @@
import org.apache.tapestry.util.IdAllocator;
import org.apache.tapestry.valid.IValidationDelegate;
+import java.util.*;
+
/**
* Encapsulates most of the behavior of a Form component.
*
@@ -569,6 +551,8 @@
if (_pageRenderSupport == null)
return;
+
+ _pageRenderSupport.addInitializationScript(_form, "dojo.require(\"tapestry.form\");");
// If the form doesn't support focus, or the focus has already been set by a different form,
// then do nothing.
@@ -576,9 +560,8 @@
if (!_cycle.isFocusDisabled() && fieldId != null && _form.getFocus()
&& _cycle.getAttribute(FIELD_FOCUS_ATTRIBUTE) == null)
{
- _pageRenderSupport.addInitializationScript(_form, "dojo.require(\"tapestry.form\");");
-
// needs to happen last to avoid dialog issues in ie - TAPESTRY-1705
+
_pageRenderSupport.addScriptAfterInitialization(_form, "tapestry.form.focusField('" + fieldId + "');");
_cycle.setAttribute(FIELD_FOCUS_ATTRIBUTE, Boolean.TRUE);
@@ -601,7 +584,7 @@
}
}
- _pageRenderSupport.addInitializationScript(_form, "dojo.require(\"tapestry.form\");tapestry.form.clearProfiles('"
+ _pageRenderSupport.addInitializationScript(_form, "tapestry.form.clearProfiles('"
+ formId + "'); tapestry.form.registerProfile('" + formId + "',"
+ _profile.toString() + ");");
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java?rev=605248&r1=605247&r2=605248&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/HiveMindExpressionCompiler.java Tue Dec 18 08:56:23 2007
@@ -149,8 +149,8 @@
// must evaluate expression value at least once if object isn't null
- if (root != null)
- Ognl.getValue(expression, context, root);
+ //if (root != null)
+ // Ognl.getValue(expression, context, root);
try
{
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java?rev=605248&r1=605247&r2=605248&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java Tue Dec 18 08:56:23 2007
@@ -39,20 +39,20 @@
*/
@Test(sequential = true)
public class FormSupportTest extends BaseComponentTestCase {
+
@DataProvider(name = "allSupports")
public Object[][] createAllSupports()
{
return new Object[][]{
- {new FormSupportFactoryImpl()},
- {new MultipleFormSupportFactory()}
+ {new FormSupportFactoryImpl()},
+ {new MultipleFormSupportFactory()}
};
}
@DataProvider(name = "mainSupport")
public Object[][] createMainSupport()
{
- return new Object[][]{
- {new FormSupportFactoryImpl()}
+ return new Object[][]{ {new FormSupportFactoryImpl()}
};
}
@@ -65,7 +65,7 @@
final IMarkupWriter nested)
{
return newComponentsRenderBody(fs, new IFormComponent[]
- {component}, nested);
+ {component}, nested);
}
private IRender newComponentsRenderBody(final FormSupport fs, final IFormComponent[] component,
@@ -187,16 +187,16 @@
final IFormComponent barney2 = newFormComponent("barney", "barney_0");
IRender body = newComponentsRenderBody(fs, new IFormComponent[]
- {barney1, wilma, barney2}, nested);
+ {barney1, wilma, barney2}, nested);
form.setBody(body);
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -267,7 +267,7 @@
final IFormComponent barney2 = newFormComponent("barney", "barney_0");
IRender body = newComponentsRenderBody(fs, new IFormComponent[]
- {barney1, wilma, barney2}, writer);
+ {barney1, wilma, barney2}, writer);
form.setBody(body);
form.setEventInvoker(invoker);
@@ -322,10 +322,10 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -350,6 +350,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
// Side test: what if no focus field?
trainGetFocusField(delegate, null);
@@ -396,12 +398,9 @@
trainRegister(support, form, "myform");
- trainGetParameterNames(link, new String[]
- {"service"});
-
- trainGetParameterValues(link, "service", new String[]
- {"fred"});
-
+ trainGetParameterNames(link, new String[] {"service"});
+ trainGetParameterValues(link, "service", new String[] {"fred"});
+
trainGetNestedWriter(writer, nested);
trainGetURL(link, null, "/app");
@@ -423,6 +422,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
trainGetFocusField(delegate, null);
expect(cycle.isFocusDisabled()).andReturn(false);
@@ -478,9 +479,9 @@
}
catch (ApplicationRuntimeException ex) {
assertEquals(
- "Field EasyMock for interface org.apache.tapestry.form.IFormComponent has already been pre-rendered. "
- + "This exception may indicate that a FieldLabel rendered, but the corresponding field did not.",
- ex.getMessage());
+ "Field EasyMock for interface org.apache.tapestry.form.IFormComponent has already been pre-rendered. "
+ + "This exception may indicate that a FieldLabel rendered, but the corresponding field did not.",
+ ex.getMessage());
assertSame(l, ex.getLocation());
assertSame(field, ex.getComponent());
@@ -558,6 +559,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
trainGetFocusField(delegate, null);
expect(cycle.isFocusDisabled()).andReturn(false);
@@ -603,10 +606,10 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -618,8 +621,8 @@
}
catch (ApplicationRuntimeException ex) {
assertEquals(
- "Components within form SomePage/myform have requested conflicting encoding types 'foo/bar' and 'zip/zap'.",
- ex.getMessage());
+ "Components within form SomePage/myform have requested conflicting encoding types 'foo/bar' and 'zip/zap'.",
+ ex.getMessage());
assertSame(form, ex.getComponent());
}
@@ -702,10 +705,10 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"action"});
+ {"action"});
trainGetParameterValues(link, "action", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -739,6 +742,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
trainGetFocusField(delegate, null);
expect(cycle.isFocusDisabled()).andReturn(false);
@@ -786,10 +791,10 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -814,6 +819,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
trainGetFocusField(delegate, null);
expect(cycle.isFocusDisabled()).andReturn(false);
@@ -832,7 +839,7 @@
IRequestCycle cycle = newCycle();
IValidationDelegate delegate = newDelegate();
ComponentEventInvoker invoker =
- org.easymock.classextension.EasyMock.createMock(ComponentEventInvoker.class);
+ org.easymock.classextension.EasyMock.createMock(ComponentEventInvoker.class);
MockForm form = new MockForm(delegate);
@@ -901,7 +908,7 @@
final IFormComponent barney2 = newFormComponent("barney", "SomePage/barney", l);
IRender body = newComponentsRenderBody(fs, new IFormComponent[]
- {barney1, wilma, barney2}, writer);
+ {barney1, wilma, barney2}, writer);
form.setBody(body);
@@ -913,8 +920,8 @@
}
catch (StaleLinkException ex) {
assertEquals(
- "Rewind of form SomePage/myform expected allocated id #3 to be 'pebbles', but was 'barney_0' (requested by component SomePage/barney).",
- ex.getMessage());
+ "Rewind of form SomePage/myform expected allocated id #3 to be 'pebbles', but was 'barney_0' (requested by component SomePage/barney).",
+ ex.getMessage());
assertSame(barney2, ex.getComponent());
assertSame(l, ex.getLocation());
}
@@ -955,7 +962,7 @@
final IFormComponent barney2 = newFormComponent("barney", "SomePage/barney", l);
IRender body = newComponentsRenderBody(fs, new IFormComponent[]
- {barney1, wilma, barney2}, writer);
+ {barney1, wilma, barney2}, writer);
form.setBody(body);
@@ -967,8 +974,8 @@
}
catch (StaleLinkException ex) {
assertEquals(
- "Rewind of form SomePage/myform expected only 2 form elements, but an additional id was requested by component SomePage/barney.",
- ex.getMessage());
+ "Rewind of form SomePage/myform expected only 2 form elements, but an additional id was requested by component SomePage/barney.",
+ ex.getMessage());
assertSame(barney2, ex.getComponent());
assertSame(l, ex.getLocation());
}
@@ -1024,8 +1031,8 @@
}
catch (StaleLinkException ex) {
assertEquals(
- "Rewind of form SomePage/myform expected 1 more form elements, starting with id 'barney$0'.",
- ex.getMessage());
+ "Rewind of form SomePage/myform expected 1 more form elements, starting with id 'barney$0'.",
+ ex.getMessage());
assertSame(form, ex.getComponent());
assertSame(l, ex.getLocation());
}
@@ -1067,9 +1074,9 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -1154,11 +1161,9 @@
trainRegister(support, form, "myform");
- trainGetParameterNames(link, new String[]
- {"service"});
- trainGetParameterValues(link, "service", new String[]
- {"fred"});
-
+ trainGetParameterNames(link, new String[] {"service"});
+ trainGetParameterValues(link, "service", new String[]{"fred"});
+
trainGetNestedWriter(writer, nested);
nested.print("DEFERRED");
@@ -1181,6 +1186,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
trainGetFocusField(delegate, null);
expect(cycle.isFocusDisabled()).andReturn(false);
@@ -1226,9 +1233,9 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -1250,6 +1257,8 @@
writer.end();
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+
trainGetFocusField(delegate, "barney");
expect(cycle.isFocusDisabled()).andReturn(false);
@@ -1277,7 +1286,7 @@
IValidationDelegate delegate = newDelegate();
MockForm form = new MockForm(delegate);
ComponentEventInvoker invoker =
- org.easymock.classextension.EasyMock.createMock(ComponentEventInvoker.class);
+ org.easymock.classextension.EasyMock.createMock(ComponentEventInvoker.class);
trainIsRewound(cycle, form, true);
@@ -1319,7 +1328,7 @@
IValidationDelegate delegate = newDelegate();
MockForm form = new MockForm(delegate);
ComponentEventInvoker invoker =
- org.easymock.classextension.EasyMock.createMock(ComponentEventInvoker.class);
+ org.easymock.classextension.EasyMock.createMock(ComponentEventInvoker.class);
trainIsRewound(cycle, form, true);
@@ -1393,9 +1402,9 @@
trainRegister(support, form, "myform");
trainGetParameterNames(link, new String[]
- {"service"});
+ {"service"});
trainGetParameterValues(link, "service", new String[]
- {"fred"});
+ {"fred"});
trainGetNestedWriter(writer, nested);
@@ -1426,6 +1435,8 @@
nested.close();
writer.end();
+
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
trainGetFocusField(delegate, null);