You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by ka...@apache.org on 2014/03/26 07:20:07 UTC

git commit: TAP5-2300: JavaScriptSupport.addInitializerCall is not backwards compatible - apparently in 5.3, a JSONArray implied an array of method arguments, so unwrap it in addInitializerCall and add functionName to the arguments. I wish there had been

Repository: tapestry-5
Updated Branches:
  refs/heads/master b6ea90f11 -> d62d222d6


TAP5-2300: JavaScriptSupport.addInitializerCall is not backwards
compatible 
- apparently in 5.3, a JSONArray implied an array of method arguments,
so unwrap it in addInitializerCall and add functionName to the
arguments. I wish there had been addInitializerCall(String functionName,
Object... parameters) to lose the ambiguity but given that
addInitializerCall is now deprecated, probably best to keep the existing
behavior for backwards compatibility

Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/d62d222d
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/d62d222d
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/d62d222d

Branch: refs/heads/master
Commit: d62d222d69eb8cd5d0d0413d7f7b529a86777f1b
Parents: b6ea90f
Author: kaosko <ka...@apache.org>
Authored: Tue Mar 25 23:19:56 2014 -0700
Committer: kaosko <ka...@apache.org>
Committed: Tue Mar 25 23:19:56 2014 -0700

----------------------------------------------------------------------
 .../services/ajax/JavaScriptSupportImpl.java    | 26 +++++++++++++-------
 .../ajax/JavaScriptSupportImplTest.groovy       |  5 ++--
 2 files changed, 20 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d62d222d/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
index 8c358ca..08e1b88 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
@@ -29,6 +29,7 @@ import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.javascript.*;
 
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
@@ -99,6 +100,8 @@ public class JavaScriptSupportImpl implements JavaScriptSupport
 
         public void with(Object... arguments)
         {
+            assert arguments != null;
+
             this.arguments = new JSONArray(arguments);
         }
     }
@@ -177,28 +180,33 @@ public class JavaScriptSupportImpl implements JavaScriptSupport
 
     public void addInitializerCall(InitializationPriority priority, String functionName, JSONObject parameter)
     {
-        storeInitializerCall(priority, functionName, parameter);
+        createInitializer(priority).with(functionName, parameter);
     }
 
     public void addInitializerCall(String functionName, JSONArray parameter)
     {
-        storeInitializerCall(InitializationPriority.NORMAL, functionName, parameter);
+        addInitializerCall(InitializationPriority.NORMAL, functionName, parameter);
     }
 
-    public void addInitializerCall(InitializationPriority priority, String functionName, JSONArray parameter)
+    public void addInitializerCall(InitializationPriority priority, String functionName,
+            JSONArray parameter)
     {
-        storeInitializerCall(priority, functionName, parameter);
+        // TAP5-2300: In 5.3, a JSONArray implied an array of method arguments, so unwrap and add
+        // functionName to the arguments
+
+        List parameterList = new ArrayList(parameter.length() + 1);
+        parameterList.add(functionName);
+        parameterList.addAll(parameter.toList());
+        createInitializer(priority).with(parameterList.toArray());
     }
 
-    private void storeInitializerCall(InitializationPriority priority, String functionName, Object parameter)
+    private Initialization createInitializer(InitializationPriority priority)
     {
         assert priority != null;
-        assert parameter != null;
-        assert InternalUtils.isNonBlank(functionName);
 
         importCoreStack();
 
-        require("t5/core/init").priority(priority).with(functionName, parameter);
+        return require("t5/core/init").priority(priority);
     }
 
     public void addInitializerCall(String functionName, JSONObject parameter)
@@ -208,7 +216,7 @@ public class JavaScriptSupportImpl implements JavaScriptSupport
 
     public void addInitializerCall(InitializationPriority priority, String functionName, String parameter)
     {
-        storeInitializerCall(priority, functionName, parameter);
+        createInitializer(priority).with(functionName, parameter);
     }
 
     public void addInitializerCall(String functionName, String parameter)

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/d62d222d/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.groovy
----------------------------------------------------------------------
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.groovy
index c9f0983..9d4fe83 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.groovy
@@ -1,5 +1,6 @@
 package org.apache.tapestry5.internal.services.ajax
 
+import org.testng.annotations.Test;
 import org.apache.tapestry5.Asset
 import org.apache.tapestry5.ComponentResources
 import org.apache.tapestry5.internal.InternalConstants
@@ -357,8 +358,8 @@ class JavaScriptSupportImplTest extends InternalBaseTestCase {
 
         train_for_just_core_stack stackSource
 
-        train_init(linker, InitializationPriority.IMMEDIATE, "setup", chuck)
-        train_init(linker, InitializationPriority.IMMEDIATE, "setup", buzz)
+        train_init(linker, InitializationPriority.IMMEDIATE, "setup", "chuck", "yeager")
+        train_init(linker, InitializationPriority.IMMEDIATE, "setup", "buzz", "aldrin")
 
         replay()