Merge pull request #310 from aleksandr-m/feature/WW-4998_i18ninterceptor
WW-4998 I18nInterceptor's default storage should store locale
diff --git a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
index 682bbe6..4ddcedf 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
@@ -261,6 +261,7 @@
super(invocation);
}
+ @Override
public Locale find() {
Locale requestOnlyLocale = super.find();
@@ -281,15 +282,13 @@
@Override
public Locale store(ActionInvocation invocation, Locale locale) {
- HttpSession session = ServletActionContext.getRequest().getSession(false);
+ Map<String, Object> session = invocation.getInvocationContext().getSession();
if (session != null) {
- String sessionId = session.getId();
+ String sessionId = ServletActionContext.getRequest().getSession().getId();
synchronized (sessionId.intern()) {
- invocation.getInvocationContext().getSession().put(attributeName, locale);
+ session.put(attributeName, locale);
}
- } else {
- LOG.debug("session creation avoided as it doesn't exist already");
}
return locale;
diff --git a/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
index fcc0dd1..da5607f 100644
--- a/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
+++ b/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
@@ -79,8 +79,8 @@
assertFalse("should have been removed",
mai.getInvocationContext().getParameters().get(I18nInterceptor.DEFAULT_PARAMETER).isDefined());
- assertNull("should not be created", request.getSession(false));
- assertNull("should not be stored here", session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE));
+ assertNotNull("should be created", request.getSession(false));
+ assertNotNull("should be stored here", session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE));
}
public void testDefaultLocale() throws Exception {