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}.
