Author: ate Date: Fri Jun 15 02:54:30 2007 New Revision: 547598 URL: http://svn.apache.org/viewvc?view=rev&rev=547598 Log: WICKET-660: New Wicket Portlet support: Merge WicketPortletFilter back in WicketFilter using a delagate class for handling and (class) loading the portlet specific functionality See: https://issues.apache.org/jira/browse/WICKET-660
Added: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java (with props) Removed: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortletFilter.java Modified: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml Modified: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?view=diff&rev=547598&r1=547597&r2=547598 ============================================================================== --- incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java (original) +++ incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java Fri Jun 15 02:54:30 2007 @@ -39,6 +39,7 @@ 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.WicketFilterPortletContext; import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy; import org.apache.wicket.session.ISessionStore; import org.apache.wicket.settings.IRequestCycleSettings; @@ -93,6 +94,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. */ @@ -115,6 +122,11 @@ HttpServletRequest httpServletRequest = (HttpServletRequest)request; String relativePath = getRelativePath(httpServletRequest); + if (filterPortletContext != null) + { + filterPortletContext.setupFilter(getFilterConfig(), request, response, getFilterPath(httpServletRequest)); + } + if (isWicketRequest(relativePath)) { HttpServletResponse httpServletResponse = (HttpServletResponse)response; @@ -413,6 +425,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 { @@ -712,6 +742,9 @@ protected void createRenderContext(WebRequest request, WebResponse response) { - new RenderContext(); + if (filterPortletContext == null || !filterPortletContext.createPortletRenderContext(request, response)) + { + new RenderContext(); + } } } Added: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java?view=auto&rev=547598 ============================================================================== --- incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java (added) +++ incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java Fri Jun 15 02:54:30 2007 @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.protocol.http.portlet; + +import java.io.IOException; + +import javax.portlet.PortletConfig; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.portals.bridges.common.PortletResourceURLFactory; +import org.apache.portals.bridges.util.ServletPortletSessionProxy; +import org.apache.wicket.protocol.http.WebApplication; +import org.apache.wicket.protocol.http.WebRequest; +import org.apache.wicket.protocol.http.WebResponse; +import org.apache.wicket.settings.IRequestCycleSettings; + +/** + * @author Ate Douma + * @Id@ + */ +public class WicketFilterPortletContext +{ + public void initFilter(FilterConfig filterConfig, WebApplication webApplication) throws ServletException + { + webApplication.getRequestCycleSettings().setRenderStrategy(IRequestCycleSettings.REDIRECT_TO_RENDER); + } + + public void setupFilter(FilterConfig config, ServletRequest request, ServletResponse response, String filterPath) throws IOException, ServletException + { + HttpServletRequest servletRequest = (HttpServletRequest)request; + PortletConfig portletConfig = (PortletConfig)request.getAttribute("javax.portlet.config"); + if ( portletConfig != null ) + { + WicketResponseState responseState = (WicketResponseState)request.getAttribute(WicketPortlet.RESPONSE_STATE_ATTR); + request = new PortletServletRequestWrapper(config.getServletContext(),servletRequest, ServletPortletSessionProxy.createProxy(servletRequest)); + if ( WicketPortlet.ACTION_REQUEST.equals(request.getAttribute(WicketPortlet.REQUEST_TYPE_ATTR))) + { + response = new PortletActionServletResponseWrapper((HttpServletResponse)response, responseState); + } + else + { + response = new PortletRenderServletResponseWrapper( (HttpServletResponse)response, (RenderResponse)request.getAttribute("javax.portlet.response"),responseState); + } + } + else + { + request = PortletRenderContext.getPortletServletRequest(config.getServletContext(),servletRequest, filterPath); + } + } + + public boolean createPortletRenderContext(WebRequest request, WebResponse response) + { + HttpServletRequest servletRequest = request.getHttpServletRequest(); + PortletConfig portletConfig = (PortletConfig)servletRequest.getAttribute("javax.portlet.config"); + if ( portletConfig != null ) + { + if ( WicketPortlet.ACTION_REQUEST.equals(servletRequest.getAttribute(WicketPortlet.REQUEST_TYPE_ATTR))) + { + new PortletRenderContext(null, null, null, null, null); + } + else + { + PortletResourceURLFactory resourceURLFactory = (PortletResourceURLFactory)servletRequest.getAttribute(WicketPortlet.RESOURCE_URL_FACTORY_ATTR); + RenderRequest renderRequest = (RenderRequest)servletRequest.getAttribute("javax.portlet.request"); + RenderResponse renderResponse = (RenderResponse)servletRequest.getAttribute("javax.portlet.response"); + boolean isResourceRequest = "true".equals(servletRequest.getAttribute(WicketPortlet.PORTLET_RESOURCE_URL_ATTR)); + new PortletRenderContext(portletConfig, renderRequest, renderResponse, resourceURLFactory, isResourceRequest ? null : new EmbeddedPortletHeaderResponse(response)); + } + return true; + } + return false; + } +} Propchange: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketFilterPortletContext.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml?view=diff&rev=547598&r1=547597&r2=547598 ============================================================================== --- incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml (original) +++ incubator/wicket/branches/wicket-1.3-portlet-support/jdk-1.5/wicket-examples/src/main/webapp/WEB-INF/web.xml Fri Jun 15 02:54:30 2007 @@ -62,7 +62,7 @@ <filter> <filter-name>AjaxPrototypeApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.ajax.prototype.PrototypeApplication</param-value> @@ -71,7 +71,7 @@ <filter> <filter-name>AjaxApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.ajax.builtin.AjaxApplication</param-value> @@ -80,7 +80,7 @@ <filter> <filter-name>HelloWorldApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.helloworld.HelloWorldApplication</param-value> @@ -89,7 +89,7 @@ <filter> <filter-name>EchoApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.echo.EchoApplication</param-value> @@ -98,7 +98,7 @@ <filter> <filter-name>UnicodeConverterApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.unicodeconverter.UnicodeConverterApplication</param-value> @@ -107,7 +107,7 @@ <filter> <filter-name>HelloBrowserApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.hellobrowser.HelloBrowserApplication</param-value> @@ -116,7 +116,7 @@ <filter> <filter-name>StockQuoteApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.stockquote.StockQuoteApplication</param-value> @@ -125,7 +125,7 @@ <filter> <filter-name>HangmanApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.hangman.HangmanApplication</param-value> @@ -134,7 +134,7 @@ <filter> <filter-name>FormInputApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.forminput.FormInputApplication</param-value> @@ -143,7 +143,7 @@ <filter> <filter-name>NestedApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.nested.NestedApplication</param-value> @@ -152,7 +152,7 @@ <filter> <filter-name>GuestBookApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.guestbook.GuestBookApplication</param-value> @@ -161,7 +161,7 @@ <filter> <filter-name>ImagesApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.images.ImagesApplication</param-value> @@ -170,7 +170,7 @@ <filter> <filter-name>LibraryApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.library.LibraryApplication</param-value> @@ -179,7 +179,7 @@ <filter> <filter-name>LinkomaticApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.linkomatic.LinkomaticApplication</param-value> @@ -188,7 +188,7 @@ <filter> <filter-name>NavomaticApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.navomatic.NavomaticApplication</param-value> @@ -197,7 +197,7 @@ <filter> <filter-name>PubApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.pub.PubApplication</param-value> @@ -206,7 +206,7 @@ <filter> <filter-name>SignInApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.signin.SignInApplication</param-value> @@ -215,7 +215,7 @@ <filter> <filter-name>SignIn2Application</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.signin2.SignIn2Application</param-value> @@ -224,7 +224,7 @@ <filter> <filter-name>UploadApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.upload.UploadApplication</param-value> @@ -233,7 +233,7 @@ <filter> <filter-name>EncodingsApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.encodings.EncodingsApplication</param-value> @@ -242,7 +242,7 @@ <filter> <filter-name>TemplateApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.template.TemplateApplication</param-value> @@ -255,7 +255,7 @@ <filter> <filter-name>ComponentReferenceApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.compref.ComponentReferenceApplication</param-value> @@ -264,7 +264,7 @@ <filter> <filter-name>RepeaterExamplesApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.repeater.RepeaterApplication</param-value> @@ -273,7 +273,7 @@ <filter> <filter-name>NiceUrlApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.niceurl.NiceUrlApplication</param-value> @@ -282,7 +282,7 @@ <filter> <filter-name>FramesApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.frames.FramesApplication</param-value> @@ -291,7 +291,7 @@ <filter> <filter-name>CustomResourceLoadingApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.customresourceloading.CustomResourceLoadingApplication</param-value> @@ -300,7 +300,7 @@ <filter> <filter-name>WizardApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.wizard.WizardApplication</param-value> @@ -309,7 +309,7 @@ <filter> <filter-name>CaptchaApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.captcha.CaptchaApplication</param-value> @@ -318,7 +318,7 @@ <filter> <filter-name>BreadCrumbApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.breadcrumb.BreadCrumbApplication</param-value> @@ -327,7 +327,7 @@ <filter> <filter-name>StatelessApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.stateless.StatelessApplication</param-value> @@ -336,7 +336,7 @@ <filter> <filter-name>StaticPagesApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.staticpages.Application</param-value> @@ -345,7 +345,7 @@ <filter> <filter-name>RolesAuthApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.authorization.strategies.role.example.RolesApplication</param-value> @@ -354,7 +354,7 @@ <filter> <filter-name>MyAuthenticatedWebApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.authentication.example.MyAuthenticatedWebApplication</param-value> @@ -363,7 +363,7 @@ <filter> <filter-name>SpringExample</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationFactoryClassName</param-name> <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value> @@ -372,7 +372,7 @@ <filter> <filter-name>VelocityTemplateApplication</filter-name> - <filter-class>org.apache.wicket.protocol.http.portlet.WicketPortletFilter</filter-class> + <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>org.apache.wicket.examples.velocity.VelocityTemplateApplication</param-value>