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/03 15:35:26 UTC
svn commit: r572333 -
/wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
Author: ate
Date: Mon Sep 3 06:35:25 2007
New Revision: 572333
URL: http://svn.apache.org/viewvc?rev=572333&view=rev
Log:
WICKET-650: New Wicket Portlet support: use a RequestContext for abstracted url generation, writing header response and namespacing
See: https://issues.apache.org/jira/browse/WICKET-650 and https://issues.apache.org/jira/browse/WICKET-660
- Bootstrapping the portlet-support in WicketFilter: for this only internal and transparent changes are needed.
- As the portlet-support needs to be optional, runtime dependency on portlet-support specific api's (portlet-api, portal-bridges-common) is not loaded
unless a Portlet Context is dynamically discovered.
Modified:
wicket/branches/wicket-1.3.0-beta3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.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=572333&r1=572332&r2=572333&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 Mon Sep 3 06:35:25 2007
@@ -33,12 +33,15 @@
import org.apache.wicket.AbortException;
import org.apache.wicket.Application;
+import org.apache.wicket.RequestContext;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.Resource;
import org.apache.wicket.Session;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.parser.XmlPullParser;
import org.apache.wicket.markup.parser.XmlTag;
+import org.apache.wicket.protocol.http.portlet.FilterRequestContext;
+import org.apache.wicket.protocol.http.portlet.WicketFilterPortletContext;
import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
import org.apache.wicket.session.ISessionStore;
import org.apache.wicket.settings.IRequestCycleSettings;
@@ -94,6 +97,12 @@
private boolean servletMode = false;
+ /* init marker if running in a portlet container context */
+ private static Boolean portletContextAvailable;
+
+ /* Delegate for handling Portlet specific filtering. Not instantiated if not running in a portlet container context */
+ private static WicketFilterPortletContext filterPortletContext;
+
/**
* Servlet cleanup.
*/
@@ -113,12 +122,26 @@
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
- HttpServletRequest httpServletRequest = (HttpServletRequest)request;
+ HttpServletRequest httpServletRequest;
+ HttpServletResponse httpServletResponse;
+
+ if (filterPortletContext != null)
+ {
+ FilterRequestContext filterRequestContext = new FilterRequestContext((HttpServletRequest)request,(HttpServletResponse)response);
+ filterPortletContext.setupFilter(getFilterConfig(), filterRequestContext, getFilterPath((HttpServletRequest)request));
+ httpServletRequest = filterRequestContext.getRequest();
+ httpServletResponse = filterRequestContext.getResponse();
+ }
+ else
+ {
+ httpServletRequest = (HttpServletRequest)request;
+ httpServletResponse = (HttpServletResponse)response;
+ }
+
String relativePath = getRelativePath(httpServletRequest);
if (isWicketRequest(relativePath))
{
- HttpServletResponse httpServletResponse = (HttpServletResponse)response;
long lastModified = getLastModified(httpServletRequest);
if (lastModified == -1)
{
@@ -250,6 +273,8 @@
response.setCharacterEncoding(webApplication.getRequestCycleSettings()
.getResponseRequestEncoding());
+ createRequestContext(request, response);
+
try
{
// Create request cycle
@@ -424,6 +449,24 @@
// Give the application the option to log that it is started
this.webApplication.logStarted();
+
+ if ( portletContextAvailable == null )
+ {
+ try
+ {
+ Class portletClass = Class.forName("javax.portlet.PortletContext");
+ portletContextAvailable = Boolean.TRUE;
+ filterPortletContext = new WicketFilterPortletContext();
+ }
+ catch (ClassNotFoundException e)
+ {
+ portletContextAvailable = Boolean.FALSE;
+ }
+ }
+ if (filterPortletContext != null)
+ {
+ filterPortletContext.initFilter(filterConfig, this.webApplication);
+ }
}
finally
{
@@ -435,6 +478,14 @@
}
}
+ protected void createRequestContext(WebRequest request, WebResponse response)
+ {
+ if (filterPortletContext == null || !filterPortletContext.createPortletRequestContext(request, response))
+ {
+ new RequestContext();
+ }
+ }
+
private String getFilterPath(String filterName, InputStream is) throws ServletException
{
String prefix = servletMode ? "servlet" : "filter";