You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by at...@apache.org on 2007/09/06 13:22:55 UTC
svn commit: r573222 - in
/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http:
./ portlet/
Author: ate
Date: Thu Sep 6 04:22:55 2007
New Revision: 573222
URL: http://svn.apache.org/viewvc?rev=573222&view=rev
Log:
WICKET-656: New Wicket Portlet support: adding portlet support with a new WicketPortlet, WicketPortletFilter and support classes
See: https://issues.apache.org/jira/browse/WICKET-656#action_12525400
- refactored instantiating Wicket portlet-support entry point classes a little to make the easier extendable (like for different portals).
- support for a org.apache.wicket.protocol.http.portlet.WicketPortlet.properties file on the classpath allowing keeping all portal specific configurations out of a wicket portlet application
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=573222&r1=573221&r2=573222&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java Thu Sep 6 04:22:55 2007
@@ -456,7 +456,7 @@
{
Class portletClass = Class.forName("javax.portlet.PortletContext");
portletContextAvailable = Boolean.TRUE;
- filterPortletContext = new WicketFilterPortletContext();
+ filterPortletContext = newWicketFilterPortletContext();
}
catch (ClassNotFoundException e)
{
@@ -476,6 +476,11 @@
Thread.currentThread().setContextClassLoader(previousClassLoader);
}
}
+ }
+
+ protected WicketFilterPortletContext newWicketFilterPortletContext()
+ {
+ return new WicketFilterPortletContext();
}
protected void createRequestContext(WebRequest request, WebResponse response)
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java?rev=573222&r1=573221&r2=573222&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/PortletRequestContext.java Thu Sep 6 04:22:55 2007
@@ -42,6 +42,7 @@
*/
public class PortletRequestContext extends RequestContext
{
+ private final WicketFilterPortletContext filterContext;
private final PortletConfig portletConfig;
private final PortletRequest portletRequest;
private final PortletResponse portletResponse;
@@ -55,38 +56,9 @@
private final boolean resourceRequest;
private String[] lastEncodedUrl = new String[2];
- private static final String SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX = "/ps:";
-
- public static final String decodePortletWindowId(String pathInfo)
- {
- String portletWindowId = null;
- if (pathInfo != null && pathInfo.startsWith(SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX))
- {
- int nextPath = pathInfo.indexOf('/',1);
- if (nextPath > -1)
- {
- portletWindowId = pathInfo.substring(SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX.length(),nextPath);
- }
- else
- {
- portletWindowId = pathInfo.substring(SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX.length());
- }
- }
- return portletWindowId;
- }
-
- public static final String stripWindowIdFromPathInfo(String pathInfo)
- {
- if (pathInfo != null && pathInfo.startsWith(SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX))
- {
- int nextPath = pathInfo.indexOf('/',1);
- pathInfo = nextPath > -1 ? pathInfo.substring(nextPath) : null;
- }
- return pathInfo;
- }
-
- public PortletRequestContext(ServletWebRequest request, WebResponse response)
+ public PortletRequestContext(WicketFilterPortletContext filterContext, ServletWebRequest request, WebResponse response)
{
+ this.filterContext = filterContext;
HttpServletRequest servletRequest = request.getHttpServletRequest();
this.portletConfig = (PortletConfig)servletRequest.getAttribute("javax.portlet.config");
this.portletRequest = (PortletRequest)servletRequest.getAttribute("javax.portlet.request");
@@ -210,7 +182,7 @@
{
if ( path != null )
{
- String url = (SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX.substring(1) + getPortletWindowId() + "/" + path);
+ String url = filterContext.encodeWindowIdInPath(getPortletWindowId(), path);
return saveLastEncodedUrl(url,url);
}
return null;
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java?rev=573222&r1=573221&r2=573222&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java Thu Sep 6 04:22:55 2007
@@ -38,6 +38,8 @@
*/
public class WicketFilterPortletContext
{
+ private static final String SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX = "/ps:";
+
public void initFilter(FilterConfig filterConfig, WebApplication webApplication) throws ServletException
{
webApplication.getRequestCycleSettings().setRenderStrategy(IRequestCycleSettings.REDIRECT_TO_RENDER);
@@ -65,11 +67,11 @@
ServletContext context = config.getServletContext();
HttpServletRequest request = filterRequestContext.getRequest();
String pathInfo = request.getRequestURI().substring(request.getContextPath().length()+filterPath.length());
- String portletWindowId = PortletRequestContext.decodePortletWindowId(pathInfo);
+ String portletWindowId = decodePortletWindowId(pathInfo);
if (portletWindowId != null)
{
HttpSession proxiedSession = ServletPortletSessionProxy.createProxy(request, portletWindowId);
- pathInfo = PortletRequestContext.stripWindowIdFromPathInfo(pathInfo);
+ pathInfo = stripWindowIdFromPathInfo(pathInfo);
filterRequestContext.setRequest(new PortletServletRequestWrapper(context,request,proxiedSession, filterPath, pathInfo));
}
}
@@ -79,9 +81,52 @@
{
if (request.getHttpServletRequest().getAttribute("javax.portlet.config") != null)
{
- new PortletRequestContext((ServletWebRequest)request, response);
+ newPortletRequestContext((ServletWebRequest)request, response);
return true;
}
return false;
+ }
+
+ public String getServletResourceUrlPortletWindowIdPrefix()
+ {
+ return SERVLET_RESOURCE_URL_PORTLET_WINDOW_ID_PREFIX;
+ }
+
+ public String decodePortletWindowId(String pathInfo)
+ {
+ String portletWindowId = null;
+ if (pathInfo != null && pathInfo.startsWith(getServletResourceUrlPortletWindowIdPrefix()))
+ {
+ int nextPath = pathInfo.indexOf('/',1);
+ if (nextPath > -1)
+ {
+ portletWindowId = pathInfo.substring(getServletResourceUrlPortletWindowIdPrefix().length(),nextPath);
+ }
+ else
+ {
+ portletWindowId = pathInfo.substring(getServletResourceUrlPortletWindowIdPrefix().length());
+ }
+ }
+ return portletWindowId;
+ }
+
+ public String stripWindowIdFromPathInfo(String pathInfo)
+ {
+ if (pathInfo != null && pathInfo.startsWith(getServletResourceUrlPortletWindowIdPrefix()))
+ {
+ int nextPath = pathInfo.indexOf('/',1);
+ pathInfo = nextPath > -1 ? pathInfo.substring(nextPath) : null;
+ }
+ return pathInfo;
+ }
+
+ public String encodeWindowIdInPath(String windowId, CharSequence path)
+ {
+ return (getServletResourceUrlPortletWindowIdPrefix().substring(1) + windowId + "/" + path);
+ }
+
+ protected void newPortletRequestContext(ServletWebRequest request, WebResponse response)
+ {
+ new PortletRequestContext(this, request, response);
}
}
Modified: wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java?rev=573222&r1=573221&r2=573222&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java (original)
+++ wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java Thu Sep 6 04:22:55 2007
@@ -17,7 +17,9 @@
package org.apache.wicket.protocol.http.portlet;
import java.io.IOException;
+import java.io.InputStream;
import java.util.HashMap;
+import java.util.Properties;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
@@ -58,6 +60,7 @@
public static final String RESPONSE_STATE_ATTR = WicketResponseState.class.getName();
public static final String RESOURCE_URL_FACTORY_ATTR = PortletResourceURLFactory.class.getName();
public static final String PORTLET_RESOURCE_URL_ATTR = "resourceUrl";
+ public static final String WICKET_PORTLET_PROPERTIES = WicketPortlet.class.getName().replace('.', '/')+".properties";
private ServletContextProvider servletContextProvider;
private PortletResourceURLFactory resourceURLFactory;
@@ -66,6 +69,7 @@
public void init(PortletConfig config) throws PortletException
{
super.init(config);
+ Properties wicketPortletProperties = null;
String contextProviderClassName = getContextProviderClassNameParameter(config);
if (contextProviderClassName == null)
{
@@ -74,10 +78,15 @@
}
if (contextProviderClassName == null)
{
+ wicketPortletProperties = getWicketPortletProperties(wicketPortletProperties);
+ contextProviderClassName = wicketPortletProperties.getProperty(ServletContextProvider.class.getName());
+ }
+ if (contextProviderClassName == null)
+ {
throw new PortletException("Portlet " + config.getPortletName()
+ " is incorrectly configured. Init parameter "
- + PARAM_SERVLET_CONTEXT_PROVIDER + " not specified, nor context parameter "
- + ServletContextProvider.class.getName() + ".");
+ + PARAM_SERVLET_CONTEXT_PROVIDER + " not specified, nor as context parameter "
+ + ServletContextProvider.class.getName() + " or as property in "+WICKET_PORTLET_PROPERTIES + " in the classpath.");
}
try
{
@@ -101,10 +110,15 @@
}
if (resourceURLFactoryClassName == null)
{
+ wicketPortletProperties = getWicketPortletProperties(wicketPortletProperties);
+ resourceURLFactoryClassName = wicketPortletProperties.getProperty(PortletResourceURLFactory.class.getName());
+ }
+ if (resourceURLFactoryClassName == null)
+ {
throw new PortletException("Portlet " + config.getPortletName()
+ " is incorrectly configured. Init parameter "
- + PARAM_PORTLET_RESOURCE_URL_FACTORY + " not specified, nor context parameter "
- + PortletResourceURLFactory.class.getName() + ".");
+ + PARAM_PORTLET_RESOURCE_URL_FACTORY + " not specified, nor as context parameter "
+ + PortletResourceURLFactory.class.getName() + " or as property in "+WICKET_PORTLET_PROPERTIES + " in the classpath.");
}
try
{
@@ -140,6 +154,27 @@
wicketFilterPath += "/";
}
}
+ }
+
+ protected Properties getWicketPortletProperties(Properties properties) throws PortletException
+ {
+ if (properties == null)
+ {
+ properties = new Properties();
+ }
+ InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(WICKET_PORTLET_PROPERTIES);
+ if (is != null)
+ {
+ try
+ {
+ properties.load(is);
+ }
+ catch (IOException e)
+ {
+ throw new PortletException("Failed to load WicketPortlet.properties from classpath", e);
+ }
+ }
+ return properties;
}
public void processAction(ActionRequest request, ActionResponse response)