Allow an init to be just a qualified function name when the function is passed 
no parameters


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

Branch: refs/heads/5.4-js-rewrite
Commit: b48e83e6f1bb2eb5066a719ed02ac5f028dc84f9
Parents: 350b906
Author: Howard M. Lewis Ship <[email protected]>
Authored: Wed Nov 7 10:01:40 2012 -0800
Committer: Howard M. Lewis Ship <[email protected]>
Committed: Wed Nov 7 10:01:40 2012 -0800

----------------------------------------------------------------------
 .../META-INF/modules/core/pageinit.coffee          |   12 ++++++--
 .../internal/services/ModuleInitsManager.java      |   21 ++++++++------
 .../services/PartialMarkupDocumentLinker.java      |    2 +-
 .../services/javascript/ModuleManagerImpl.java     |    2 +-
 .../services/javascript/ModuleManager.java         |    5 ++-
 5 files changed, 26 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b48e83e6/tapestry-core/src/main/coffeescript/META-INF/modules/core/pageinit.coffee
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/coffeescript/META-INF/modules/core/pageinit.coffee 
b/tapestry-core/src/main/coffeescript/META-INF/modules/core/pageinit.coffee
index 1a7cce1..6650a78 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/core/pageinit.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/core/pageinit.coffee
@@ -123,9 +123,15 @@ define ["_", "core/console", "core/dom", "core/events"],
             callback() if callback
 
         # First value in each init is the qualified module name; anything after
-        # that are arguments to be passed to the identified function.
-        for [qualifiedName, initArguments...] in inits
-          invokeInitializer tracker, qualifiedName, initArguments
+        # that are arguments to be passed to the identified function. A string
+        # is the name of a module to load, or function to invoke, that
+        # takes no parameters.
+        for init in inits
+          if _.isString init
+            invokeInitializer tracker, init, []
+          else
+            [qualifiedName, initArguments...] = init
+            invokeInitializer tracker, qualifiedName, initArguments
 
         tracker()
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b48e83e6/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
index dcadd01..829c539 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
@@ -28,7 +28,7 @@ public class ModuleInitsManager
 {
     private final Set<String> pureInits = CollectionFactory.newSet();
 
-    private final Map<InitializationPriority, List<JSONArray>> inits = 
CollectionFactory.newMap();
+    private final Map<InitializationPriority, List<Object>> inits = 
CollectionFactory.newMap();
 
     private int initCount;
 
@@ -49,15 +49,18 @@ public class ModuleInitsManager
             }
 
             pureInits.add(name);
-        }
+            InternalUtils.addToMapList(inits, priority, name);
+        } else
+        {
 
-        JSONArray init = new JSONArray();
+            JSONArray init = new JSONArray();
 
-        init.put(name);
+            init.put(name);
 
-        init.putAll(arguments);
+            init.putAll(arguments);
 
-        InternalUtils.addToMapList(inits, priority, init);
+            InternalUtils.addToMapList(inits, priority, init);
+        }
 
         initCount++;
     }
@@ -66,13 +69,13 @@ public class ModuleInitsManager
      * Returns all previously added inits, sorted by {@link 
InitializationPriority}, then by order in which they
      * were added.
      */
-    public List<JSONArray> getSortedInits()
+    public List<?> getSortedInits()
     {
-        List<JSONArray> result = new ArrayList<JSONArray>(initCount);
+        List<Object> result = new ArrayList<Object>(initCount);
 
         for (InitializationPriority p : InitializationPriority.values())
         {
-            List<JSONArray> initsForPriority = inits.get(p);
+            List<Object> initsForPriority = inits.get(p);
 
             if (initsForPriority != null)
             {

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b48e83e6/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
index aa444b5..9c83d39 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
@@ -76,7 +76,7 @@ public class PartialMarkupDocumentLinker implements 
DocumentLinker
             reply.in(InternalConstants.PARTIAL_KEY).put("stylesheets", 
stylesheets);
         }
 
-        List<JSONArray> inits = initsManager.getSortedInits();
+        List<?> inits = initsManager.getSortedInits();
 
         if (inits.size() > 0)
         {

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b48e83e6/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
index 8a2d7fe..c4d8891 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
@@ -169,7 +169,7 @@ public class ModuleManagerImpl implements ModuleManager
         tracker.clearOnInvalidation(cache);
     }
 
-    public void writeInitialization(Element body, List<String> libraryURLs, 
List<JSONArray> inits)
+    public void writeInitialization(Element body, List<String> libraryURLs, 
List<?> inits)
     {
         body.element("script", "src", requireJS.toClientURL());
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b48e83e6/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
index e6fb7c5..523c864 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
@@ -17,7 +17,6 @@ package org.apache.tapestry5.services.javascript;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.json.JSONArray;
 
 import java.util.List;
 
@@ -50,8 +49,10 @@ public interface ModuleManager
      *         qualified function name, followed by parameters to pass to the 
function. A qualified function name
      *         is either a module name, or a module name suffixed with the 
name of a function property exported by the module
      *         (separated by a ':', e.g. "myapp/mymodule:myfunc").
+     *         When there are no arguments, the qualified function name may be 
used; where there are arguments, the
+     *         init must be a JSONArray.
      */
-    void writeInitialization(Element body, List<String> libraryURLs, 
List<JSONArray> inits);
+    void writeInitialization(Element body, List<String> libraryURLs, List<?> 
inits);
 
     /**
      * Given a module name (which may be a path of names separated by 
slashes), locates the corresponding {@link Resource}.

Reply via email to