mirror of
https://github.com/apache/struts.git
synced 2026-08-14 19:16:59 +00:00
WW-4963 Implements new SessionAware interface
that uses withSession instead of setSession
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* 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 java.util.Map;
|
||||
|
||||
/**
|
||||
* Actions that want access to the user's HTTP session attributes should implement this interface.
|
||||
*
|
||||
* This will give them access to a Map where they can put objects that can be made available
|
||||
* to subsequent requests.
|
||||
*
|
||||
* Typical uses may be cached user data such as name, or a shopping cart.
|
||||
*/
|
||||
public interface SessionAware {
|
||||
|
||||
/**
|
||||
* Applies the Map of session attributes in the implementing class.
|
||||
*
|
||||
* @param session a Map of HTTP session attribute name/value pairs.
|
||||
*/
|
||||
void withSession(Map<String, Object> session);
|
||||
|
||||
}
|
||||
@@ -149,6 +149,10 @@ public class ServletConfigInterceptor extends AbstractInterceptor implements Str
|
||||
((SessionAware) action).setSession(context.getSession());
|
||||
}
|
||||
|
||||
if (action instanceof org.apache.struts2.action.SessionAware) {
|
||||
((org.apache.struts2.action.SessionAware) action).withSession(context.getSession());
|
||||
}
|
||||
|
||||
if (action instanceof RequestAware) {
|
||||
((RequestAware) action).setRequest((Map) context.get("request"));
|
||||
}
|
||||
|
||||
@@ -31,13 +31,17 @@ import java.util.Map;
|
||||
* <p>
|
||||
* Typical uses may be cached user data such as name, or a shopping cart.
|
||||
* </p>
|
||||
* @deprecated use {@link org.apache.struts2.action.SessionAware}
|
||||
*/
|
||||
@Deprecated
|
||||
public interface SessionAware {
|
||||
|
||||
/**
|
||||
* Sets the Map of session attributes in the implementing class.
|
||||
*
|
||||
* @param session a Map of HTTP session attribute name/value pairs.
|
||||
* @deprecated please use {@link org.apache.struts2.action.SessionAware#withSession(Map)}
|
||||
*/
|
||||
@Deprecated
|
||||
public void setSession(Map<String,Object> session);
|
||||
}
|
||||
|
||||
@@ -128,6 +128,22 @@ public class ServletConfigInterceptorTest extends StrutsInternalTestCase {
|
||||
verify(mock);
|
||||
}
|
||||
|
||||
public void testActionSessionAware() throws Exception {
|
||||
org.apache.struts2.action.SessionAware mock = createMock(org.apache.struts2.action.SessionAware.class);
|
||||
|
||||
MockActionInvocation mai = createActionInvocation(mock);
|
||||
|
||||
Map<String, Object> session = new HashMap<String, Object>();
|
||||
mai.getInvocationContext().setSession(session);
|
||||
|
||||
mock.withSession(session);
|
||||
expectLastCall().times(1);
|
||||
|
||||
replay(mock);
|
||||
interceptor.intercept(mai);
|
||||
verify(mock);
|
||||
}
|
||||
|
||||
public void testApplicationAware() throws Exception {
|
||||
ApplicationAware mock = (ApplicationAware) createMock(ApplicationAware.class);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user