Author: jkuhnert Date: Fri Apr 21 10:08:00 2006 New Revision: 395949 URL: http://svn.apache.org/viewcvs?rev=395949&view=rev Log: Started adding dojo hooks into script response rendering
Modified: tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/FormLinkRenderer.java tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/IScriptProcessor.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/PageRenderSupport.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.jwc tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/ILinkRenderer.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/script/ScriptSessionImpl.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java tapestry/tapestry4/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java tapestry/tapestry4/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java Modified: tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/FormLinkRenderer.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/FormLinkRenderer.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/FormLinkRenderer.java (original) +++ tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/FormLinkRenderer.java Fri Apr 21 10:08:00 2006 @@ -91,7 +91,7 @@ null, null); String function = generateFormFunction(formName, l, anchor); - body.addBodyScript(function); + body.addBodyScript(linkComponent, function); if (hasBody) writer.begin(getElement()); Modified: tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java (original) +++ tapestry/tapestry4/trunk/contrib/src/java/org/apache/tapestry/contrib/link/PopupLinkRenderer.java Fri Apr 21 10:08:00 2006 @@ -84,7 +84,7 @@ builder.addln("newWindow.focus();"); builder.end(); - support.addBodyScript(builder.toString()); + support.addBodyScript(component, builder.toString()); return "javascript:" + functionName + "();"; } Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/IScriptProcessor.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/IScriptProcessor.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/IScriptProcessor.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/IScriptProcessor.java Fri Apr 21 10:08:00 2006 @@ -31,28 +31,74 @@ * bodies; all are concatinated together to form a single block. The * [EMAIL PROTECTED] org.apache.tapestry.html.Body} component will write the body script contents * just inside the <code><body></code> tag. + * + * @deprecated To be removed sometime after 4.1. + * @see [EMAIL PROTECTED] #addBodyScript(IComponent, String)} */ - public void addBodyScript(String script); + void addBodyScript(String script); /** + * Adds scripting code to the main body. During the render, multiple scripts may render multiple + * bodies; all are concatinated together to form a single block. The + * [EMAIL PROTECTED] org.apache.tapestry.html.Body} component will write the body script contents + * just inside the <code><body></code> tag. + * + * @param target + * The component this script is being added for. + * @param script + * The script to add to the body response. + */ + void addBodyScript(IComponent target, String script); + + /** * Adds initialization script. Initialization script is executed once, when the containing page * loads. Initialization script content is written only after all HTML content that could be - * referenced from the script (in effect, just before the <code></body> tag). + * referenced from the script (in effect, just before the <code></body></code> tag). + * + * @deprecated To be removed sometime after 4.1. + * @see [EMAIL PROTECTED] #addInitializationScript(IComponent, String)} */ - public void addInitializationScript(String script); + void addInitializationScript(String script); /** + * Adds initialization script. Initialization script is executed once, when the containing page + * loads. Initialization script content is written only after all HTML content that could be + * referenced from the script (in effect, just before the <code></body></code> tag). + * + * @param target + * The component the script is being added for. + * @param script + * The script to add. + */ + void addInitializationScript(IComponent target, String script); + + /** * Adds an external script. The processor is expected to ensure that external scripts are only * loaded a single time per page. + * + * @deprecated To be removed sometime after 4.1 + * @see [EMAIL PROTECTED] #addExternalScript(IComponent, Resource)} */ - public void addExternalScript(Resource resource); + void addExternalScript(Resource resource); /** + * Adds an external script. The processor is expected to ensure that external scripts are only + * loaded a single time per page. The target will be checked to filter the scripts + * added for those types of responses that require them. + * + * @param target + * The component the script is being added for. + * @param resource + * The external script to add. + */ + void addExternalScript(IComponent target, Resource resource); + + /** * Ensures that the given string is unique. The string is either returned unchanged, or a suffix * is appended to ensure uniqueness. */ - public String getUniqueString(String baseValue); -} \ No newline at end of file + String getUniqueString(String baseValue); +} Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/PageRenderSupport.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/PageRenderSupport.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/PageRenderSupport.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/PageRenderSupport.java Fri Apr 21 10:08:00 2006 @@ -32,5 +32,5 @@ * <code>tapestry_preload[7].src</code>. */ - public String getPreloadedImageReference(String url); -} \ No newline at end of file + String getPreloadedImageReference(String url); +} Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.java Fri Apr 21 10:08:00 2006 @@ -16,6 +16,7 @@ import org.apache.hivemind.Resource; import org.apache.tapestry.AbstractComponent; +import org.apache.tapestry.IComponent; import org.apache.tapestry.IMarkupWriter; import org.apache.tapestry.IRequestCycle; import org.apache.tapestry.PageRenderSupport; @@ -59,10 +60,18 @@ public void addInitializationScript(String script) { - _pageRenderSupport.addInitializationScript(script); + addInitializationScript(null, script); } /** + * [EMAIL PROTECTED] + */ + public void addInitializationScript(IComponent target, String script) + { + _pageRenderSupport.addInitializationScript(target, script); + } + + /** * Adds additional scripting code to the page. This code will be added to a large block of * scripting code at the top of the page (i.e., the before the <body> tag). * <p> @@ -81,10 +90,19 @@ public void addBodyScript(String script) { - _pageRenderSupport.addBodyScript(script); + addBodyScript(null, script); } /** + * + * [EMAIL PROTECTED] + */ + public void addBodyScript(IComponent target, String script) + { + _pageRenderSupport.addBodyScript(target, script); + } + + /** * Used to include a script from an outside URL (the scriptLocation is a URL, probably obtained * from an asset. This adds an <script src="..."> tag before the main <script> tag. * The Body component ensures that each URL is included only once. @@ -94,10 +112,19 @@ public void addExternalScript(Resource scriptLocation) { - _pageRenderSupport.addExternalScript(scriptLocation); + addExternalScript(null, scriptLocation); } /** + * + * [EMAIL PROTECTED] + */ + public void addExternalScript(IComponent target, Resource scriptLocation) + { + _pageRenderSupport.addExternalScript(target, scriptLocation); + } + + /** * Retrieves the <code>Body</code> that was stored into the request cycle. This allows * components wrapped by the <code>Body</code> to locate it and access the services it * provides. @@ -117,7 +144,7 @@ super.prepareForRender(cycle); _pageRenderSupport = new PageRenderSupportImpl(getAssetFactory(), getResponse() - .getNamespace(), getLocation()); + .getNamespace(), getLocation(), cycle.getResponseBuilder()); } protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.jwc URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.jwc?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.jwc (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/html/Body.jwc Fri Apr 21 10:08:00 2006 @@ -34,5 +34,4 @@ <inject property="assetFactory" object="infrastructure:assetFactory"/> <inject property="response" object="infrastructure:response"/> - </component-specification> Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/AbstractLinkComponent.java Fri Apr 21 10:08:00 2006 @@ -159,7 +159,7 @@ buffer.append("}\n\n"); - pageRenderSupport.addBodyScript(buffer.toString()); + pageRenderSupport.addBodyScript(this, buffer.toString()); } writer.attribute(attributeName, "javascript:" + wrapperFunctionName + "();"); Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/ILinkRenderer.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/ILinkRenderer.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/ILinkRenderer.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/link/ILinkRenderer.java Fri Apr 21 10:08:00 2006 @@ -48,6 +48,6 @@ * **/ - public void renderLink(IMarkupWriter writer, IRequestCycle cycle, ILinkComponent linkComponent); + void renderLink(IMarkupWriter writer, IRequestCycle cycle, ILinkComponent linkComponent); } Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/script/ScriptSessionImpl.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/script/ScriptSessionImpl.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/script/ScriptSessionImpl.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/script/ScriptSessionImpl.java Fri Apr 21 10:08:00 2006 @@ -17,6 +17,7 @@ import java.util.Map; import org.apache.hivemind.Resource; +import org.apache.tapestry.IComponent; import org.apache.tapestry.IRequestCycle; import org.apache.tapestry.IScriptProcessor; import org.apache.tapestry.coerce.ValueConverter; @@ -92,17 +93,32 @@ public void addBodyScript(String script) { - _processor.addBodyScript(script); + addBodyScript(null, script); } - + + public void addBodyScript(IComponent target, String script) + { + _processor.addBodyScript(target, script); + } + public void addExternalScript(Resource resource) { - _processor.addExternalScript(resource); + addExternalScript(null, resource); + } + + public void addExternalScript(IComponent target, Resource resource) + { + _processor.addExternalScript(target, resource); } public void addInitializationScript(String script) { - _processor.addInitializationScript(script); + addInitializationScript(null, script); + } + + public void addInitializationScript(IComponent target, String script) + { + _processor.addInitializationScript(target, script); } public String getUniqueString(String baseValue) Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/ResponseBuilder.java Fri Apr 21 10:08:00 2006 @@ -15,6 +15,7 @@ import java.io.IOException; +import org.apache.tapestry.IComponent; import org.apache.tapestry.IMarkupWriter; import org.apache.tapestry.IRender; import org.apache.tapestry.IRequestCycle; @@ -25,6 +26,7 @@ * with components for an ajax request library version and type. * * @author jkuhnert + * @since 4.1 */ public interface ResponseBuilder { @@ -63,4 +65,35 @@ */ IMarkupWriter getWriter(); + + /** + * Determines if the specified component should have its javascript + * body added to the response. + * + * @param target + * The component to allow/disallow body script content from. + * @return True if the component script should be allowed. + */ + boolean isBodyScriptAllowed(IComponent target); + + /** + * Determines if the specified component should have its javascript + * initialization added to the response. + * + * @param target + * The component to allow/disallow initialization script content from. + * @return True if the component script should be allowed. + */ + boolean isInitializationScriptAllowed(IComponent target); + + /** + * Determines if the specified component should have its javascript + * external resource scripts added to the response. + * + * @param target + * The component to check for inclusion/exclusion. + * @return True if external scripts from this component should be added to + * the response. + */ + boolean isExternalScriptAllowed(IComponent target); } Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/DefaultResponseBuilder.java Fri Apr 21 10:08:00 2006 @@ -16,6 +16,7 @@ import java.io.IOException; import java.io.PrintWriter; +import org.apache.tapestry.IComponent; import org.apache.tapestry.IMarkupWriter; import org.apache.tapestry.IPage; import org.apache.tapestry.IRender; @@ -139,5 +140,29 @@ return NullWriter.getSharedInstance(); return _writer; + } + + /** + * [EMAIL PROTECTED] + */ + public boolean isBodyScriptAllowed(IComponent target) + { + return true; + } + + /** + * [EMAIL PROTECTED] + */ + public boolean isExternalScriptAllowed(IComponent target) + { + return true; + } + + /** + * [EMAIL PROTECTED] + */ + public boolean isInitializationScriptAllowed(IComponent target) + { + return true; } } Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/services/impl/JSONResponseBuilder.java Fri Apr 21 10:08:00 2006 @@ -153,12 +153,36 @@ render.render(_nullWriter, cycle); } - + /** * [EMAIL PROTECTED] */ public IMarkupWriter getWriter() { return _nullWriter; + } + + /** + * [EMAIL PROTECTED] + */ + public boolean isBodyScriptAllowed(IComponent target) + { + return false; + } + + /** + * [EMAIL PROTECTED] + */ + public boolean isExternalScriptAllowed(IComponent target) + { + return false; + } + + /** + * [EMAIL PROTECTED] + */ + public boolean isInitializationScriptAllowed(IComponent target) + { + return false; } } Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java (original) +++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java Fri Apr 21 10:08:00 2006 @@ -24,11 +24,13 @@ import org.apache.hivemind.Resource; import org.apache.hivemind.util.Defense; import org.apache.tapestry.IAsset; +import org.apache.tapestry.IComponent; import org.apache.tapestry.IMarkupWriter; import org.apache.tapestry.IRequestCycle; import org.apache.tapestry.PageRenderSupport; import org.apache.tapestry.Tapestry; import org.apache.tapestry.asset.AssetFactory; +import org.apache.tapestry.services.ResponseBuilder; /** * Implementation of [EMAIL PROTECTED] org.apache.tapestry.PageRenderSupport}. The @@ -43,6 +45,8 @@ private final Location _location; + private final ResponseBuilder _builder; + // Lines that belong inside the onLoad event handler for the <body> tag. private StringBuffer _initializationScript; @@ -71,18 +75,20 @@ private final IdAllocator _idAllocator; private final String _preloadName; - - public PageRenderSupportImpl(AssetFactory assetFactory, String namespace, Location location) + + public PageRenderSupportImpl(AssetFactory assetFactory, String namespace, + Location location, ResponseBuilder builder) { Defense.notNull(assetFactory, "assetService"); - + _assetFactory = assetFactory; _location = location; _idAllocator = new IdAllocator(namespace); - + _builder = builder; + _preloadName = (namespace.equals("") ? "tapestry" : namespace) + "_preload"; } - + /** * Returns the location, which may be used in error messages. In practical terms, this is the * location of the [EMAIL PROTECTED] org.apache.tapestry.html.Body} component. @@ -123,26 +129,48 @@ return reference; } - + public void addBodyScript(String script) { + addBodyScript(null, script); + } + + public void addBodyScript(IComponent target, String script) + { + if (!_builder.isBodyScriptAllowed(target)) return; + if (_bodyScript == null) _bodyScript = new StringBuffer(script.length()); _bodyScript.append(script); } - + public void addInitializationScript(String script) { + addInitializationScript(null, script); + } + + public void addInitializationScript(IComponent target, String script) + { + if (!_builder.isInitializationScriptAllowed(target)) return; + if (_initializationScript == null) _initializationScript = new StringBuffer(script.length() + 1); _initializationScript.append(script); _initializationScript.append('\n'); } - + public void addExternalScript(Resource scriptLocation) { + addExternalScript(null, scriptLocation); + + } + + public void addExternalScript(IComponent target, Resource scriptLocation) + { + if (!_builder.isExternalScriptAllowed(target)) return; + if (_externalScripts == null) _externalScripts = new ArrayList(); @@ -239,9 +267,13 @@ writer.attribute("language", "JavaScript"); writer.attribute("type", "text/javascript"); writer.printRaw("<!--\n"); - + + writer.printRaw("dojo.event.connect(window, 'onload', function(e) {\n"); + writer.printRaw(_initializationScript.toString()); - + + writer.printRaw("});"); + writer.printRaw("\n// -->"); writer.end(); } Modified: tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java (original) +++ tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java Fri Apr 21 10:08:00 2006 @@ -18,6 +18,7 @@ import java.util.List; import org.apache.hivemind.Resource; +import org.apache.tapestry.IComponent; import org.apache.tapestry.IScriptProcessor; import org.apache.tapestry.util.IdAllocator; @@ -39,12 +40,17 @@ public void addBodyScript(String script) { + addBodyScript(null, script); + } + + public void addBodyScript(IComponent target, String script) + { if (_body == null) _body = new StringBuffer(); _body.append(script); } - + public String getBody() { if (_body == null) @@ -55,12 +61,17 @@ public void addInitializationScript(String script) { + addInitializationScript(null, script); + } + + public void addInitializationScript(IComponent target, String script) + { if (_initialization == null) _initialization = new StringBuffer(); _initialization.append(script); } - + public String getInitialization() { if (_initialization == null) @@ -70,6 +81,11 @@ } public void addExternalScript(Resource scriptResource) + { + addExternalScript(null, scriptResource); + } + + public void addExternalScript(IComponent target, Resource scriptResource) { if (_externalScripts == null) _externalScripts = new ArrayList(); Modified: tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java (original) +++ tapestry/tapestry4/trunk/framework/src/test/org/apache/tapestry/util/TestPageRenderSupport.java Fri Apr 21 10:08:00 2006 @@ -26,6 +26,8 @@ import org.apache.tapestry.asset.AssetFactory; import org.apache.tapestry.markup.AsciiMarkupFilter; import org.apache.tapestry.markup.MarkupWriterImpl; +import org.apache.tapestry.services.ResponseBuilder; +import org.apache.tapestry.services.impl.DefaultResponseBuilder; import org.easymock.MockControl; /** @@ -71,6 +73,11 @@ return new MarkupWriterImpl("text/html", new PrintWriter(_writer), new AsciiMarkupFilter()); } + private ResponseBuilder newBuilder(IMarkupWriter writer) + { + return new DefaultResponseBuilder(writer); + } + private void assertOutput(String[] expectedLines) { StringBuffer buffer = new StringBuffer(); @@ -105,7 +112,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l, newBuilder(null)); assertSame(l, prs.getLocation()); @@ -121,7 +128,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l, newBuilder(writer)); assertEquals("tapestry_preload[0].src", prs.getPreloadedImageReference("/foo/bar.gif")); assertEquals("tapestry_preload[1].src", prs.getPreloadedImageReference("/zip/zap.png")); @@ -152,7 +159,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "NAMESPACE", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "NAMESPACE", l, newBuilder(writer)); assertEquals("NAMESPACE_preload[0].src", prs.getPreloadedImageReference("/foo/bar.gif")); @@ -176,7 +183,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l, newBuilder(writer)); prs.addBodyScript("myBodyScript();"); @@ -196,7 +203,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l, newBuilder(null)); assertEquals("foo", prs.getUniqueString("foo")); assertEquals("foo_0", prs.getUniqueString("foo")); @@ -213,7 +220,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "NAMESPACE", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "NAMESPACE", l, newBuilder(null)); assertEquals("fooNAMESPACE", prs.getUniqueString("foo")); assertEquals("fooNAMESPACE_0", prs.getUniqueString("foo")); @@ -231,7 +238,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l); + PageRenderSupportImpl prs = new PageRenderSupportImpl(factory, "", l, newBuilder(writer)); prs.addInitializationScript("myInitializationScript1();"); prs.addInitializationScript("myInitializationScript2();"); @@ -240,7 +247,9 @@ assertOutput(new String[] { "<script language=\"JavaScript\" type=\"text/javascript\"><!--", - "myInitializationScript1();", "myInitializationScript2();", "", "// --></script>" }); + "dojo.event.connect(window, 'onload', function(e) {", + "myInitializationScript1();", "myInitializationScript2();", + "});", "// --></script>" }); verifyControls(); } @@ -269,7 +278,7 @@ replayControls(); - PageRenderSupportImpl prs = new PageRenderSupportImpl(assetFactory, "", null); + PageRenderSupportImpl prs = new PageRenderSupportImpl(assetFactory, "", null, newBuilder(writer)); prs.addExternalScript(script1); prs.addExternalScript(script2); Modified: tapestry/tapestry4/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java (original) +++ tapestry/tapestry4/trunk/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java Fri Apr 21 10:08:00 2006 @@ -66,14 +66,14 @@ String namespace = _response.getNamespace(); - PageRenderSupportImpl support = new PageRenderSupportImpl( - _assetFactory, namespace, null); - - TapestryUtils.storePageRenderSupport(cycle, support); - IMarkupWriter nested = writer.getNestedWriter(); ResponseBuilder builder = new DefaultResponseBuilder(nested); + + PageRenderSupportImpl support = new PageRenderSupportImpl( + _assetFactory, namespace, null, builder); + + TapestryUtils.storePageRenderSupport(cycle, support); builder.renderResponse(cycle); Modified: tapestry/tapestry4/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java?rev=395949&r1=395948&r2=395949&view=diff ============================================================================== --- tapestry/tapestry4/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java (original) +++ tapestry/tapestry4/trunk/portlet/src/test/org/apache/tapestry/portlet/TestPortletRenderer.java Fri Apr 21 10:08:00 2006 @@ -28,6 +28,7 @@ import org.apache.tapestry.NestedMarkupWriter; import org.apache.tapestry.asset.AssetFactory; import org.apache.tapestry.markup.MarkupWriterSource; +import org.apache.tapestry.services.impl.DefaultResponseBuilder; import org.apache.tapestry.util.ContentType; import org.apache.tapestry.util.PageRenderSupportImpl; import org.apache.tapestry.web.WebResponse; @@ -99,6 +100,11 @@ private IRequestCycle newCycle(String pageName, IPage page) { + return newCycle(pageName, page, null); + } + + private IRequestCycle newCycle(String pageName, IPage page, IMarkupWriter writer) + { MockControl control = newControl(IRequestCycle.class); IRequestCycle cycle = (IRequestCycle) control.getMock(); @@ -113,7 +119,7 @@ // We can check that an instance of PageRenderSupport is passed in, but // we can't (easily) check thta it's configured the way we want. cycle.setAttribute("org.apache.tapestry.PageRenderSupport", new PageRenderSupportImpl( - newAssetFactory(), "", null)); + newAssetFactory(), "", null, new DefaultResponseBuilder(writer))); control.setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[] { null, new TypeMatcher() })); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]