Author: chris.laprun(a)jboss.com
Date: 2008-01-30 13:33:53 -0500 (Wed, 30 Jan 2008)
New Revision: 9656
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
Log:
- Removed unreachable statement.
- Started re-organizing.
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-30
17:50:44 UTC (rev 9655)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-30
18:33:53 UTC (rev 9656)
@@ -57,6 +57,7 @@
import org.jboss.portal.portlet.invocation.response.ResponseProperties;
import org.jboss.portal.portlet.invocation.response.StateResponse;
import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
+import org.jboss.portal.portlet.spi.PortalContext;
import org.jboss.portal.portlet.spi.ResourceInvocationContext;
import org.jboss.portal.web.IllegalRequestException;
import org.w3c.dom.Element;
@@ -95,17 +96,254 @@
private final Logger log;
/** . */
- private final AbstractPortalContext portalContext;
+ private final PortalContext portalContext;
public PortletController() throws IllegalRequestException,
UnsupportedEncodingException
{
+ //
+ this.log = Logger.getLogger(PortletController.class);
+
Map<String, String> portalProperties = new HashMap<String, String>();
portalProperties.put("javax.portlet.markup.head.element.support",
"true");
- AbstractPortalContext portalContext = new AbstractPortalContext(portalProperties);
+ this.portalContext = new AbstractPortalContext(portalProperties);
+ }
+
+ public void process(ControllerRequest controllerRequest) throws
PortletInvokerException, IOException
+ {
+ if (controllerRequest instanceof ViewRequest)
+ {
+ render(controllerRequest.controllerContext, new ResponseProperties(), new
PageNavigationalState());
+ }
+ else if (controllerRequest instanceof ContainerRequest)
+ {
+ process((ContainerRequest)controllerRequest);
+ }
+ }
+
+ public void process(ContainerRequest containerRequest) throws PortletInvokerException,
IOException
+ {
+ PortletControllerContext context = containerRequest.controllerContext;
+ HttpServletResponse resp = context.getClientResponse();
+
//
- this.log = Logger.getLogger(PortletController.class);
- this.portalContext = portalContext;
+ if (containerRequest instanceof PortletRequest)
+ {
+ PortletRequest portletRequest = (PortletRequest)containerRequest;
+
+ //
+ PortletInvocationResponse response = invoke(containerRequest);
+
+ //
+ ResponseProperties requestProperties = new ResponseProperties();
+
+ //
+ if (response instanceof ErrorResponse)
+ {
+ ErrorResponse error = (ErrorResponse)response;
+
+ //
+ if (error.getCause() != null)
+ {
+ log.error("Portlet action threw an error: " +
error.getMessage(), error.getCause());
+ }
+ else
+ {
+ log.error("Portlet action threw an error: " +
error.getMessage());
+ }
+
+ //
+ resp.sendError(404, error.getMessage());
+ }
+ else if (response instanceof StateResponse)
+ {
+ StateResponse stateResponse = (StateResponse)response;
+
+ // Update portlet NS
+ if (response instanceof UpdateNavigationalStateResponse)
+ {
+ UpdateNavigationalStateResponse updateResponse =
(UpdateNavigationalStateResponse)response;
+ updateNavigationalState(
+ context,
+ containerRequest.portletId,
+ updateResponse,
+ portletRequest.pageState);
+
+ //
+ ResponseProperties update = updateResponse.getProperties();
+ if (update != null)
+ {
+ requestProperties.append(updateResponse.getProperties());
+ }
+ }
+
+ // Create event list and feed it with the events that may have been produced
+ LinkedList<StateResponse.Event> queue = new
LinkedList<StateResponse.Event>();
+ queue.addAll(stateResponse.getEvents());
+
+ //
+ while (queue.size() > 0)
+ {
+ StateResponse.Event event = queue.removeFirst();
+
+ //
+ List<Portlet> consumers = new ArrayList<Portlet>();
+ for (Portlet portlet : context.getPortlets())
+ {
+ PortletInfo portletInfo = portlet.getInfo();
+
+ //
+ for (EventInfo eventInfo :
portletInfo.getEventing().getConsumedEvents())
+ {
+ if (event.getName().equals(eventInfo.getName()))
+ {
+ consumers.add(portlet);
+ }
+ }
+ }
+
+ //
+ for (Portlet consumer : consumers)
+ {
+ PortletInvocationResponse eventResponse = deliverEvent(
+ context,
+ consumer,
+ event,
+ portletRequest.pageState,
+ requestProperties.getCookies());
+
+ //
+ if (eventResponse instanceof UpdateNavigationalStateResponse)
+ {
+ UpdateNavigationalStateResponse update =
(UpdateNavigationalStateResponse)eventResponse;
+
+ // Update ns
+ updateNavigationalState(context, consumer.getContext().getId(),
update, portletRequest.pageState);
+
+ // Add events if any
+ queue.addAll(update.getEvents());
+
+ //
+ ResponseProperties updateProperties = update.getProperties();
+ if (updateProperties != null)
+ {
+ requestProperties.append(update.getProperties());
+ }
+ }
+ else if (eventResponse instanceof ErrorResponse)
+ {
+ // Do something here !!!!
+ }
+ else
+ {
+ // Do something here !!!!
+ }
+ }
+ }
+
+ if (response instanceof HTTPRedirectionResponse)
+ {
+ HTTPRedirectionResponse redirection = (HTTPRedirectionResponse)response;
+ resp.sendRedirect(redirection.getLocation());
+ return;
+ }
+ }
+ else
+ {
+ System.out.println("Not yet handled " + response);
+ }
+
+/*
+ if (response instanceof RenderResponse && redirectAfterAction)
+ {
+ PortletURLRenderer renderer = new PortletURLRenderer(navState, portlet, req,
resp);
+ final RenderResponse render = (RenderResponse)response;
+ String location = renderer.renderURL(new RenderURL()
+ {
+ public StateString getNavigationalState()
+ {
+ return render.getNavigationalState();
+ }
+ public Mode getMode()
+ {
+ return render.getMode();
+ }
+ public WindowState getWindowState()
+ {
+ return render.getWindowState();
+ }
+ }, null, null, true);
+ response = new HTTPRedirectionResponse(location);
+ }
+*/
+
+ //
+ render(context, requestProperties, portletRequest.pageState);
+ }
+ else if (containerRequest instanceof PortletResourceRequest)
+ {
+ PortletInvocationResponse response = invoke(containerRequest);
+
+ //
+ if (response instanceof FragmentResponse)
+ {
+ FragmentResponse fragment = (FragmentResponse)response;
+ ResponseProperties props = fragment.getProperties();
+
+ //
+ if (props != null)
+ {
+ renderTransportHeaders(props, resp);
+ renderCookies(props, resp);
+ }
+
+ //
+ if (fragment.getType() == FragmentResponse.TYPE_EMPTY)
+ {
+ resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
+ }
+ else
+ {
+ String contentType = fragment.getContentType();
+ if (contentType != null)
+ {
+ resp.setContentType(contentType);
+ }
+
+ //
+ if (fragment.getType() == FragmentResponse.TYPE_BYTES)
+ {
+ ServletOutputStream out = null;
+ try
+ {
+ out = resp.getOutputStream();
+ out.write(fragment.getBytes().toByteArray());
+ }
+ finally
+ {
+ IOTools.safeClose(out);
+ }
+ }
+ else
+ {
+ Writer writer = null;
+ try
+ {
+ writer = resp.getWriter();
+ writer.write(fragment.getChars().toString());
+ }
+ finally
+ {
+ writer.close();
+ }
+ }
+ }
+ }
+ else
+ {
+ // todo
+ }
+ }
}
private PortletInvocationResponse invoke(ContainerRequest containerRequest) throws
PortletInvokerException, IOException
@@ -346,255 +584,6 @@
}
}
- public void process(ControllerRequest controllerRequest) throws
PortletInvokerException, IOException
- {
- if (controllerRequest instanceof ViewRequest)
- {
- render(controllerRequest.controllerContext, new ResponseProperties(), new
PageNavigationalState());
- }
- else if (controllerRequest instanceof ContainerRequest)
- {
- process((ContainerRequest)controllerRequest);
- }
- }
-
- public void process(ContainerRequest containerRequest) throws PortletInvokerException,
IOException
- {
- PortletControllerContext context = containerRequest.controllerContext;
- HttpServletResponse resp = context.getClientResponse();
-
- //
- if (containerRequest instanceof PortletRequest)
- {
- PortletRequest portletRequest = (PortletRequest)containerRequest;
-
- //
- PortletInvocationResponse response = invoke(containerRequest);
-
- //
- ResponseProperties requestProperties = new ResponseProperties();
-
- //
- if (response instanceof ErrorResponse)
- {
- ErrorResponse error = (ErrorResponse)response;
-
- //
- if (error.getCause() != null)
- {
- log.error("Portlet action threw an error: " +
error.getMessage(), error.getCause());
- }
- else
- {
- log.error("Portlet action threw an error: " +
error.getMessage());
- }
-
- //
- resp.sendError(404, error.getMessage());
- }
- else if (response instanceof StateResponse)
- {
- StateResponse stateResponse = (StateResponse)response;
-
- // Update portlet NS
- if (response instanceof UpdateNavigationalStateResponse)
- {
- UpdateNavigationalStateResponse updateResponse =
(UpdateNavigationalStateResponse)response;
- updateNavigationalState(
- context,
- containerRequest.portletId,
- updateResponse,
- portletRequest.pageState);
-
- //
- ResponseProperties update = updateResponse.getProperties();
- if (update != null)
- {
- requestProperties.append(updateResponse.getProperties());
- }
- }
-
- // Create event list and feed it with the events that may have been produced
- LinkedList<StateResponse.Event> queue = new
LinkedList<StateResponse.Event>();
- queue.addAll(stateResponse.getEvents());
-
- //
- while (queue.size() > 0)
- {
- StateResponse.Event event = queue.removeFirst();
-
- //
- List<Portlet> consumers = new ArrayList<Portlet>();
- for (Portlet portlet : context.getPortlets())
- {
- PortletInfo portletInfo = portlet.getInfo();
-
- //
- for (EventInfo eventInfo :
portletInfo.getEventing().getConsumedEvents())
- {
- if (event.getName().equals(eventInfo.getName()))
- {
- consumers.add(portlet);
- }
- }
- }
-
- //
- for (Portlet consumer : consumers)
- {
- PortletInvocationResponse eventResponse = deliverEvent(
- context,
- consumer,
- event,
- portletRequest.pageState,
- requestProperties.getCookies());
-
- //
- if (eventResponse instanceof UpdateNavigationalStateResponse)
- {
- UpdateNavigationalStateResponse update =
(UpdateNavigationalStateResponse)eventResponse;
-
- // Update ns
- updateNavigationalState(context, consumer.getContext().getId(),
update, portletRequest.pageState);
-
- // Add events if any
- queue.addAll(update.getEvents());
-
- //
- ResponseProperties updateProperties = update.getProperties();
- if (updateProperties != null)
- {
- requestProperties.append(update.getProperties());
- }
- }
- else if (eventResponse instanceof ErrorResponse)
- {
- // Do something here !!!!
- }
- else
- {
- // Do something here !!!!
- }
- }
- }
-
- //
- if (response instanceof HTTPRedirectionResponse)
- {
- HTTPRedirectionResponse redirection = (HTTPRedirectionResponse)response;
- resp.sendRedirect(redirection.getLocation());
- return;
- }
- else if (response instanceof ErrorResponse)
- {
- ErrorResponse error = (ErrorResponse)response;
- System.out.println("Error " + error.getMessage());
- if (error.getCause() != null)
- {
- error.getCause().printStackTrace();
- }
- resp.sendError(404, error.getMessage());
- return;
- }
- }
- else
- {
- System.out.println("Not yet handled " + response);
- }
-
-/*
- if (response instanceof RenderResponse && redirectAfterAction)
- {
- PortletURLRenderer renderer = new PortletURLRenderer(navState, portlet, req,
resp);
- final RenderResponse render = (RenderResponse)response;
- String location = renderer.renderURL(new RenderURL()
- {
- public StateString getNavigationalState()
- {
- return render.getNavigationalState();
- }
- public Mode getMode()
- {
- return render.getMode();
- }
- public WindowState getWindowState()
- {
- return render.getWindowState();
- }
- }, null, null, true);
- response = new HTTPRedirectionResponse(location);
- }
-*/
-
- //
- render(context, requestProperties, portletRequest.pageState);
- }
- else if (containerRequest instanceof PortletResourceRequest)
- {
- PortletInvocationResponse response = invoke(containerRequest);
-
- //
- if (response instanceof FragmentResponse)
- {
- FragmentResponse fragment = (FragmentResponse)response;
- ResponseProperties props = fragment.getProperties();
-
- //
- if (props != null)
- {
- renderTransportHeaders(props, resp);
- renderCookies(props, resp);
- }
-
- //
- if (fragment.getType() == FragmentResponse.TYPE_EMPTY)
- {
- resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
- }
- else
- {
- String contentType = fragment.getContentType();
- if (contentType != null)
- {
- resp.setContentType(contentType);
- }
-
- //
- if (fragment.getType() == FragmentResponse.TYPE_BYTES)
- {
- ServletOutputStream out = null;
- try
- {
- out = resp.getOutputStream();
- out.write(fragment.getBytes().toByteArray());
- }
- finally
- {
- IOTools.safeClose(out);
- }
- }
- else
- {
- Writer writer = null;
- try
- {
- writer = resp.getWriter();
- writer.write(fragment.getChars().toString());
- }
- finally
- {
- writer.close();
- }
- }
- }
- }
- else
- {
- // todo
- }
- }
- }
-
/**
* @param context
* @param pageProperties properties that needs to be rendered on this page
@@ -861,7 +850,6 @@
static class ControllerRequest
{
-
/** . */
final PortletControllerContext controllerContext;
@@ -895,7 +883,6 @@
static class PortletRequest extends ContainerRequest
{
-
/** . */
final PageNavigationalState pageState;
@@ -918,7 +905,6 @@
static abstract class PortletResourceRequest extends ContainerRequest
{
-
/** . */
private static final Map<Class, CacheLevel> cacheability = new
HashMap<Class, CacheLevel>();
@@ -975,7 +961,6 @@
static class PortletScopedPortletResourceRequest extends
FullScopedCacheablePortletResourceRequest
{
-
/** . */
final WindowNavigationalState windowNavigationalState;
@@ -996,7 +981,6 @@
static class PageScopedFullPortletResourceRequest extends
PortletScopedPortletResourceRequest
{
-
/** . */
private final PageNavigationalState pageState;
@@ -1018,7 +1002,6 @@
static class PortletActionRequest extends PortletRequest
{
-
/** . */
final StateString interactionState;
@@ -1043,7 +1026,6 @@
static class PortletRenderRequest extends PortletRequest
{
-
/** . */
final Map<String, String[]> publicNavigationalStateChanges;