Home » struts-2.1.8.1-src » org.apache » struts2 » portlet » interceptor » [javadoc | source]

    1   /*
    2    * $Id: PortletPreferencesInterceptor.java 502294 2007-02-01 17:28:00Z niallp $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
   10    * with the License.  You may obtain a copy of the License at
   11    *
   12    *  http://www.apache.org/licenses/LICENSE-2.0
   13    *
   14    * Unless required by applicable law or agreed to in writing,
   15    * software distributed under the License is distributed on an
   16    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   17    * KIND, either express or implied.  See the License for the
   18    * specific language governing permissions and limitations
   19    * under the License.
   20    */
   21   package org.apache.struts2.portlet.interceptor;
   22   
   23   import javax.portlet.PortletRequest;
   24   
   25   import org.apache.commons.logging.Log;
   26   import org.apache.commons.logging.LogFactory;
   27   import org.apache.struts2.StrutsStatics;
   28   import org.apache.struts2.portlet.context.PortletActionContext;
   29   
   30   import com.opensymphony.xwork2.ActionContext;
   31   import com.opensymphony.xwork2.ActionInvocation;
   32   import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
   33   
   34   
   35   /**
   36    * <!-- START SNIPPET: description -->
   37    *
   38    * An interceptor which provides an implementation of PortletPreferences if the Action implements
   39    * PortletPreferencesAware.
   40    * 
   41    * If running in a servlet environment, a testing implementation of PortletPreferences will be
   42    * created and provided, but it should not be used in a production environment.
   43    *
   44    * <!-- END SNIPPET: description -->
   45    *
   46    * <p/> <u>Interceptor parameters:</u>
   47    *
   48    * <!-- START SNIPPET: parameters -->
   49    *
   50    * <ul>
   51    *
   52    * <li>None</li>
   53    *
   54    * </ul>
   55    *
   56    * <!-- END SNIPPET: parameters -->
   57    *
   58    * <p/> <u>Extending the interceptor:</u>
   59    *
   60    * <p/>
   61    *
   62    * <!-- START SNIPPET: extending -->
   63    *
   64    * There are no known extension points for this interceptor.
   65    *
   66    * <!-- END SNIPPET: extending -->
   67    *
   68    * <p/> <u>Example code:</u>
   69    *
   70    * <pre>
   71    * <!-- START SNIPPET: example -->
   72    * &lt;action name="someAction" class="com.examples.SomeAction"&gt;
   73    *     &lt;interceptor-ref name="portlet-preferences"/&gt;
   74    *     &lt;interceptor-ref name="basicStack"/&gt;
   75    *     &lt;result name="success"&gt;good_result.ftl&lt;/result&gt;
   76    * &lt;/action&gt;
   77    * <!-- END SNIPPET: example -->
   78    * </pre>
   79    *
   80    * @see PortletPreferencesAware
   81    */
   82   public class PortletPreferencesInterceptor extends AbstractInterceptor implements StrutsStatics {
   83   
   84       private static final Log LOG = LogFactory.getLog(PortletPreferencesInterceptor.class);
   85       
   86       public String intercept(ActionInvocation invocation) throws Exception {
   87           final Object action = invocation.getAction();
   88           final ActionContext context = invocation.getInvocationContext();
   89   
   90           if (action instanceof PortletPreferencesAware) {
   91               PortletRequest request = PortletActionContext.getRequest();
   92               PortletPreferencesAware awareAction = (PortletPreferencesAware) action;
   93               
   94               // Check if running in a servlet environment
   95               if (request == null) {
   96                   LOG.warn("This portlet preferences implementation should only be used during development");
   97                   awareAction.setPortletPreferences(new ServletPortletPreferences(ActionContext.getContext().getSession()));
   98               } else {
   99                   awareAction.setPortletPreferences(request.getPreferences());
  100               }
  101           }
  102           return invocation.invoke();
  103       }
  104   }

Home » struts-2.1.8.1-src » org.apache » struts2 » portlet » interceptor » [javadoc | source]