You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2006/03/30 23:31:03 UTC
svn commit: r390244 - in /jakarta/tapestry/branches/4.0:
framework/src/java/org/apache/tapestry/engine/EngineMessages.java
portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java
status.xml
Author: jkuhnert
Date: Thu Mar 30 13:31:02 2006
New Revision: 390244
URL: http://svn.apache.org/viewcvs?rev=390244&view=rev
Log:
Rapheal fixes
Modified:
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/engine/EngineMessages.java
jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java
jakarta/tapestry/branches/4.0/status.xml
Modified: jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/engine/EngineMessages.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/engine/EngineMessages.java?rev=390244&r1=390243&r2=390244&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/engine/EngineMessages.java (original)
+++ jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/engine/EngineMessages.java Thu Mar 30 13:31:02 2006
@@ -54,7 +54,7 @@
return _formatter.format("exception-during-cleanup", cause);
}
- static String validateCycle(List pageNames)
+ public static String validateCycle(List pageNames)
{
StringBuffer buffer = new StringBuffer();
int count = pageNames.size();
Modified: jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java?rev=390244&r1=390243&r2=390244&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java (original)
+++ jakarta/tapestry/branches/4.0/portlet/src/java/org/apache/tapestry/portlet/PortletRendererImpl.java Thu Mar 30 13:31:02 2006
@@ -16,14 +16,19 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
+import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IPage;
import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.PageRedirectException;
import org.apache.tapestry.Tapestry;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.asset.AssetFactory;
+import org.apache.tapestry.engine.EngineMessages;
import org.apache.tapestry.markup.MarkupWriterSource;
import org.apache.tapestry.util.ContentType;
import org.apache.tapestry.util.PageRenderSupportImpl;
@@ -49,46 +54,88 @@
public void renderPage(IRequestCycle cycle, String pageName) throws IOException
{
- cycle.activate(pageName);
-
- IPage page = cycle.getPage();
-
- ContentType contentType = page.getResponseContentType();
-
- PrintWriter printWriter = _response.getPrintWriter(contentType);
-
- IMarkupWriter writer = _markupWriterSource.newMarkupWriter(printWriter, contentType);
-
- String namespace = _response.getNamespace();
-
- PageRenderSupportImpl support = new PageRenderSupportImpl(_assetFactory, namespace, null);
-
- TapestryUtils.storePageRenderSupport(cycle, support);
-
- IMarkupWriter nested = writer.getNestedWriter();
-
- cycle.renderPage(nested);
-
- String id = "Tapestry Portlet " + _applicationId + " " + namespace;
-
- writer.comment("BEGIN " + id);
- writer.comment("Page: " + page.getPageName());
- writer.comment("Generated: " + new Date());
- writer.comment("Framework version: " + Tapestry.VERSION);
-
- support.writeBodyScript(writer, cycle);
-
- nested.close();
-
- support.writeInitializationScript(writer);
-
- writer.comment("END " + id);
-
- writer.close();
-
- // TODO: Trap errors and do some error reporting here?
+ try {
+ cycle.activate(pageName);
+
+ IPage page = cycle.getPage();
+
+ ContentType contentType = page.getResponseContentType();
+
+ PrintWriter printWriter = _response.getPrintWriter(contentType);
+
+ IMarkupWriter writer = _markupWriterSource.newMarkupWriter(printWriter, contentType);
+
+ String namespace = _response.getNamespace();
+
+ PageRenderSupportImpl support = new PageRenderSupportImpl(_assetFactory, namespace, null);
+
+ TapestryUtils.storePageRenderSupport(cycle, support);
+
+ IMarkupWriter nested = writer.getNestedWriter();
+
+ cycle.renderPage(nested);
+
+ String id = "Tapestry Portlet " + _applicationId + " " + namespace;
+
+ writer.comment("BEGIN " + id);
+ writer.comment("Page: " + page.getPageName());
+ writer.comment("Generated: " + new Date());
+ writer.comment("Framework version: " + Tapestry.VERSION);
+
+ support.writeBodyScript(writer, cycle);
+
+ nested.close();
+
+ support.writeInitializationScript(writer);
+
+ writer.comment("END " + id);
+
+ writer.close();
+
+ // TODO: Trap errors and do some error reporting here?
+ }
+ catch (PageRedirectException e) {
+ handlePageRedirectException(cycle, e);
+ }
}
+ protected void handlePageRedirectException(IRequestCycle cycle, PageRedirectException exception)
+ throws IOException
+ {
+ List pageNames = new ArrayList();
+
+ String pageName = exception.getTargetPageName();
+
+ while (true)
+ {
+ if (pageNames.contains(pageName))
+ {
+ pageNames.add(pageName);
+
+ throw new ApplicationRuntimeException(EngineMessages.validateCycle(pageNames));
+ }
+
+ // Record that this page has been a target.
+
+ pageNames.add(pageName);
+
+ try
+ {
+ // Attempt to activate the new page.
+
+ cycle.activate(pageName);
+
+ break;
+ }
+ catch (PageRedirectException secondRedirectException)
+ {
+ pageName = secondRedirectException.getTargetPageName();
+ }
+ }
+
+ renderPage(cycle, pageName);
+ }
+
public void setMarkupWriterSource(MarkupWriterSource markupWriterSource)
{
_markupWriterSource = markupWriterSource;
Modified: jakarta/tapestry/branches/4.0/status.xml
URL: http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/status.xml?rev=390244&r1=390243&r2=390244&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/status.xml (original)
+++ jakarta/tapestry/branches/4.0/status.xml Thu Mar 30 13:31:02 2006
@@ -181,6 +181,9 @@
<action type="fix" dev="PF" fixes-bug="TAPESTRY-774" due-to="Mikaël Cluseau">
PopupLinkRenderer fails in Form rewind.
</action>
+ <action type="fix" dev="JK" fixes-bug="TAPESTRY-855" due-to="Raphael Jean" >
+ Throwing a PageRedirectException from the pageBeginRender() method in a portlet page doesn't redirect to the given page. Instead a NPE is thrown and the exception page is displayed.
+ </action>
</release>
<release version="4.0" date="Jan 6 2006">
<action type="update" dev="HLS">Add link to DeveloperWorks Tapestry article</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org