Author: cziegeler
Date: Fri Nov 23 13:07:18 2012
New Revision: 1412867
URL: http://svn.apache.org/viewvc?rev=1412867&view=rev
Log:
Support portals bridge
Modified:
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceRequestContextImpl.java
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletInvokerService.java
Modified:
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextImpl.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextImpl.java?rev=1412867&r1=1412866&r2=1412867&view=diff
==============================================================================
---
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextImpl.java
(original)
+++
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletRequestContextImpl.java
Fri Nov 23 13:07:18 2012
@@ -25,12 +25,16 @@ import java.util.Locale;
import java.util.Map;
import javax.portlet.PortletConfig;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import org.apache.pluto.container.PortletContainer;
+import org.apache.pluto.container.PortletInvokerService;
import org.apache.pluto.container.PortletRequestContext;
import org.apache.pluto.container.PortletWindow;
import org.apache.sling.portal.container.internal.request.PortalRequestContext;
@@ -54,9 +58,16 @@ public class PortletRequestContextImpl i
private Cookie cookies[];
private boolean useRequestParameters;
- public PortletRequestContextImpl(PortletContainer container,
HttpServletRequest containerRequest,
- HttpServletResponse containerResponse,
PortletWindow window, boolean useRequestParameters)
- {
+ private PortletRequest portletRequest;
+ private PortletResponse portletResponse;
+
+ private HttpServletRequest wrappedRequest;
+
+ public PortletRequestContextImpl(final PortletContainer container,
+ final HttpServletRequest containerRequest,
+ final HttpServletResponse containerResponse,
+ final PortletWindow window,
+ final boolean useRequestParameters) {
this.container = container;
this.containerRequest = containerRequest;
this.containerResponse = containerResponse;
@@ -68,154 +79,157 @@ public class PortletRequestContextImpl i
/**
* Is this a reserved attribute?
*/
- protected boolean isReservedAttributeName(String name) {
+ private boolean isReservedAttributeName(final String name) {
return name.startsWith("javax.servlet.");
}
- protected String encodeAttributeName(String name)
- {
- if (isReservedAttributeName(name))
- {
+ private String encodeAttributeName(final String name) {
+ if (isReservedAttributeName(name)) {
return name;
}
return
container.getContainerServices().getNamespaceMapper().encode(window.getId(),
name);
}
- protected String decodeAttributeName(String name)
- {
- if (isReservedAttributeName(name))
- {
+ private String decodeAttributeName(String name) {
+ if (isReservedAttributeName(name)) {
return name;
}
String result =
container.getContainerServices().getNamespaceMapper().decode(window.getId(),
name);
return result != null ? result : name;
}
- protected Map<String, String[]> getPrivateRenderParameterMap()
- {
+ private Map<String, String[]> getPrivateRenderParameterMap() {
return Collections.emptyMap();
}
- protected PortalURL getPortalURL()
- {
- return url;
- }
-
- protected boolean isPublicRenderParameter(String name)
- {
+ private boolean isPublicRenderParameter(final String name) {
List<String> publicRenderParameterNames =
window.getPortletDefinition().getSupportedPublicRenderParameters();
return publicRenderParameterNames.isEmpty() ? false :
publicRenderParameterNames.contains(name);
}
- public void init(PortletConfig portletConfig, ServletContext
servletContext, HttpServletRequest servletRequest, HttpServletResponse
servletResponse)
- {
+ protected PortalURL getPortalURL() {
+ return this.url;
+ }
+
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#init(javax.portlet.PortletConfig,
javax.servlet.ServletContext, javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse)
+ */
+ public void init(final PortletConfig portletConfig,
+ final ServletContext servletContext,
+ final HttpServletRequest servletRequest,
+ final HttpServletResponse servletResponse) {
this.portletConfig = portletConfig;
this.servletContext = servletContext;
this.servletRequest = servletRequest;
this.servletResponse = servletResponse;
}
- public Object getAttribute(String name)
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getAttribute(java.lang.String)
+ */
+ public Object getAttribute(final String name) {
Object value = servletRequest.getAttribute(encodeAttributeName(name));
return value != null ? value : servletRequest.getAttribute(name);
}
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getAttributeNames()
+ */
@SuppressWarnings("unchecked")
- public Enumeration<String> getAttributeNames()
- {
- ArrayList<String> names = new ArrayList<String>();
- for (Enumeration<String> e = servletRequest.getAttributeNames();
e.hasMoreElements();)
- {
+ public Enumeration<String> getAttributeNames() {
+ final ArrayList<String> names = new ArrayList<String>();
+ for (Enumeration<String> e = servletRequest.getAttributeNames();
e.hasMoreElements();) {
names.add(decodeAttributeName(e.nextElement()));
}
return Collections.enumeration(names);
}
- public void setAttribute(String name, Object value)
- {
- if (value == null)
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#setAttribute(java.lang.String,
java.lang.Object)
+ */
+ public void setAttribute(final String name, final Object value) {
+ if (value == null) {
servletRequest.removeAttribute(encodeAttributeName(name));
- }
- else
- {
+ } else {
servletRequest.setAttribute(encodeAttributeName(name), value);
}
}
- public PortletContainer getContainer()
- {
+ /**
+ * @see org.apache.pluto.container.PortletRequestContext#getContainer()
+ */
+ public PortletContainer getContainer() {
return container;
}
- public Cookie[] getCookies()
- {
- if (cookies == null)
- {
+ /**
+ * @see org.apache.pluto.container.PortletRequestContext#getCookies()
+ */
+ public Cookie[] getCookies() {
+ if (cookies == null) {
cookies = servletRequest.getCookies();
- if (cookies == null)
- {
+ if (cookies == null) {
cookies = new Cookie[0];
}
}
return cookies.length > 0 ? cookies.clone() : null;
}
- public PortletConfig getPortletConfig()
- {
+ /**
+ * @see org.apache.pluto.container.PortletRequestContext#getPortletConfig()
+ */
+ public PortletConfig getPortletConfig() {
return portletConfig;
}
- public ServletContext getServletContext()
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getServletContext()
+ */
+ public ServletContext getServletContext() {
return servletContext;
}
- public PortletWindow getPortletWindow()
- {
+ /**
+ * @see org.apache.pluto.container.PortletRequestContext#getPortletWindow()
+ */
+ public PortletWindow getPortletWindow() {
return window;
}
- public Locale getPreferredLocale()
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getPreferredLocale()
+ */
+ public Locale getPreferredLocale() {
return servletRequest.getLocale();
}
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getPrivateParameterMap()
+ */
@SuppressWarnings("unchecked")
- public Map<String, String[]> getPrivateParameterMap()
- {
- HashMap<String, String[]> parameters = new HashMap<String, String[]>();
+ public Map<String, String[]> getPrivateParameterMap() {
+ final Map<String, String[]> parameters = new HashMap<String,
String[]>();
if (useRequestParameters) {
parameters.putAll(servletRequest.getParameterMap());
}
- for (Map.Entry<String, String[]> entry :
getPrivateRenderParameterMap().entrySet())
- {
- String[] values = parameters.get(entry.getKey());
- if (values == null)
- {
+ for (Map.Entry<String, String[]> entry :
getPrivateRenderParameterMap().entrySet()) {
+ final String[] values = parameters.get(entry.getKey());
+ if (values == null) {
parameters.put(entry.getKey(), entry.getValue());
- }
- else
- {
- String[] copy = new
String[values.length+entry.getValue().length];
+ } else {
+ final String[] copy = new
String[values.length+entry.getValue().length];
System.arraycopy(values, 0, copy, 0, values.length);
System.arraycopy(entry.getValue(), 0, copy, values.length,
entry.getValue().length);
parameters.put(entry.getKey(), copy);
}
}
- String windowId = window.getId().getStringId();
- for (PortalURLParameter parm : url.getParameters())
- {
- if (windowId.equals(parm.getWindowId()))
- {
+ final String windowId = window.getId().getStringId();
+ for (PortalURLParameter parm : url.getParameters()) {
+ if (windowId.equals(parm.getWindowId())) {
String[] values = parameters.get(parm.getName());
- if (values == null)
- {
+ if (values == null) {
parameters.put(parm.getName(), parm.getValues());
- }
- else
- {
+ } else {
String[] copy = new
String[values.length+parm.getValues().length];
System.arraycopy(values, 0, copy, 0, values.length);
System.arraycopy(parm.getValues(), 0, copy, values.length,
parm.getValues().length);
@@ -226,57 +240,112 @@ public class PortletRequestContextImpl i
return parameters;
}
+ /**
+ * @see org.apache.pluto.container.PortletRequestContext#getProperties()
+ */
@SuppressWarnings("unchecked")
- public Map<String, String[]> getProperties()
- {
- HashMap<String, String[]> properties = new HashMap<String, String[]>();
- for (Enumeration<String> names = servletRequest.getHeaderNames();
names.hasMoreElements(); )
- {
- String name = names.nextElement();
- ArrayList<String> values = new ArrayList<String>();
- for (Enumeration<String> headers =
servletRequest.getHeaders(name); headers.hasMoreElements(); )
- {
+ public Map<String, String[]> getProperties() {
+ final Map<String, String[]> properties = new HashMap<String,
String[]>();
+ for (Enumeration<String> names = servletRequest.getHeaderNames();
names.hasMoreElements(); ) {
+ final String name = names.nextElement();
+ final List<String> values = new ArrayList<String>();
+ for (Enumeration<String> headers =
servletRequest.getHeaders(name); headers.hasMoreElements(); ) {
values.add(headers.nextElement());
}
- int size = values.size();
- if (size > 0)
- {
+ final int size = values.size();
+ if (size > 0) {
properties.put(name, values.toArray(new String[size]));
}
}
return properties;
}
- public Map<String, String[]> getPublicParameterMap()
- {
- HashMap<String, String[]> parameters = new HashMap<String, String[]>();
- for (Map.Entry<String, String[]> entry :
url.getPublicParameters().entrySet())
- {
- if (isPublicRenderParameter(entry.getKey()))
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getPublicParameterMap()
+ */
+ public Map<String, String[]> getPublicParameterMap() {
+ final Map<String, String[]> parameters = new HashMap<String,
String[]>();
+ for (Map.Entry<String, String[]> entry :
url.getPublicParameters().entrySet()) {
+ if (isPublicRenderParameter(entry.getKey())) {
parameters.put(entry.getKey(), entry.getValue());
}
}
return parameters;
}
- public HttpServletRequest getContainerRequest()
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getContainerRequest()
+ */
+ public HttpServletRequest getContainerRequest() {
return containerRequest;
}
- public HttpServletResponse getContainerResponse()
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getContainerResponse()
+ */
+ public HttpServletResponse getContainerResponse() {
return containerResponse;
}
- public HttpServletRequest getServletRequest()
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getServletRequest()
+ */
+ public HttpServletRequest getServletRequest() {
return servletRequest;
}
- public HttpServletResponse getServletResponse()
- {
+ /**
+ * @see
org.apache.pluto.container.PortletRequestContext#getServletResponse()
+ */
+ public HttpServletResponse getServletResponse() {
return servletResponse;
}
+
+ public void init(final PortletRequest portletRequest,
+ final PortletResponse portletResponse) {
+ this.portletRequest = portletRequest;
+ this.portletResponse = portletResponse;
+ }
+
+ public HttpServletRequest getWrappedRequest() {
+ if ( wrappedRequest == null ) {
+ wrappedRequest = new
HttpServletRequestWrapper(this.getServletRequest()) {
+ @Override
+ public Object getAttribute(final String name) {
+ return PortletRequestContextImpl.this.getAttribute(name);
+ }
+
+ @Override
+ public Enumeration getAttributeNames() {
+ return PortletRequestContextImpl.this.getAttributeNames();
+ }
+
+ @Override
+ public void setAttribute(final String name, final Object
value) {
+ PortletRequestContextImpl.this.setAttribute(name, value);
+ }
+
+ @Override
+ public void removeAttribute(final String name) {
+ PortletRequestContextImpl.this.setAttribute(name, null);
+ }
+
+ };
+ wrappedRequest.setAttribute(PortletInvokerService.PORTLET_CONFIG,
PortletRequestContextImpl.this.getPortletConfig());
+ wrappedRequest.setAttribute(PortletInvokerService.PORTLET_REQUEST,
PortletRequestContextImpl.this.portletRequest);
+
wrappedRequest.setAttribute(PortletInvokerService.PORTLET_RESPONSE,
PortletRequestContextImpl.this.portletResponse);
+ }
+ return wrappedRequest;
+ }
+
+ public void cleanup() {
+ if ( wrappedRequest != null ) {
+
wrappedRequest.removeAttribute(PortletInvokerService.PORTLET_CONFIG);
+
wrappedRequest.removeAttribute(PortletInvokerService.PORTLET_REQUEST);
+
wrappedRequest.removeAttribute(PortletInvokerService.PORTLET_RESPONSE);
+ wrappedRequest = null;
+ }
+ this.portletRequest = null;
+ this.portletResponse = null;
+ }
}
Modified:
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceRequestContextImpl.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceRequestContextImpl.java?rev=1412867&r1=1412866&r2=1412867&view=diff
==============================================================================
---
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceRequestContextImpl.java
(original)
+++
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/PortletResourceRequestContextImpl.java
Fri Nov 23 13:07:18 2012
@@ -25,10 +25,6 @@ import org.apache.pluto.container.Portle
import org.apache.pluto.container.PortletResourceRequestContext;
import org.apache.pluto.container.PortletWindow;
-/**
- * @version $Id$
- *
- */
public class PortletResourceRequestContextImpl extends
PortletRequestContextImpl implements
PortletResourceRequestContext
{
Modified:
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletInvokerService.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletInvokerService.java?rev=1412867&r1=1412866&r2=1412867&view=diff
==============================================================================
---
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletInvokerService.java
(original)
+++
sling/whiteboard/portal/container/src/main/java/org/apache/sling/portal/container/internal/services/DefaultPortletInvokerService.java
Fri Nov 23 13:07:18 2012
@@ -53,6 +53,7 @@ import org.apache.sling.portal.container
import org.apache.sling.portal.container.SlingPortletWindow;
import org.apache.sling.portal.container.api.Container;
import org.apache.sling.portal.container.api.SlingRequestDispatcher;
+import org.apache.sling.portal.container.internal.PortletRequestContextImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -276,49 +277,55 @@ public class DefaultPortletInvokerServic
// initialize
requestContext.init(portletConfig, portletContext.getServletContext(),
new RequestWrapper(request, portletContext.getServletContext()), response);
+ ((PortletRequestContextImpl)requestContext).init(portletRequest,
portletResponse);
+
responseContext.init(request, response);
- // The requested method is RENDER: call Portlet.render(..)
- if (methodId == PortletInvokerService.METHOD_RENDER) {
- RenderRequest renderRequest = (RenderRequest) portletRequest;
- RenderResponse renderResponse = (RenderResponse) portletResponse;
- filterManager.processFilter(renderRequest, renderResponse,
- info.getPortlet(), portletContext);
- }
+ try {
+ // The requested method is RENDER: call Portlet.render(..)
+ if (methodId == PortletInvokerService.METHOD_RENDER) {
+ RenderRequest renderRequest = (RenderRequest) portletRequest;
+ RenderResponse renderResponse = (RenderResponse)
portletResponse;
+ filterManager.processFilter(renderRequest, renderResponse,
+ info.getPortlet(), portletContext);
+ }
- // The requested method is RESOURCE: call
- // ResourceServingPortlet.serveResource(..)
- else if (methodId == PortletInvokerService.METHOD_RESOURCE) {
- ResourceRequest resourceRequest = (ResourceRequest) portletRequest;
- ResourceResponse resourceResponse = (ResourceResponse)
portletResponse;
- filterManager.processFilter(resourceRequest, resourceResponse,
- (ResourceServingPortlet)info.getPortlet(), portletContext);
- }
+ // The requested method is RESOURCE: call
+ // ResourceServingPortlet.serveResource(..)
+ else if (methodId == PortletInvokerService.METHOD_RESOURCE) {
+ ResourceRequest resourceRequest = (ResourceRequest)
portletRequest;
+ ResourceResponse resourceResponse = (ResourceResponse)
portletResponse;
+ filterManager.processFilter(resourceRequest, resourceResponse,
+ (ResourceServingPortlet)info.getPortlet(),
portletContext);
+ }
- // The requested method is ACTION: call Portlet.processAction(..)
- else if (methodId == PortletInvokerService.METHOD_ACTION) {
- ActionRequest actionRequest = (ActionRequest) portletRequest;
- ActionResponse actionResponse = (ActionResponse) portletResponse;
- filterManager.processFilter(actionRequest, actionResponse,
- info.getPortlet(), portletContext);
- }
+ // The requested method is ACTION: call Portlet.processAction(..)
+ else if (methodId == PortletInvokerService.METHOD_ACTION) {
+ ActionRequest actionRequest = (ActionRequest) portletRequest;
+ ActionResponse actionResponse = (ActionResponse)
portletResponse;
+ filterManager.processFilter(actionRequest, actionResponse,
+ info.getPortlet(), portletContext);
+ }
- // The request method is Event: call Portlet.processEvent(..)
- else if (methodId == PortletInvokerService.METHOD_EVENT) {
- EventRequest eventRequest = (EventRequest) portletRequest;
- EventResponse eventResponse = (EventResponse) portletResponse;
- filterManager.processFilter(eventRequest, eventResponse,
- (EventPortlet)info.getPortlet(), portletContext);
- }
- // the request method is Load
- else if (methodId == PortletInvokerService.METHOD_LOAD) {
- try {
- this.registry.loadPortlet(info);
- } catch (PortletContainerException e) {
- throw new PortletException(e);
+ // The request method is Event: call Portlet.processEvent(..)
+ else if (methodId == PortletInvokerService.METHOD_EVENT) {
+ EventRequest eventRequest = (EventRequest) portletRequest;
+ EventResponse eventResponse = (EventResponse) portletResponse;
+ filterManager.processFilter(eventRequest, eventResponse,
+ (EventPortlet)info.getPortlet(), portletContext);
+ }
+ // the request method is Load
+ else if (methodId == PortletInvokerService.METHOD_LOAD) {
+ try {
+ this.registry.loadPortlet(info);
+ } catch (PortletContainerException e) {
+ throw new PortletException(e);
+ }
}
+ request.setAttribute(ATTR_PROCESSED, Boolean.TRUE);
+ } finally {
+ ((PortletRequestContextImpl)requestContext).cleanup();
}
- request.setAttribute(ATTR_PROCESSED, Boolean.TRUE);
}
public static final class RequestWrapper extends HttpServletRequestWrapper
{