Author: chris.laprun(a)jboss.com
Date: 2008-01-30 21:18:50 -0500 (Wed, 30 Jan 2008)
New Revision: 9661
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerEventingInfo.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/info/EventingInfo.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/EventingInfoSupport.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
Log:
- EventingInfo.get*Events methods now return immutable Maps for easier access to
registered event names. Adapted implementations and calling code.
- Split PortletController.proces method for easier reading.
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerEventingInfo.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerEventingInfo.java 2008-01-31
02:17:41 UTC (rev 9660)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/info/ContainerEventingInfo.java 2008-01-31
02:18:50 UTC (rev 9661)
@@ -24,9 +24,10 @@
import org.jboss.portal.portlet.info.EventingInfo;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collection;
+import javax.xml.namespace.QName;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -36,34 +37,34 @@
{
/** . */
- private final List<ContainerEventInfo> producedEvents;
+ private final Map<QName, ContainerEventInfo> producedEvents;
/** . */
- private final List<ContainerEventInfo> consumedEvents;
+ private final Map<QName, ContainerEventInfo> consumedEvents;
public ContainerEventingInfo()
{
- producedEvents = new ArrayList<ContainerEventInfo>();
- consumedEvents = new ArrayList<ContainerEventInfo>();
+ producedEvents = new HashMap<QName, ContainerEventInfo>();
+ consumedEvents = new HashMap<QName, ContainerEventInfo>();
}
public void addProducedEvent(ContainerEventInfo producedEvent)
{
- producedEvents.add(producedEvent);
+ producedEvents.put(producedEvent.getName(), producedEvent);
}
public void addConsumedEvent(ContainerEventInfo consumedEvent)
{
- consumedEvents.add(consumedEvent);
+ consumedEvents.put(consumedEvent.getName(), consumedEvent);
}
- public Collection<ContainerEventInfo> getProducedEvents()
+ public Map<QName, ContainerEventInfo> getProducedEvents()
{
- return producedEvents;
+ return Collections.unmodifiableMap(producedEvents);
}
- public Collection<ContainerEventInfo> getConsumedEvents()
+ public Map<QName, ContainerEventInfo> getConsumedEvents()
{
- return consumedEvents;
+ return Collections.unmodifiableMap(consumedEvents);
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java 2008-01-31
02:17:41 UTC (rev 9660)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletConfigImpl.java 2008-01-31
02:18:50 UTC (rev 9661)
@@ -23,21 +23,20 @@
package org.jboss.portal.portlet.impl.jsr168.api;
import org.jboss.portal.common.i18n.ResourceBundleManager;
-import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
-import org.jboss.portal.portlet.impl.info.ContainerPortletApplicationInfo;
import org.jboss.portal.portlet.impl.info.ContainerParameterInfo;
-import org.jboss.portal.portlet.info.EventInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPortletApplicationInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPortletInfo;
import javax.portlet.PortletConfig;
import javax.portlet.PortletContext;
import javax.xml.namespace.QName;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
+import java.util.List;
import java.util.Locale;
-import java.util.ResourceBundle;
import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
+import java.util.ResourceBundle;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -73,22 +72,7 @@
PortletContextImpl portletContext,
ResourceBundleManager bundleMgr)
{
- List<QName> publishingEventQNames = new ArrayList<QName>();
- for (EventInfo event : portletInfo.getEventing().getProducedEvents())
- {
- QName eventName = event.getName();
- publishingEventQNames.add(eventName);
- }
-
//
- List<QName> processingEventQNames = new ArrayList<QName>();
- for (EventInfo event : portletInfo.getEventing().getConsumedEvents())
- {
- QName eventName = event.getName();
- processingEventQNames.add(eventName);
- }
-
- //
List<String> publicRenderParameterNames = new ArrayList<String>();
for (ContainerParameterInfo parameterInfo :
portletInfo.getNavigation().getPublicParameters())
{
@@ -100,8 +84,8 @@
this.portletApplicationInfo = portletApplicationInfo;
this.portletContext = portletContext;
this.bundleMgr = bundleMgr;
- this.publishingEventQNames = publishingEventQNames;
- this.processingEventQNames = processingEventQNames;
+ this.publishingEventQNames = new
ArrayList<QName>(portletInfo.getEventing().getProducedEvents().keySet());
+ this.processingEventQNames = new
ArrayList<QName>(portletInfo.getEventing().getConsumedEvents().keySet());
this.publicRenderParameterNames = publicRenderParameterNames;
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java 2008-01-31
02:17:41 UTC (rev 9660)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/StateAwareResponseImpl.java 2008-01-31
02:18:50 UTC (rev 9661)
@@ -22,42 +22,41 @@
******************************************************************************/
package org.jboss.portal.portlet.impl.jsr168.api;
-import org.jboss.portal.portlet.invocation.PortletInvocation;
-import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
-import org.jboss.portal.portlet.invocation.response.StateResponse;
-import org.jboss.portal.portlet.invocation.response.HTTPRedirectionResponse;
-import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
-import org.jboss.portal.portlet.ParametersStateString;
-import org.jboss.portal.portlet.impl.jsr168.PortletApplicationImpl;
-import org.jboss.portal.portlet.impl.jsr168.PortletParameterMap;
-import org.jboss.portal.portlet.impl.info.ContainerEventingInfo;
-import org.jboss.portal.portlet.impl.info.ContainerPortletApplicationInfo;
-import org.jboss.portal.portlet.impl.info.ContainerTypeInfo;
-import org.jboss.portal.portlet.impl.info.ContainerEventInfo;
+import org.apache.log4j.Logger;
import org.jboss.portal.Mode;
import org.jboss.portal.common.NotYetImplemented;
import org.jboss.portal.common.util.Tools;
-import org.apache.log4j.Logger;
+import org.jboss.portal.portlet.ParametersStateString;
+import org.jboss.portal.portlet.impl.info.ContainerEventInfo;
+import org.jboss.portal.portlet.impl.info.ContainerPortletApplicationInfo;
+import org.jboss.portal.portlet.impl.info.ContainerTypeInfo;
+import org.jboss.portal.portlet.impl.jsr168.PortletApplicationImpl;
+import org.jboss.portal.portlet.impl.jsr168.PortletParameterMap;
+import org.jboss.portal.portlet.invocation.PortletInvocation;
+import org.jboss.portal.portlet.invocation.response.HTTPRedirectionResponse;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
+import org.jboss.portal.portlet.invocation.response.StateResponse;
+import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
+import javax.portlet.PortletMode;
+import javax.portlet.PortletModeException;
import javax.portlet.StateAwareResponse;
import javax.portlet.WindowState;
import javax.portlet.WindowStateException;
-import javax.portlet.PortletMode;
-import javax.portlet.PortletModeException;
-import javax.xml.namespace.QName;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.namespace.QName;
import java.io.Serializable;
-import java.util.Map;
-import java.util.Set;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.UUID;
-import java.util.List;
-import java.util.LinkedList;
+import java.lang.annotation.Annotation;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URI;
-import java.lang.annotation.Annotation;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -298,27 +297,19 @@
}
//
- ContainerEventingInfo eventsInfo = preq.container.getInfo().getEventing();
// Check type
- for (ContainerEventInfo eventInfo : eventsInfo.getProducedEvents())
+ ContainerEventInfo eventInfo =
preq.container.getInfo().getEventing().getProducedEvents().get(name);
+ ContainerTypeInfo typeInfo = eventInfo.getType();
+ if (typeInfo != null)
{
- if (eventInfo.getName().equals(name))
- {
- ContainerTypeInfo typeInfo = eventInfo.getType();
+ Class expectedType = typeInfo.getType();
- //
- if (typeInfo != null)
- {
- Class expectedType = typeInfo.getType();
-
- //
- if (!expectedType.isInstance(value))
- {
- throw new IllegalArgumentException("The provided event value
type " + valueType.getName() +
- " does not match the declared event type " +
expectedType.getName());
- }
- }
+ //
+ if (!expectedType.isInstance(value))
+ {
+ throw new IllegalArgumentException("The provided event value type
" + valueType.getName() +
+ " does not match the declared event type " +
expectedType.getName());
}
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/info/EventingInfo.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/info/EventingInfo.java 2008-01-31
02:17:41 UTC (rev 9660)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/info/EventingInfo.java 2008-01-31
02:18:50 UTC (rev 9661)
@@ -22,7 +22,8 @@
******************************************************************************/
package org.jboss.portal.portlet.info;
-import java.util.Collection;
+import javax.xml.namespace.QName;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -30,9 +31,7 @@
*/
public interface EventingInfo
{
+ Map<QName, ? extends EventInfo> getProducedEvents();
- Collection<? extends EventInfo> getProducedEvents();
-
- Collection<? extends EventInfo> getConsumedEvents();
-
+ Map<QName, ? extends EventInfo> getConsumedEvents();
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/EventingInfoSupport.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/EventingInfoSupport.java 2008-01-31
02:17:41 UTC (rev 9660)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/info/EventingInfoSupport.java 2008-01-31
02:18:50 UTC (rev 9661)
@@ -23,11 +23,11 @@
package org.jboss.portal.portlet.support.info;
import org.jboss.portal.portlet.info.EventingInfo;
-import org.jboss.portal.portlet.info.EventInfo;
-import java.util.Collection;
-import java.util.ArrayList;
-import java.util.List;
+import javax.xml.namespace.QName;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -37,34 +37,34 @@
{
/** . */
- private List<EventInfoSupport> producedEvents;
+ private Map<QName, EventInfoSupport> producedEvents;
/** . */
- private List<EventInfoSupport> consumedEvents;
+ private Map<QName, EventInfoSupport> consumedEvents;
public EventingInfoSupport()
{
- producedEvents = new ArrayList<EventInfoSupport>();
- consumedEvents = new ArrayList<EventInfoSupport>();
+ producedEvents = new HashMap<QName, EventInfoSupport>();
+ consumedEvents = new HashMap<QName, EventInfoSupport>();
}
public void addProducedEvent(EventInfoSupport event)
{
- producedEvents.add(event);
+ producedEvents.put(event.getName(), event);
}
public void addConsumedEvent(EventInfoSupport event)
{
- producedEvents.add(event);
+ producedEvents.put(event.getName(), event);
}
- public Collection<? extends EventInfo> getProducedEvents()
+ public Map<QName, EventInfoSupport> getProducedEvents()
{
- return producedEvents;
+ return Collections.unmodifiableMap(producedEvents);
}
- public Collection<? extends EventInfo> getConsumedEvents()
+ public Map<QName, EventInfoSupport> getConsumedEvents()
{
- return consumedEvents;
+ return Collections.unmodifiableMap(consumedEvents);
}
}
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-31
02:17:41 UTC (rev 9660)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-31
02:18:50 UTC (rev 9661)
@@ -42,7 +42,6 @@
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.info.EventInfo;
import org.jboss.portal.portlet.info.NavigationInfo;
import org.jboss.portal.portlet.info.ParameterInfo;
import org.jboss.portal.portlet.info.PortletInfo;
@@ -115,235 +114,225 @@
{
render(controllerRequest.controllerContext, new ResponseProperties(), new
PageNavigationalState());
}
- else if (controllerRequest instanceof ContainerRequest)
+ else if (controllerRequest instanceof PortletRequest)
{
- process((ContainerRequest)controllerRequest);
+ processPortletRequest((PortletRequest)controllerRequest);
}
+ else if (controllerRequest instanceof PortletResourceRequest)
+ {
+ processResourceRequest((PortletResourceRequest)controllerRequest);
+ }
+ else
+ {
+ throw new PortletInvokerException("Unknown request type: " +
controllerRequest.getClass().getName());
+ }
}
- public void process(ContainerRequest containerRequest) throws PortletInvokerException,
IOException
+ private void processPortletRequest(PortletRequest portletRequest) throws IOException,
PortletInvokerException
{
- PortletControllerContext context = containerRequest.controllerContext;
- HttpServletResponse resp = context.getClientResponse();
+ PortletControllerContext context = portletRequest.controllerContext;
//
- if (containerRequest instanceof PortletRequest)
+ PortletInvocationResponse response = invoke(portletRequest);
+
+ //
+ ResponseProperties requestProperties = new ResponseProperties();
+
+ //
+ if (response instanceof ErrorResponse)
{
- PortletRequest portletRequest = (PortletRequest)containerRequest;
+ ErrorResponse error = (ErrorResponse)response;
//
- PortletInvocationResponse response = invoke(containerRequest);
+ 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());
+ }
//
- ResponseProperties requestProperties = new ResponseProperties();
-
- //
- if (response instanceof ErrorResponse)
+ context.getClientResponse().sendError(404, error.getMessage());
+ }
+ else if (response instanceof StateResponse)
+ {
+ // Update portlet NS
+ if (response instanceof UpdateNavigationalStateResponse)
{
- ErrorResponse error = (ErrorResponse)response;
+ UpdateNavigationalStateResponse updateResponse =
(UpdateNavigationalStateResponse)response;
+ updateNavigationalState(context, portletRequest.portletId, updateResponse,
portletRequest.pageState);
//
- if (error.getCause() != null)
+ ResponseProperties update = updateResponse.getProperties();
+ if (update != null)
{
- log.error("Portlet action threw an error: " +
error.getMessage(), error.getCause());
+ requestProperties.append(update);
}
- else
- {
- log.error("Portlet action threw an error: " +
error.getMessage());
- }
-
- //
- resp.sendError(404, error.getMessage());
}
- else if (response instanceof StateResponse)
+
+ StateResponse stateResponse = (StateResponse)response;
+ // 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());
+
+ // Deliver events
+ while (queue.size() > 0)
{
- StateResponse stateResponse = (StateResponse)response;
+ StateResponse.Event event = queue.removeFirst();
- // Update portlet NS
- if (response instanceof UpdateNavigationalStateResponse)
+ //
+ List<Portlet> consumers = new ArrayList<Portlet>();
+ for (Portlet portlet : context.getPortlets())
{
- UpdateNavigationalStateResponse updateResponse =
(UpdateNavigationalStateResponse)response;
- updateNavigationalState(
- context,
- containerRequest.portletId,
- updateResponse,
- portletRequest.pageState);
+ PortletInfo portletInfo = portlet.getInfo();
- //
- ResponseProperties update = updateResponse.getProperties();
- if (update != null)
+ if
(portletInfo.getEventing().getConsumedEvents().containsKey(event.getName()))
{
- requestProperties.append(updateResponse.getProperties());
+ consumers.add(portlet);
}
}
- // 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)
+ for (Portlet consumer : consumers)
{
- StateResponse.Event event = queue.removeFirst();
+ PortletInvocationResponse eventResponse =
+ deliverEvent(context, consumer, event, portletRequest.pageState,
requestProperties.getCookies());
//
- List<Portlet> consumers = new ArrayList<Portlet>();
- for (Portlet portlet : context.getPortlets())
+ if (eventResponse instanceof UpdateNavigationalStateResponse)
{
- PortletInfo portletInfo = portlet.getInfo();
+ UpdateNavigationalStateResponse update =
(UpdateNavigationalStateResponse)eventResponse;
- //
- for (EventInfo eventInfo :
portletInfo.getEventing().getConsumedEvents())
- {
- if (event.getName().equals(eventInfo.getName()))
- {
- consumers.add(portlet);
- }
- }
- }
+ // Update ns
+ updateNavigationalState(context, consumer.getContext().getId(), update,
portletRequest.pageState);
- //
- for (Portlet consumer : consumers)
- {
- PortletInvocationResponse eventResponse = deliverEvent(
- context,
- consumer,
- event,
- portletRequest.pageState,
- requestProperties.getCookies());
+ // Add events if any
+ queue.addAll(update.getEvents());
//
- if (eventResponse instanceof UpdateNavigationalStateResponse)
+ ResponseProperties updateProperties = update.getProperties();
+ if (updateProperties != null)
{
- 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());
- }
+ requestProperties.append(updateProperties);
}
- else if (eventResponse instanceof ErrorResponse)
- {
- // Do something here !!!!
- }
- else
- {
- // Do something here !!!!
- }
}
+ 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 HTTPRedirectionResponse)
{
- System.out.println("Not yet handled " + response);
+ HTTPRedirectionResponse redirection = (HTTPRedirectionResponse)response;
+ context.getClientResponse().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()
+ /*
+ if (response instanceof RenderResponse && redirectAfterAction)
{
- return render.getNavigationalState();
+ 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);
}
- 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)
+ //
+ render(context, requestProperties, portletRequest.pageState);
+ }
+
+ private void processResourceRequest(PortletResourceRequest resourceRequest) throws
IOException, PortletInvokerException
+ {
+ PortletInvocationResponse response = invoke(resourceRequest);
+ HttpServletResponse resp = resourceRequest.controllerContext.getClientResponse();
+
+ //
+ if (response instanceof FragmentResponse)
{
- PortletInvocationResponse response = invoke(containerRequest);
+ FragmentResponse fragment = (FragmentResponse)response;
+ ResponseProperties props = fragment.getProperties();
//
- if (response instanceof FragmentResponse)
+ if (props != null)
{
- FragmentResponse fragment = (FragmentResponse)response;
- ResponseProperties props = fragment.getProperties();
+ renderTransportHeaders(props, resp);
+ renderCookies(props, resp);
+ }
- //
- if (props != null)
+ //
+ if (fragment.getType() == FragmentResponse.TYPE_EMPTY)
+ {
+ resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
+ }
+ else
+ {
+ String contentType = fragment.getContentType();
+ if (contentType != null)
{
- renderTransportHeaders(props, resp);
- renderCookies(props, resp);
+ resp.setContentType(contentType);
}
//
- if (fragment.getType() == FragmentResponse.TYPE_EMPTY)
+ if (fragment.getType() == FragmentResponse.TYPE_BYTES)
{
- resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
+ ServletOutputStream out = null;
+ try
+ {
+ out = resp.getOutputStream();
+ out.write(fragment.getBytes().toByteArray());
+ }
+ finally
+ {
+ IOTools.safeClose(out);
+ }
}
else
{
- String contentType = fragment.getContentType();
- if (contentType != null)
+ Writer writer = null;
+ try
{
- resp.setContentType(contentType);
+ writer = resp.getWriter();
+ writer.write(fragment.getChars().toString());
}
-
- //
- if (fragment.getType() == FragmentResponse.TYPE_BYTES)
+ finally
{
- ServletOutputStream out = null;
- try
- {
- out = resp.getOutputStream();
- out.write(fragment.getBytes().toByteArray());
- }
- finally
- {
- IOTools.safeClose(out);
- }
+ writer.close();
}
- else
- {
- Writer writer = null;
- try
- {
- writer = resp.getWriter();
- writer.write(fragment.getChars().toString());
- }
- finally
- {
- writer.close();
- }
- }
}
}
- else
- {
- // todo
- }
}
+ else
+ {
+ // todo
+ }
}
private PortletInvocationResponse invoke(ContainerRequest containerRequest) throws
PortletInvokerException, IOException