Author: ate
Date: Fri Sep 14 18:49:16 2007
New Revision: 575848
URL: http://svn.apache.org/viewvc?rev=575848&view=rev
Log:
WICKET-655: New Wicket Portlet support: adding portlet support with a new
WicketPortlet and support classes
A new optional WicketFilter init parameter: portletOnlyFilter (true|false) to
protect portlet specific Wicket applications which only can/may be access from
within a Portlet context.
When this parameter is set to true, WicketFilter will ignore the request if not
from within a Portlet context and send it off to the next possible filter in
the chain.
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/WicketFilterPortletContext.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=575848&r1=575847&r2=575848&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
Fri Sep 14 18:49:16 2007
@@ -97,11 +97,21 @@
private boolean servletMode = false;
+ /**
+ * The name of the optional filter parameter indicating it may/can only
be accessed from within a Portlet context.
+ * Value should be true
+ */
+ private final String PORTLET_ONLY_FILTER = "portletOnlyFilter";
+
/* init marker if running in a portlet container context */
- private static Boolean portletContextAvailable;
+ private Boolean portletContextAvailable;
/* Delegate for handling Portlet specific filtering. Not instantiated
if not running in a portlet container context */
- private static WicketFilterPortletContext filterPortletContext;
+ private WicketFilterPortletContext filterPortletContext;
+
+ /* Flag if this filter may only process request from within a Portlet
context.
+ */
+ private boolean portletOnlyFilter;
/**
* Servlet cleanup.
@@ -125,10 +135,11 @@
HttpServletRequest httpServletRequest;
HttpServletResponse httpServletResponse;
+ boolean inPortletContext = false;
if (filterPortletContext != null)
{
FilterRequestContext filterRequestContext = new
FilterRequestContext((HttpServletRequest)request,(HttpServletResponse)response);
- filterPortletContext.setupFilter(getFilterConfig(),
filterRequestContext, getFilterPath((HttpServletRequest)request));
+ inPortletContext =
filterPortletContext.setupFilter(getFilterConfig(), filterRequestContext,
getFilterPath((HttpServletRequest)request));
httpServletRequest = filterRequestContext.getRequest();
httpServletResponse = filterRequestContext.getResponse();
}
@@ -137,7 +148,13 @@
httpServletRequest = (HttpServletRequest)request;
httpServletResponse = (HttpServletResponse)response;
}
-
+
+ if ( portletOnlyFilter && !inPortletContext )
+ {
+ chain.doFilter(request, response);
+ return;
+ }
+
String relativePath = getRelativePath(httpServletRequest);
if (isWicketRequest(relativePath))
@@ -449,6 +466,8 @@
// Give the application the option to log that it is
started
this.webApplication.logStarted();
+
+ this.portletOnlyFilter =
Boolean.valueOf(filterConfig.getInitParameter(PORTLET_ONLY_FILTER)).booleanValue();
if ( portletContextAvailable == 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=575848&r1=575847&r2=575848&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
Fri Sep 14 18:49:16 2007
@@ -46,11 +46,13 @@
webApplication.getRequestCycleSettings().addResponseFilter(new
PortletInvalidMarkupFilter());
}
- public void setupFilter(FilterConfig config, FilterRequestContext
filterRequestContext, String filterPath) throws IOException, ServletException
+ public boolean setupFilter(FilterConfig config, FilterRequestContext
filterRequestContext, String filterPath) throws IOException, ServletException
{
+ boolean inPortletContext = false;
PortletConfig portletConfig =
(PortletConfig)filterRequestContext.getRequest().getAttribute("javax.portlet.config");
if ( portletConfig != null )
{
+ inPortletContext = true;
WicketResponseState responseState =
(WicketResponseState)filterRequestContext.getRequest().getAttribute(WicketPortlet.RESPONSE_STATE_ATTR);
filterRequestContext.setRequest(new
PortletServletRequestWrapper(config.getServletContext(),filterRequestContext.getRequest(),
ServletPortletSessionProxy.createProxy(filterRequestContext.getRequest()),
filterPath));
if (
WicketPortlet.ACTION_REQUEST.equals(filterRequestContext.getRequest().getAttribute(WicketPortlet.REQUEST_TYPE_ATTR)))
@@ -75,6 +77,7 @@
filterRequestContext.setRequest(new
PortletServletRequestWrapper(context,request,proxiedSession, filterPath,
pathInfo));
}
}
+ return inPortletContext;
}
public boolean createPortletRequestContext(WebRequest request, WebResponse
response)