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]