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)


Reply via email to