Author: julien(a)jboss.com
Date: 2008-02-07 17:34:26 -0500 (Thu, 07 Feb 2008)
New Revision: 9841
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/BufferingResponse.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java
Log:
more streaming
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -112,7 +112,7 @@
HttpServletRequest req,
HttpServletResponse resp,
ServletContext servletContext)
- throws IllegalRequestException, IOException, ClassNotFoundException
+ throws IllegalRequestException, IOException
{
StateControllerContextImpl tmp = new StateControllerContextImpl(this);
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -121,7 +121,15 @@
}
//
- Map<String, String> parameters = Collections.singletonMap(PAGE_STATE,
pageState);
+ Map<String, String> parameters;
+ if (pageState != null)
+ {
+ parameters = Collections.singletonMap(PAGE_STATE, pageState);
+ }
+ else
+ {
+ parameters = Collections.emptyMap();
+ }
//
return renderURL(parameters, wantSecure, wantAuthenticated, relative);
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -32,8 +32,6 @@
import org.jboss.portal.portlet.test.jsp.response.portlet.EndPortletChunk;
import org.jboss.portal.portlet.test.jsp.response.BufferingResponse;
import org.jboss.portal.portlet.test.jsp.response.ResponseBuffer;
-import org.jboss.portal.portlet.test.jsp.response.StartPageChunk;
-import org.jboss.portal.portlet.test.jsp.response.EndPageChunk;
import org.jboss.portal.portlet.test.controller.PortletURLRenderer;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
@@ -68,10 +66,6 @@
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Map;
-import java.util.Iterator;
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Collections;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -100,44 +94,23 @@
public void doFilter(HttpServletRequest req, HttpServletResponse resp, FilterChain
chain) throws IOException, ServletException
{
- BufferingResponse bufferingResponse = new BufferingResponse(resp);
+ PortletInvoker invoker =
(PortletInvoker)getServletContext().getAttribute("ConsumerPortletInvoker");
//
- chain.doFilter(req, bufferingResponse);
-
- //
- ResponseBuffer buffer = bufferingResponse.getBuffer();
- buffer.close();
-
- //
+ PagePortletControllerContext context;
try
{
- service(req, resp, buffer);
+ context = new PagePortletControllerContext(
+ req,
+ resp,
+ getServletContext(),
+ invoker);
}
- catch (ClassNotFoundException e)
+ catch (PortletInvokerException e)
{
throw new ServletException(e);
}
- }
- public void destroy()
- {
- this.config = null;
- }
-
- protected void service(HttpServletRequest req, HttpServletResponse resp,
ResponseBuffer buffer) throws ServletException, IOException, ClassNotFoundException
- {
- PortletInvoker invoker =
(PortletInvoker)getServletContext().getAttribute("ConsumerPortletInvoker");
-
- //
- PagePortletControllerContext context = new PagePortletControllerContext(
- req,
- resp,
- getServletContext(),
- invoker,
- buffer);
-
- //
PageNavigationalState pageState = null;
if (context.getRequest() != null)
{
@@ -162,7 +135,7 @@
//
PortletURLRenderer renderer = new PortletURLRenderer(
(StateControllerContextImpl)context.getStateControllerContext(),
- pageState,
+ pageUpdate.getPageState(),
context.getClientRequest(),
context.getClientResponse());
@@ -189,7 +162,7 @@
if (pir instanceof FragmentResponse)
{
FragmentResponse fragment = (FragmentResponse)pir;
-
+
//
if (fragment.getType() == FragmentResponse.TYPE_EMPTY)
{
@@ -236,6 +209,9 @@
{
// todo
}
+
+ //
+ return;
}
else
{
@@ -248,13 +224,41 @@
}
//
- Page page = context.getPage();
- if (pageState == null)
+ BufferingResponse bufferingResponse = new BufferingResponse(resp, context,
pageState);
+
+ //
+ chain.doFilter(req, bufferingResponse);
+
+ //
+ ResponseBuffer buffer = bufferingResponse.getBuffer();
+ buffer.close();
+
+ //
+ try
{
- pageState = context.getStateControllerContext().createPageState(false);
+ render(req, bufferingResponse);
}
+ catch (ClassNotFoundException e)
+ {
+ throw new ServletException(e);
+ }
+ }
+ public void destroy()
+ {
+ this.config = null;
+ }
+
+ protected void render(HttpServletRequest req, BufferingResponse resp) throws
ServletException, IOException, ClassNotFoundException
+ {
+
+ //
+ PagePortletControllerContext context = resp.getPortletControllerContext();
+
+ //
+
// Look if we need to handle maxmized rendering
+/*
for (Window window : page.getWindows())
{
WindowNavigationalState windowState =
pageState.getWindowNavigationalState(window.getId());
@@ -317,19 +321,18 @@
page = new Page(chunks, windows);
}
}
+*/
//
- Map<String, PortletInvocationResponse> responses = page.render(context,
pageState);
+// Map<String, PortletInvocationResponse> responses = page.render(context,
pageState);
//
- OutputStream out = resp.getOutputStream();
+ OutputStream out = resp.getResponse().getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(out);
//
- String windowId = null;
StartPortletChunk startPortletChunk = null;
- PortletInvocationResponse portletResponse = null;
- for (Chunk chunk : page.getChunks())
+ for (Chunk chunk : resp.getBuffer().getChunks())
{
if (chunk instanceof BytesChunk)
{
@@ -346,12 +349,10 @@
else if (chunk instanceof StartPortletChunk)
{
startPortletChunk = (StartPortletChunk)chunk;
- Window window = page.getWindow(startPortletChunk);
- windowId = window.getId();
- portletResponse = responses.get(windowId);
}
else if (chunk instanceof StartPortletTitleChunk)
{
+ PortletInvocationResponse portletResponse = startPortletChunk.getResponse();
if (portletResponse != null)
{
if (portletResponse instanceof FragmentResponse)
@@ -365,13 +366,14 @@
else if (chunk instanceof PortletURLChunk)
{
final PortletURLChunk portletURL = (PortletURLChunk)chunk;
+ PortletInvocationResponse portletResponse = startPortletChunk.getResponse();
if (portletResponse != null)
{
if (portletResponse instanceof FragmentResponse)
{
PortletURLRenderer renderer = new PortletURLRenderer(
(StateControllerContextImpl)context.getStateControllerContext(),
- pageState,
+ resp.getPageState(),
context.getClientRequest(),
context.getClientResponse());
@@ -399,7 +401,7 @@
};
//
- String renderedURL = renderer.renderURL(windowId, url, null, null,
true);
+ String renderedURL =
renderer.renderURL(startPortletChunk.getWindowId(), url, null, null, true);
writer.write(renderedURL);
writer.flush();
}
@@ -407,12 +409,17 @@
}
else if (chunk instanceof PortletMarkupChunk)
{
+ PortletInvocationResponse portletResponse = startPortletChunk.getResponse();
if (portletResponse != null)
{
if (portletResponse instanceof FragmentResponse)
{
FragmentResponse fragment = (FragmentResponse)portletResponse;
- WindowNavigationalState windowNS =
pageState.getWindowNavigationalState(windowId);
+ WindowNavigationalState windowNS = null;
+ if (resp.getPageState() != null)
+ {
+ windowNS =
resp.getPageState().getWindowNavigationalState(startPortletChunk.getWindowId());
+ }
if (windowNS == null ||
!windowNS.getWindowState().equals(WindowState.MINIMIZED))
{
if (fragment.getType() != FragmentResponse.TYPE_EMPTY)
@@ -447,9 +454,7 @@
}
else if (chunk instanceof EndPortletChunk)
{
- windowId = null;
startPortletChunk = null;
- portletResponse = null;
}
}
out.close();
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -23,12 +23,10 @@
package org.jboss.portal.portlet.test.jsp;
import org.jboss.portal.portlet.test.controller.AbstractPortletControllerContext;
-import org.jboss.portal.portlet.test.jsp.response.Chunk;
-import org.jboss.portal.portlet.test.jsp.response.portlet.StartPortletChunk;
-import org.jboss.portal.portlet.test.jsp.response.ResponseBuffer;
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.PortletInvoker;
+import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.controller.event.EventControllerContext;
import org.jboss.portal.portlet.controller.impl.event.EventControllerContextImpl;
@@ -43,7 +41,6 @@
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
-import java.util.LinkedHashMap;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -51,9 +48,6 @@
*/
public class PagePortletControllerContext extends AbstractPortletControllerContext
{
-
- /** . */
- private final Page page;
/** . */
private final PortletInvoker invoker;
@@ -61,70 +55,49 @@
/** . */
private final EventControllerContext eventControllerContext;
+ /** . */
+ private final Map<Key, Portlet> portlets;
+
public PagePortletControllerContext(
HttpServletRequest req,
HttpServletResponse resp,
ServletContext servletContext,
- PortletInvoker invoker,
- ResponseBuffer buffer)
- throws IllegalRequestException, IOException, ClassNotFoundException,
ServletException
+ PortletInvoker invoker)
+ throws IllegalRequestException, IOException, ServletException,
PortletInvokerException
{
super(req, resp, servletContext);
- // Collect portlets to create the page
- int counter = 0;
- Map<StartPortletChunk, Window> windows = new
LinkedHashMap<StartPortletChunk, Window>();
- for (Chunk chunk : buffer.getChunks())
+ //
+ Map<Key, Portlet> portlets = new HashMap<Key, Portlet>();
+ for (Portlet portlet : invoker.getPortlets())
{
- if (chunk instanceof StartPortletChunk)
- {
- StartPortletChunk startPortletChunk = (StartPortletChunk)chunk;
- String windowId = "" + counter++;
-
- //
- try
- {
- for (Portlet portlet : invoker.getPortlets())
- {
- PortletInfo portletInfo = portlet.getInfo();
- String portletName = portletInfo.getName();
- String applicationName = portletInfo.getApplicationName();
-
- //
- if (applicationName.equals(startPortletChunk.getApplicationName())
&& portletName.equals(startPortletChunk.getPortletName()))
- {
- windows.put(startPortletChunk, new Window(windowId, portlet));
- }
- }
- }
- catch (PortletInvokerException e)
- {
- throw new ServletException(e);
- }
- }
+ PortletInfo portletInfo = portlet.getInfo();
+ String portletName = portletInfo.getName();
+ String applicationName = portletInfo.getApplicationName();
+ Key key = new Key(applicationName, portletName);
+ portlets.put(key, portlet);
}
//
-
-
- //
- this.page = new Page(buffer.getChunks(), windows);
+ this.portlets = portlets;
this.invoker = invoker;
this.eventControllerContext = new EventControllerContextImpl(invoker);
}
- public Page getPage()
+ public Portlet findPortlet(String applicationName, String portletName)
{
- return page;
+ return portlets.get(new Key(applicationName, portletName));
}
protected Portlet getPortlet(String windowId) throws PortletInvokerException
{
- Window window = page.getWindow(windowId);
- return window.getPortlet();
+ int index = windowId.lastIndexOf('.');
+ String portletId = windowId.substring(0, index);
+ PortletContext portletContext = PortletContext.createPortletContext(portletId);
+ return invoker.getPortlet(portletContext);
}
- protected PortletInvocationResponse invoke(PortletInvocation invocation) throws
PortletInvokerException
+ public PortletInvocationResponse invoke(PortletInvocation invocation) throws
PortletInvokerException
{
return invoker.invoke(invocation);
}
@@ -133,4 +106,40 @@
{
return eventControllerContext;
}
+
+ private static class Key
+ {
+
+ /** . */
+ private final String applicationName;
+
+ /** . */
+ private final String portletName;
+
+ private Key(String applicationName, String portletName)
+ {
+ this.applicationName = applicationName;
+ this.portletName = portletName;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj == this)
+ {
+ return true;
+ }
+ if (obj instanceof Key)
+ {
+ Key that = (Key)obj;
+ return applicationName.equals(that.applicationName) &&
portletName.equals(that.portletName);
+ }
+ return false;
+ }
+
+ public int hashCode()
+ {
+ return applicationName.hashCode() + portletName.hashCode();
+ }
+ }
+
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/BufferingResponse.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/BufferingResponse.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/BufferingResponse.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -24,6 +24,8 @@
import org.jboss.portal.portlet.test.jsp.response.ResponseBuffer;
import org.jboss.portal.portlet.test.jsp.response.Chunk;
+import org.jboss.portal.portlet.test.jsp.PagePortletControllerContext;
+import org.jboss.portal.portlet.controller.state.PageNavigationalState;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
@@ -41,11 +43,37 @@
/** . */
private final ResponseBuffer buffer = new ResponseBuffer();
- public BufferingResponse(HttpServletResponse response)
+ /** . */
+ private final PagePortletControllerContext portletControllerContext;
+
+ /** . */
+ private final PageNavigationalState pageState;
+
+ /** . */
+ private int count = 0;
+
+ public BufferingResponse(
+ HttpServletResponse response,
+ PagePortletControllerContext portletControllerContext,
+ PageNavigationalState pageState)
{
super(response);
+
+ //
+ this.portletControllerContext = portletControllerContext;
+ this.pageState = pageState;
}
+ public PageNavigationalState getPageState()
+ {
+ return pageState;
+ }
+
+ public PagePortletControllerContext getPortletControllerContext()
+ {
+ return portletControllerContext;
+ }
+
public ResponseBuffer getBuffer()
{
return buffer;
@@ -65,4 +93,9 @@
{
buffer.close();
}
+
+ public String nextId()
+ {
+ return "" + count++;
+ }
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -25,6 +25,7 @@
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
import org.jboss.portal.portlet.test.jsp.response.Chunk;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import java.util.Set;
@@ -42,6 +43,12 @@
private final String applicationName;
/** . */
+ private final String windowId;
+
+ /** . */
+ private final PortletInvocationResponse response;
+
+ /** . */
private final Mode initialMode;
/** . */
@@ -50,10 +57,19 @@
/** . */
private final Set<WindowState> supportedWindowStates;
- public StartPortletChunk(String portletName, String applicationName, Mode initialMode,
Set<Mode> supportedModes, Set<WindowState> supportedWindowStates)
+ public StartPortletChunk(
+ String portletName,
+ String applicationName,
+ String windowId,
+ PortletInvocationResponse response,
+ Mode initialMode,
+ Set<Mode> supportedModes,
+ Set<WindowState> supportedWindowStates)
{
this.portletName = portletName;
this.applicationName = applicationName;
+ this.windowId = windowId;
+ this.response = response;
this.initialMode = initialMode;
this.supportedModes = supportedModes;
this.supportedWindowStates = supportedWindowStates;
@@ -69,6 +85,16 @@
return applicationName;
}
+ public String getWindowId()
+ {
+ return windowId;
+ }
+
+ public PortletInvocationResponse getResponse()
+ {
+ return response;
+ }
+
public Mode getInitialMode()
{
return initialMode;
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java 2008-02-07
21:33:34 UTC (rev 9840)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java 2008-02-07
22:34:26 UTC (rev 9841)
@@ -24,9 +24,27 @@
import org.jboss.portal.portlet.test.jsp.response.portlet.StartPortletChunk;
import org.jboss.portal.portlet.test.jsp.response.portlet.EndPortletChunk;
+import org.jboss.portal.portlet.test.jsp.response.BufferingResponse;
+import org.jboss.portal.portlet.test.jsp.PagePortletControllerContext;
+import org.jboss.portal.portlet.test.controller.TestInstanceContext;
+import org.jboss.portal.portlet.test.controller.TestPortalContext;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
+import org.jboss.portal.portlet.invocation.RenderInvocation;
+import org.jboss.portal.portlet.controller.state.PageNavigationalState;
+import org.jboss.portal.portlet.controller.state.WindowNavigationalState;
+import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.Portlet;
+import org.jboss.portal.portlet.impl.spi.AbstractClientContext;
+import org.jboss.portal.portlet.impl.spi.AbstractServerContext;
+import org.jboss.portal.portlet.impl.spi.AbstractUserContext;
+import org.jboss.portal.portlet.impl.spi.AbstractWindowContext;
+import org.jboss.portal.portlet.impl.spi.AbstractSecurityContext;
+import org.jboss.portal.portlet.spi.PortletInvocationContext;
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
import org.jboss.portal.common.util.Tools;
+import org.jboss.portal.common.util.ParameterMap;
import javax.servlet.jsp.JspException;
import java.io.IOException;
@@ -114,6 +132,38 @@
public int doStartTag() throws JspException
{
+
+ //
+ BufferingResponse response = (BufferingResponse)pageContext.getResponse();
+ StartPortletChunk chunk = render(response);
+
+ //
+ try
+ {
+ pageContext.getOut().flush();
+ }
+ catch (IOException e)
+ {
+ throw new JspException(e);
+ }
+
+ //
+ addChunk(chunk);
+
+ //
+ return EVAL_BODY_INCLUDE;
+ }
+
+ public int doEndTag() throws JspException
+ {
+ addChunk(new EndPortletChunk());
+
+ //
+ return EVAL_PAGE;
+ }
+
+ public StartPortletChunk render(BufferingResponse response)
+ {
Set<Mode> supportedModes = new LinkedHashSet<Mode>();
if (supportedModeValues != null)
{
@@ -151,32 +201,91 @@
}
//
+ PagePortletControllerContext context = response.getPortletControllerContext();
+
+ //
+ Portlet portlet = context.findPortlet(applicationName, name);
+
+ //
+ String windowId = portlet.getContext().getId() + "." +
response.nextId();
+ PageNavigationalState pageNS = response.getPageState();
+
+ //
+ WindowNavigationalState windowNS = null;
+ if (pageNS != null)
+ {
+ windowNS = pageNS.getWindowNavigationalState(windowId);
+ }
+
+ //
+ ParameterMap publicNS = null;
+ if (pageNS != null)
+ {
+ publicNS = pageNS.getPublicNavigationalState(windowId);
+ }
+
+ //
+ Mode mode = Mode.VIEW;
+ WindowState windowState = WindowState.NORMAL;
+ StateString portletNS = null;
+
+ //
+ if (windowNS != null)
+ {
+ if (windowNS.getMode() != null)
+ {
+ mode = windowNS.getMode();
+ }
+ if (windowNS.getWindowState() != null)
+ {
+ windowState = windowNS.getWindowState();
+ }
+ if (windowNS.getPortletNavigationalState() != null)
+ {
+ portletNS = windowNS.getPortletNavigationalState();
+ }
+ }
+
+
+ //
+ PortletInvocationContext renderContext =
context.createPortletInvocationContext(windowId, pageNS);
+ RenderInvocation render = new RenderInvocation(renderContext);
+ render.setClientContext(new AbstractClientContext(context.getClientRequest()));
+ render.setServerContext(new AbstractServerContext(context.getClientRequest(),
context.getClientResponse()));
+ render.setInstanceContext(new TestInstanceContext(context.getClientRequest(),
portlet.getContext(), false));
+ render.setUserContext(new AbstractUserContext(context.getClientRequest()));
+ render.setWindowContext(new AbstractWindowContext(windowId));
+ render.setPortalContext(new TestPortalContext());
+ render.setSecurityContext(new
AbstractSecurityContext(context.getClientRequest()));
+ render.setTarget(portlet.getContext());
+ render.setMode(mode);
+ render.setWindowState(windowState);
+ render.setNavigationalState(portletNS);
+ render.setPublicNavigationalState(publicNS);
+
+ //
+ PortletInvocationResponse portletResponse = null;
try
{
- pageContext.getOut().flush();
+ portletResponse = context.invoke(render);
+
+
}
- catch (IOException e)
+ catch (PortletInvokerException e)
{
- throw new JspException(e);
+ e.printStackTrace();
+
+ // todo
}
//
- addChunk(new StartPortletChunk(
+ return new StartPortletChunk(
name,
applicationName,
+ windowId,
+ portletResponse,
initialMode,
supportedModes,
- supportedWindowStates));
-
- //
- return EVAL_BODY_INCLUDE;
+ supportedWindowStates);
}
-
- public int doEndTag() throws JspException
- {
- addChunk(new EndPortletChunk());
-
- //
- return EVAL_PAGE;
- }
}