mirror of
https://github.com/apache/struts.git
synced 2026-08-15 03:26:58 +00:00
WW-4963 Implements new ServletRequestAware interface
that uses withRequest instead of setRequest
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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.action;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* All Actions that want to have access to the servlet request object must implement this interface.
|
||||
*
|
||||
* This interface is only relevant if the Action is used in a servlet environment.
|
||||
*
|
||||
* Note that using this interface makes the Action tied to a servlet environment, so it should be
|
||||
* avoided if possible since things like unit testing will become more difficult.
|
||||
*/
|
||||
public interface ServletRequestAware {
|
||||
|
||||
/**
|
||||
* Applies the HTTP request object in implementing classes.
|
||||
*
|
||||
* @param request the HTTP request.
|
||||
*/
|
||||
void withServletRequest(HttpServletRequest request);
|
||||
}
|
||||
@@ -128,6 +128,11 @@ public class ServletConfigInterceptor extends AbstractInterceptor implements Str
|
||||
((ServletRequestAware) action).setServletRequest(request);
|
||||
}
|
||||
|
||||
if (action instanceof org.apache.struts2.action.ServletRequestAware) {
|
||||
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
|
||||
((org.apache.struts2.action.ServletRequestAware) action).withServletRequest(request);
|
||||
}
|
||||
|
||||
if (action instanceof ServletResponseAware) {
|
||||
HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE);
|
||||
((ServletResponseAware) action).setServletResponse(response);
|
||||
|
||||
@@ -33,13 +33,17 @@ import javax.servlet.http.HttpServletRequest;
|
||||
* Note that using this interface makes the Action tied to a servlet environment, so it should be
|
||||
* avoided if possible since things like unit testing will become more difficult.
|
||||
* </p>
|
||||
* @deprecated please use {@link org.apache.struts2.action.ServletRequestAware} instead
|
||||
*/
|
||||
@Deprecated
|
||||
public interface ServletRequestAware {
|
||||
|
||||
/**
|
||||
* Sets the HTTP request object in implementing classes.
|
||||
*
|
||||
* @param request the HTTP request.
|
||||
* @deprecated please use {@link org.apache.struts2.action.ServletRequestAware#withServletRequest(HttpServletRequest)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setServletRequest(HttpServletRequest request);
|
||||
}
|
||||
|
||||
@@ -64,6 +64,22 @@ public class ServletConfigInterceptorTest extends StrutsInternalTestCase {
|
||||
verify(mock);
|
||||
}
|
||||
|
||||
public void testActionServletRequestAware() throws Exception {
|
||||
org.apache.struts2.action.ServletRequestAware mock = createMock(org.apache.struts2.action.ServletRequestAware.class);
|
||||
|
||||
MockHttpServletRequest req = new MockHttpServletRequest();
|
||||
|
||||
MockActionInvocation mai = createActionInvocation(mock);
|
||||
mai.getInvocationContext().put(StrutsStatics.HTTP_REQUEST, req);
|
||||
|
||||
mock.withServletRequest(req);
|
||||
expectLastCall();
|
||||
|
||||
replay(mock);
|
||||
interceptor.intercept(mai);
|
||||
verify(mock);
|
||||
}
|
||||
|
||||
public void testServletResponseAware() throws Exception {
|
||||
ServletResponseAware mock = (ServletResponseAware) createMock(ServletResponseAware.class);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user