Author: lukaszlenart
Date: Mon Oct 21 13:51:04 2013
New Revision: 1534156
URL: http://svn.apache.org/r1534156
Log:
WW-4066 Solves problem with StringIndexOutOfBoundsException when message was
already translated
Modified:
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
Modified:
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1534156&r1=1534155&r2=1534156&view=diff
==============================================================================
---
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
(original)
+++
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
Mon Oct 21 13:51:04 2013
@@ -23,12 +23,23 @@ import com.opensymphony.xwork2.conversio
import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.ognl.PropertiesJudge;
-import com.opensymphony.xwork2.util.*;
+import com.opensymphony.xwork2.util.ArrayUtils;
+import com.opensymphony.xwork2.util.ClearableValueStack;
+import com.opensymphony.xwork2.util.LocalizedTextUtil;
+import com.opensymphony.xwork2.util.MemberAccessValueStack;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.ValueStackFactory;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -318,13 +329,7 @@ public class ParametersInterceptor exten
newStack.setParameter(name, value);
} catch (RuntimeException e) {
if (devMode) {
- String developerNotification =
LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification",
ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", new
Object[]{
- "Unexpected Exception caught setting '" + name +
"' on '" + action.getClass() + ": " + e.getMessage()
- });
- LOG.error(developerNotification);
- if (action instanceof ValidationAware) {
- ((ValidationAware)
action).addActionMessage(developerNotification);
- }
+ notifyDeveloper(action, name, e.getMessage());
}
}
}
@@ -335,6 +340,22 @@ public class ParametersInterceptor exten
addParametersToContext(ActionContext.getContext(),
acceptableParameters);
}
+ protected void notifyDeveloper(Object action, String property, String
message) {
+ String developerNotification =
LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification",
+ ActionContext.getContext().getLocale(), "Developer
Notification:\n{0}",
+ new Object[]{
+ "Unexpected Exception caught setting '" + property +
"' on '" + action.getClass() + ": " + message
+ }
+ );
+ LOG.error(developerNotification);
+ // see https://issues.apache.org/jira/browse/WW-4066
+ if (action instanceof ValidationAware) {
+ Collection<String> messages = ((ValidationAware)
action).getActionMessages();
+ messages.add(message);
+ ((ValidationAware) action).setActionMessages(messages);
+ }
+ }
+
/**
* Checks if name of parameter can be accepted or thrown away
*