You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/06/27 18:54:19 UTC

svn commit: r672321 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/ main/java/org/apache/tapestry5/internal/services/ test/java/org/apache/tapestry5/internal/services/

Author: hlship
Date: Fri Jun 27 09:54:19 2008
New Revision: 672321

URL: http://svn.apache.org/viewvc?rev=672321&view=rev
Log:
TAPESTRY-2483: The '%' symbol passed to RenderSupport.addScript() is treated as a formatting directive, causing errors

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java?rev=672321&r1=672320&r2=672321&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java Fri Jun 27 09:54:19 2008
@@ -15,14 +15,17 @@
 package org.apache.tapestry5;
 
 import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONObject;
+import org.apache.tapestry5.services.AssetSource;
 
 /**
  * Provides support to all components that render. This is primarily about generating unique client-side ids (very
  * important for JavaScript generation) as well as accumulating JavaScript to be sent to the client. PageRenderSupport
  * also allows for the incremental addition of stylesheets.
+ * <p/>
+ * When rendering, a &lt;script&gt; block will be added to the bottom of the page (just before the &lt;/body&gt; tag).
+ * The scripting statements added to this block will be executed, on the client, only once the page has fully loaded.
  */
 public interface RenderSupport
 {
@@ -74,8 +77,15 @@
     void addStylesheetLink(Asset stylesheet, String media);
 
     /**
-     * Adds a script statement to the page's script block (which appears at the end of the page, just before the
-     * &lt/body&gt; tag).
+     * Adds a script statement to the page's script block. A newline will be added after the script statement.
+     *
+     * @param script text to be added to the script block
+     */
+    void addScript(String script);
+
+    /**
+     * Adds a script statement to the page's script block.  The parameters are passed to {@link String#format(String,
+     * Object[])} before being added to the script block.  A newline will be added after the formatted statement.
      *
      * @param format    base string format, to be passed through String.format
      * @param arguments additional arguments formatted to form the final script

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java?rev=672321&r1=672320&r2=672321&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java Fri Jun 27 09:54:19 2008
@@ -120,6 +120,11 @@
         linker.addScriptLink(asset.toClientURL());
     }
 
+    public void addScript(String script)
+    {
+        linker.addScript(script);
+    }
+
     public void addScript(String format, Object... arguments)
     {
         notNull(format, "format");

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java?rev=672321&r1=672320&r2=672321&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java Fri Jun 27 09:54:19 2008
@@ -95,6 +95,26 @@
         verify();
     }
 
+    // TAPESTRY-2483
+
+    @Test
+    public void add_script_no_formatting()
+    {
+        DocumentLinker linker = mockDocumentLinker();
+
+        String script = "foo('%');";
+
+        linker.addScript(script);
+
+        replay();
+
+        RenderSupport support = new RenderSupportImpl(linker, null, null);
+
+        support.addScript(script);
+
+        verify();
+    }
+
     @Test
     public void add_classpath_script_link()
     {