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);