diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/action/PortletRequestAware.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/action/PortletRequestAware.java new file mode 100644 index 000000000..b7537fe87 --- /dev/null +++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/action/PortletRequestAware.java @@ -0,0 +1,30 @@ +/* + * 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.action; + +import javax.portlet.PortletRequest; + +/** + * @since 2.6 + */ +public interface PortletRequestAware { + + void withPortletRequest(PortletRequest request); + +} diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java index a2be6a7c5..8c7f5857a 100644 --- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java +++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptor.java @@ -53,6 +53,11 @@ public class PortletAwareInterceptor extends AbstractInterceptor implements Stru ((PortletRequestAware) action).setPortletRequest(request); } + if (action instanceof org.apache.struts2.portlet.action.PortletRequestAware) { + PortletRequest request = (PortletRequest) context.get(PortletConstants.REQUEST); + ((org.apache.struts2.portlet.action.PortletRequestAware) action).withPortletRequest(request); + } + if (action instanceof PortletResponseAware) { PortletResponse response = (PortletResponse) context.get(PortletConstants.RESPONSE); ((PortletResponseAware) action).setPortletResponse(response); diff --git a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletRequestAware.java b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletRequestAware.java index 8fee62a1a..8903d9f45 100644 --- a/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletRequestAware.java +++ b/plugins/portlet/src/main/java/org/apache/struts2/portlet/interceptor/PortletRequestAware.java @@ -20,8 +20,16 @@ package org.apache.struts2.portlet.interceptor; import javax.portlet.PortletRequest; +/** + * @deprecated please use {@link org.apache.struts2.portlet.action.PortletRequestAware} instead + */ +@Deprecated public interface PortletRequestAware { - void setPortletRequest(PortletRequest request); + /** + * @deprecated please use {@link org.apache.struts2.portlet.action.PortletRequestAware#withPortletRequest(PortletRequest)} instead + */ + @Deprecated + void setPortletRequest(PortletRequest request); } diff --git a/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java b/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java index 907ceaf9d..4443411f4 100644 --- a/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java +++ b/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletAwareInterceptorTest.java @@ -30,33 +30,52 @@ import java.util.Map; public class PortletAwareInterceptorTest extends TestCase { - private PortletAwareInterceptor interceptor; - - protected void setUp() throws Exception { - super.setUp(); - interceptor = new PortletAwareInterceptor(); - } - - protected void tearDown() throws Exception { - super.tearDown(); - } - - public void testPortletRequestIsSet() throws Exception { - PortletRequest request = EasyMock.createMock(PortletRequest.class); - Map ctx = new HashMap(); - ctx.put(PortletConstants.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); - EasyMock.replay(invocation); - - interceptor.intercept(invocation); - - EasyMock.verify(action); - } + private PortletAwareInterceptor interceptor; + + protected void setUp() throws Exception { + super.setUp(); + interceptor = new PortletAwareInterceptor(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testPortletRequestIsSet() throws Exception { + PortletRequest request = EasyMock.createMock(PortletRequest.class); + Map ctx = new HashMap(); + ctx.put(PortletConstants.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); + EasyMock.replay(invocation); + + interceptor.intercept(invocation); + + EasyMock.verify(action); + } + + public void testActionPortletRequestAware() throws Exception { + PortletRequest request = EasyMock.createMock(PortletRequest.class); + Map ctx = new HashMap<>(); + ctx.put(PortletConstants.REQUEST, request); + org.apache.struts2.portlet.action.PortletRequestAware action = EasyMock.createMock(org.apache.struts2.portlet.action.PortletRequestAware.class); + action.withPortletRequest(request); + + ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class); + EasyMock.expect(invocation.getInvocationContext()).andReturn(new ActionContext(ctx)); + EasyMock.expect(invocation.getAction()).andReturn(action); + + EasyMock.replay(action); + EasyMock.replay(invocation); + + interceptor.intercept(invocation); + + EasyMock.verify(action); + } }