Author: nilsga Date: Fri Mar 27 09:40:17 2009 New Revision: 759073 URL: http://svn.apache.org/viewvc?rev=759073&view=rev Log: WW-2955 Added PortletConfigAware interface.
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletConfigAware.java Modified: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java Modified: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java?rev=759073&r1=759072&r2=759073&view=diff ============================================================================== --- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java (original) +++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java Fri Mar 27 09:40:17 2009 @@ -21,6 +21,7 @@ package org.apache.struts2.portlet.interceptor; +import javax.portlet.PortletConfig; import javax.portlet.PortletContext; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; @@ -69,6 +70,10 @@ PortletContext portletContext = (PortletContext) context.get(STRUTS_PORTLET_CONTEXT); ((PortletContextAware) action).setPortletContext(portletContext); } + if (action instanceof PortletConfigAware) { + PortletConfig portletConfig = (PortletConfig)context.get(PORTLET_CONFIG); + ((PortletConfigAware) action).setPortletConfig(portletConfig); + } if (action instanceof PortletPreferencesAware) { PortletRequest request = (PortletRequest) context.get(REQUEST); Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletConfigAware.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletConfigAware.java?rev=759073&view=auto ============================================================================== --- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletConfigAware.java (added) +++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletConfigAware.java Fri Mar 27 09:40:17 2009 @@ -0,0 +1,34 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.interceptor; + +import javax.portlet.PortletConfig; + + +/** + * Actions that wants a reference to the PortletConfig object can + * implement this interface. + * + */ +public interface PortletConfigAware { + + void setPortletConfig(PortletConfig portletConfig); +} Modified: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java?rev=759073&r1=759072&r2=759073&view=diff ============================================================================== --- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java (original) +++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java Fri Mar 27 09:40:17 2009 @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.Map; +import javax.portlet.PortletConfig; import javax.portlet.PortletRequest; import junit.framework.TestCase; @@ -37,10 +38,22 @@ public class PortletAwareInterceptorTest extends TestCase implements PortletActionConstants { private PortletAwareInterceptor interceptor; + private TestAction action; + private PortletRequest portletRequest; + private PortletConfig portletConfig; + private Map<String, Object> contextMap; + private ActionInvocation invocation; protected void setUp() throws Exception { super.setUp(); interceptor = new PortletAwareInterceptor(); + action = new TestAction(); + portletRequest = EasyMock.createNiceMock(PortletRequest.class); + portletConfig = EasyMock.createNiceMock(PortletConfig.class); + contextMap = new HashMap<String, Object>(); + invocation = EasyMock.createNiceMock(ActionInvocation.class); + EasyMock.expect(invocation.getAction()).andReturn(action); + EasyMock.expect(invocation.getInvocationContext()).andReturn(new ActionContext(contextMap)); } protected void tearDown() throws Exception { @@ -48,21 +61,39 @@ } public void testPortletRequestIsSet() throws Exception { - PortletRequest request = EasyMock.createMock(PortletRequest.class); - Map<String, Object> ctx = new HashMap<String, Object>(); - ctx.put(REQUEST, request); - PortletRequestAware action = EasyMock.createMock(PortletRequestAware.class); - action.setPortletRequest(request); - - ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class); - EasyMock.expect(invocation.getInvocationContext()).andReturn(new ActionContext(ctx)); - EasyMock.expect(invocation.getAction()).andReturn(action); - - EasyMock.replay(action); + contextMap.put(REQUEST, portletRequest); EasyMock.replay(invocation); - interceptor.intercept(invocation); + assertEquals(portletRequest, action.getPortletRequest()); + } + + public void testPortletConfigIsSet() throws Exception { + contextMap.put(PORTLET_CONFIG, portletConfig); + EasyMock.replay(invocation); + interceptor.intercept(invocation); + assertEquals(portletConfig, action.getPortletConfig()); + } + + public static class TestAction implements PortletRequestAware, PortletConfigAware { + + private PortletRequest request; + private PortletConfig config; + + public void setPortletRequest(PortletRequest request) { + this.request = request; + } + + public void setPortletConfig(PortletConfig portletConfig) { + this.config = portletConfig; + } + + public PortletConfig getPortletConfig() { + return config; + } + + public PortletRequest getPortletRequest() { + return request; + } - EasyMock.verify(action); } }