WW-4789 WW-3788 Marks CONVERSION_ERRORS as deprecated on behalf using helper methods

This commit is contained in:
Lukasz Lenart
2020-04-10 09:08:38 +02:00
parent 8e6815e115
commit df687a6d43
8 changed files with 164 additions and 151 deletions
@@ -63,7 +63,7 @@ public class ActionContext implements Serializable {
/**
* Constant for the name of the action being executed.
*
* @deprecated used helper methods instead
* @deprecated use helper methods instead
*/
@Deprecated
public static final String ACTION_NAME = "com.opensymphony.xwork2.ActionContext.name";
@@ -100,16 +100,17 @@ public class ActionContext implements Serializable {
/**
* Constant for the map of type conversion errors.
* @deprecated use helper method instead
*/
@Deprecated
public static final String CONVERSION_ERRORS = "com.opensymphony.xwork2.ActionContext.conversionErrors";
/**
* Constant for the container
*/
public static final String CONTAINER = "com.opensymphony.xwork2.ActionContext.container";
private Map<String, Object> context;
private final Map<String, Object> context;
/**
* Creates a new ActionContext initialized with another context.
@@ -128,6 +129,9 @@ public class ActionContext implements Serializable {
* @return new ActionContext
*/
public static ActionContext of(Map<String, Object> context) {
if (context == null) {
throw new IllegalArgumentException("Context cannot be null!");
}
return new ActionContext(context);
}
@@ -223,6 +227,7 @@ public class ActionContext implements Serializable {
*
* @return a Map of ServletContext or generic application level Map
*/
@SuppressWarnings("unchecked")
public Map<String, Object> getApplication() {
return (Map<String, Object>) get(APPLICATION);
}
@@ -258,8 +263,9 @@ public class ActionContext implements Serializable {
* @return the map of conversion errors which occurred when executing the action or an empty map if
* there were no errors.
*/
@SuppressWarnings("unchecked")
public Map<String, ConversionData> getConversionErrors() {
Map<String, ConversionData> errors = (Map) get(CONVERSION_ERRORS);
Map<String, ConversionData> errors = (Map<String, ConversionData>) get(CONVERSION_ERRORS);
if (errors == null) {
errors = withConversionErrors(new HashMap<>()).getConversionErrors();
@@ -374,6 +380,7 @@ public class ActionContext implements Serializable {
*
* @return the Map of HttpSession values when in a servlet environment or a generic session map otherwise.
*/
@SuppressWarnings("unchecked")
public Map<String, Object> getSession() {
return (Map<String, Object>) get(SESSION);
}
@@ -442,11 +442,12 @@ public class XWorkConverter extends DefaultTypeConverter {
realProperty = fullName;
}
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) context.get(ActionContext.CONVERSION_ERRORS);
ActionContext actionContext = ActionContext.of(context);
Map<String, ConversionData> conversionErrors = actionContext.getConversionErrors();
if (conversionErrors == null) {
conversionErrors = new HashMap<>();
context.put(ActionContext.CONVERSION_ERRORS, conversionErrors);
actionContext.withConversionErrors(conversionErrors);
}
conversionErrors.put(realProperty, new ConversionData(value, toClass));
@@ -193,8 +193,9 @@ public class AliasInterceptor extends AbstractInterceptor {
}
}
if (clearableStack && (stack.getContext() != null) && (newStack.getContext() != null))
stack.getContext().put(ActionContext.CONVERSION_ERRORS, newStack.getContext().get(ActionContext.CONVERSION_ERRORS));
if (clearableStack) {
stack.getActionContext().withConversionErrors(newStack.getActionContext().getConversionErrors());
}
} else {
LOG.debug("invalid alias expression: {}", aliasesKey);
}
@@ -216,8 +216,9 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
}
}
if (clearableStack && (stack.getContext() != null) && (newStack.getContext() != null))
stack.getContext().put(ActionContext.CONVERSION_ERRORS, newStack.getContext().get(ActionContext.CONVERSION_ERRORS));
if (clearableStack) {
stack.getActionContext().withConversionErrors(newStack.getActionContext().getConversionErrors());
}
addParametersToContext(ActionContext.getContext(), acceptableParameters);
}
@@ -188,8 +188,9 @@ public class StaticParametersInterceptor extends AbstractInterceptor {
}
}
if (clearableStack && (stack.getContext() != null) && (newStack.getContext() != null))
stack.getContext().put(ActionContext.CONVERSION_ERRORS, newStack.getContext().get(ActionContext.CONVERSION_ERRORS));
if (clearableStack) {
stack.getActionContext().withConversionErrors(newStack.getActionContext().getConversionErrors());
}
if (merge)
addParametersToContext(ac, parameters);
@@ -24,8 +24,6 @@ import com.opensymphony.xwork2.test.ModelDrivenAnnotationAction2;
import com.opensymphony.xwork2.util.Bar;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
import ognl.Ognl;
import ognl.OgnlException;
import ognl.OgnlRuntime;
import java.math.BigDecimal;
@@ -35,6 +33,8 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import static org.junit.Assert.assertArrayEquals;
/**
* @author $Author$
@@ -76,11 +76,11 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
public void testArrayToNumberConversion() {
String[] value = new String[]{"12345"};
assertEquals(new Integer(12345), converter.convertValue(context, null, null, null, value, Integer.class));
assertEquals(new Long(12345), converter.convertValue(context, null, null, null, value, Long.class));
assertEquals(12345, converter.convertValue(context, null, null, null, value, Integer.class));
assertEquals(12345L, converter.convertValue(context, null, null, null, value, Long.class));
value[0] = "123.45";
assertEquals(new Float(123.45), converter.convertValue(context, null, null, null, value, Float.class));
assertEquals(new Double(123.45), converter.convertValue(context, null, null, null, value, Double.class));
assertEquals(123.45f, converter.convertValue(context, null, null, null, value, Float.class));
assertEquals(123.45, converter.convertValue(context, null, null, null, value, Double.class));
value[0] = "1234567890123456789012345678901234567890";
assertEquals(new BigInteger(value[0]), converter.convertValue(context, null, null, null, value, BigInteger.class));
value[0] = "1234567890123456789.012345678901234567890";
@@ -91,7 +91,7 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
assertEquals(sqlDate, converter.convertValue(context, null, null, null, sqlDate, Date.class));
SimpleDateFormat format = new SimpleDateFormat("mm/dd/yyyy hh:mm:ss");
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
Date date = format.parse("01/10/2001 00:00:00");
String dateStr = (String) converter.convertValue(context, null, null, null, date, String.class);
Date date2 = (Date) converter.convertValue(context, null, null, null, dateStr, Date.class);
@@ -113,9 +113,9 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action.getBean(), null, "birth", value, Date.class));
stack.pop();
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertNotNull(conversionErrors);
assertTrue(conversionErrors.size() == 1);
assertEquals(1, conversionErrors.size());
assertEquals(value, conversionErrors.get("bean.birth").getValue());
}
@@ -133,7 +133,7 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action, null, "date", value, Date.class));
stack.pop();
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = ActionContext.of(ognlStackContext).getConversionErrors();
assertNotNull(conversionErrors);
assertEquals(1, conversionErrors.size());
assertNotNull(conversionErrors.get("date"));
@@ -154,7 +154,7 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
stack.pop();
stack.pop();
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = ActionContext.of(ognlStackContext).getConversionErrors();
assertNotNull(conversionErrors);
assertEquals(1, conversionErrors.size());
assertNotNull(conversionErrors.get("birth"));
@@ -204,7 +204,7 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
assertEquals(value2, b2.getTitle() + ":" + b2.getSomethingElse());
}
public void testLocalizedDateConversion() throws Exception {
public void testLocalizedDateConversion() {
Date date = new Date(System.currentTimeMillis());
Locale locale = Locale.GERMANY;
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
@@ -224,7 +224,7 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
}
public void testStringArrayToList() {
List<String> list = new ArrayList<String>();
List<String> list = new ArrayList<>();
list.add("foo");
list.add("bar");
list.add("baz");
@@ -238,63 +238,63 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
"123", "456"
}, Long[].class);
assertNotNull(longs);
assertTrue(Arrays.equals(new Long[]{123L, 456L}, longs));
assertArrayEquals(new Long[]{123L, 456L}, longs);
Integer[] ints = (Integer[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, Integer[].class);
assertNotNull(ints);
assertTrue(Arrays.equals(new Integer[]{123, 456}, ints));
assertArrayEquals(new Integer[]{123, 456}, ints);
Double[] doubles = (Double[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, Double[].class);
assertNotNull(doubles);
assertTrue(Arrays.equals(new Double[]{123D, 456D}, doubles));
assertArrayEquals(new Double[]{123D, 456D}, doubles);
Float[] floats = (Float[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, Float[].class);
assertNotNull(floats);
assertTrue(Arrays.equals(new Float[]{123F, 456F}, floats));
assertArrayEquals(new Float[]{123F, 456F}, floats);
Boolean[] booleans = (Boolean[]) converter.convertValue(context, null, null, null, new String[]{
"true", "false"
}, Boolean[].class);
assertNotNull(booleans);
assertTrue(Arrays.equals(new Boolean[]{Boolean.TRUE, Boolean.FALSE}, booleans));
assertArrayEquals(new Boolean[]{Boolean.TRUE, Boolean.FALSE}, booleans);
}
public void testStringArrayToPrimitives() throws OgnlException {
public void testStringArrayToPrimitives() {
long[] longs = (long[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, long[].class);
assertNotNull(longs);
assertTrue(Arrays.equals(new long[]{123, 456}, longs));
assertArrayEquals(new long[]{123, 456}, longs);
int[] ints = (int[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, int[].class);
assertNotNull(ints);
assertTrue(Arrays.equals(new int[]{123, 456}, ints));
assertArrayEquals(new int[]{123, 456}, ints);
double[] doubles = (double[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, double[].class);
assertNotNull(doubles);
assertTrue(Arrays.equals(new double[]{123, 456}, doubles));
assertArrayEquals(new double[]{123, 456}, doubles, 0.0);
float[] floats = (float[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, float[].class);
assertNotNull(floats);
assertTrue(Arrays.equals(new float[]{123, 456}, floats));
assertArrayEquals(new float[]{123, 456}, floats, 0.0f);
boolean[] booleans = (boolean[]) converter.convertValue(context, null, null, null, new String[]{
"true", "false"
}, boolean[].class);
assertNotNull(booleans);
assertTrue(Arrays.equals(new boolean[]{true, false}, booleans));
assertArrayEquals(new boolean[]{true, false}, booleans);
}
public void testStringArrayToSet() {
@@ -338,22 +338,22 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
}
public void testStringToPrimitiveWrappers() {
assertEquals(new Long(123), converter.convertValue(context, null, null, null, "123", Long.class));
assertEquals(new Integer(123), converter.convertValue(context, null, null, null, "123", Integer.class));
assertEquals(new Double(123.5), converter.convertValue(context, null, null, null, "123.5", Double.class));
assertEquals(new Float(123.5), converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(123L, converter.convertValue(context, null, null, null, "123", Long.class));
assertEquals(123, converter.convertValue(context, null, null, null, "123", Integer.class));
assertEquals(123.5, converter.convertValue(context, null, null, null, "123.5", Double.class));
assertEquals(123.5f, converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(false, converter.convertValue(context, null, null, null, "false", Boolean.class));
assertEquals(true, converter.convertValue(context, null, null, null, "true", Boolean.class));
}
public void testStringToPrimitives() {
assertEquals(new Long(123), converter.convertValue(context, null, null, null, "123", long.class));
assertEquals(new Integer(123), converter.convertValue(context, null, null, null, "123", int.class));
assertEquals(new Double(123.5), converter.convertValue(context, null, null, null, "123.5", double.class));
assertEquals(new Float(123.5), converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(123L, converter.convertValue(context, null, null, null, "123", long.class));
assertEquals(123, converter.convertValue(context, null, null, null, "123", int.class));
assertEquals(123.5, converter.convertValue(context, null, null, null, "123.5", double.class));
assertEquals(123.5f, converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(false, converter.convertValue(context, null, null, null, "false", boolean.class));
assertEquals(true, converter.convertValue(context, null, null, null, "true", boolean.class));
assertEquals(new BigDecimal(123.5), converter.convertValue(context, null, null, null, "123.5", BigDecimal.class));
assertEquals(new BigDecimal("123.5"), converter.convertValue(context, null, null, null, "123.5", BigDecimal.class));
assertEquals(new BigInteger("123"), converter.convertValue(context, null, null, null, "123", BigInteger.class));
}
@@ -373,8 +373,8 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
stack.setValue("doubles", value);
assertEquals(2, gb.getDoubles().size());
assertEquals(Double.class, gb.getDoubles().get(0).getClass());
assertEquals(new Double(123.12), gb.getDoubles().get(0));
assertEquals(new Double(123.45), gb.getDoubles().get(1));
assertEquals(123.12, gb.getDoubles().get(0));
assertEquals(123.45, gb.getDoubles().get(1));
}
public void testGenericPropertiesFromField() {
@@ -422,8 +422,8 @@ public class AnnotationXWorkConverterTest extends XWorkTestCase {
assertEquals(1, gb.getGetterList().size());
assertEquals("42.42", stack.findValue("getterList.get(0).toString()"));
assertEquals(new Double(42.42), stack.findValue("getterList.get(0)"));
assertEquals(new Double(42.42), gb.getGetterList().get(0));
assertEquals(42.42, stack.findValue("getterList.get(0)"));
assertEquals(42.42, gb.getGetterList().get(0));
}
@@ -27,7 +27,6 @@ import com.opensymphony.xwork2.util.Cat;
import com.opensymphony.xwork2.util.Foo;
import com.opensymphony.xwork2.util.FurColor;
import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
import ognl.OgnlException;
import ognl.OgnlRuntime;
import java.io.IOException;
@@ -40,6 +39,8 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import static org.junit.Assert.assertArrayEquals;
/**
* @author $Author$
@@ -80,11 +81,11 @@ public class XWorkConverterTest extends XWorkTestCase {
public void testArrayToNumberConversion() {
String[] value = new String[]{"12345"};
assertEquals(new Integer(12345), converter.convertValue(context, null, null, null, value, Integer.class));
assertEquals(new Long(12345), converter.convertValue(context, null, null, null, value, Long.class));
assertEquals(12345, converter.convertValue(context, null, null, null, value, Integer.class));
assertEquals(12345L, converter.convertValue(context, null, null, null, value, Long.class));
value[0] = "123.45";
assertEquals(new Float(123.45), converter.convertValue(context, null, null, null, value, Float.class));
assertEquals(new Double(123.45), converter.convertValue(context, null, null, null, value, Double.class));
assertEquals(123.45f, converter.convertValue(context, null, null, null, value, Float.class));
assertEquals(123.45, converter.convertValue(context, null, null, null, value, Double.class));
value[0] = "1234567890123456789012345678901234567890";
assertEquals(new BigInteger(value[0]), converter.convertValue(context, null, null, null, value, BigInteger.class));
value[0] = "1234567890123456789.012345678901234567890";
@@ -135,9 +136,9 @@ public class XWorkConverterTest extends XWorkTestCase {
assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action.getBean(), null, "birth", value, Date.class));
stack.pop();
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertNotNull(conversionErrors);
assertTrue(conversionErrors.size() == 1);
assertEquals(1, conversionErrors.size());
assertEquals(value, conversionErrors.get("bean.birth").getValue());
}
@@ -154,7 +155,7 @@ public class XWorkConverterTest extends XWorkTestCase {
assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action, null, "date", value, Date.class));
stack.pop();
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = ActionContext.of(ognlStackContext).getConversionErrors();
assertNotNull(conversionErrors);
assertEquals(1, conversionErrors.size());
assertNotNull(conversionErrors.get("date"));
@@ -174,7 +175,7 @@ public class XWorkConverterTest extends XWorkTestCase {
stack.pop();
stack.pop();
Map<String, ConversionData> conversionErrors = (Map<String, ConversionData>) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = ActionContext.of(ognlStackContext).getConversionErrors();
assertNotNull(conversionErrors);
assertEquals(1, conversionErrors.size());
assertNotNull(conversionErrors.get("birth"));
@@ -311,7 +312,7 @@ public class XWorkConverterTest extends XWorkTestCase {
assertEquals("Custom error message for java.util.Date.", message);
}
public void testLocalizedDateConversion() throws Exception {
public void testLocalizedDateConversion() {
Date date = new Date(System.currentTimeMillis());
Locale locale = Locale.GERMANY;
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
@@ -332,9 +333,9 @@ public class XWorkConverterTest extends XWorkTestCase {
assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action.getBean(), null, "count", "111.1", int.class));
stack.pop();
Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertNotNull(conversionErrors);
assertTrue(conversionErrors.size() == 1);
assertEquals(1, conversionErrors.size());
}
public void testStringArrayToCollection() {
@@ -362,63 +363,63 @@ public class XWorkConverterTest extends XWorkTestCase {
"123", "456"
}, Long[].class);
assertNotNull(longs);
assertTrue(Arrays.equals(new Long[]{123L, 456L}, longs));
assertArrayEquals(new Long[]{123L, 456L}, longs);
Integer[] ints = (Integer[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, Integer[].class);
assertNotNull(ints);
assertTrue(Arrays.equals(new Integer[]{123, 456}, ints));
assertArrayEquals(new Integer[]{123, 456}, ints);
Double[] doubles = (Double[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, Double[].class);
assertNotNull(doubles);
assertTrue(Arrays.equals(new Double[]{123D, 456D}, doubles));
assertArrayEquals(new Double[]{123D, 456D}, doubles);
Float[] floats = (Float[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, Float[].class);
assertNotNull(floats);
assertTrue(Arrays.equals(new Float[]{123F, 456F}, floats));
assertArrayEquals(new Float[]{123F, 456F}, floats);
Boolean[] booleans = (Boolean[]) converter.convertValue(context, null, null, null, new String[]{
"true", "false"
}, Boolean[].class);
assertNotNull(booleans);
assertTrue(Arrays.equals(new Boolean[]{Boolean.TRUE, Boolean.FALSE}, booleans));
assertArrayEquals(new Boolean[]{Boolean.TRUE, Boolean.FALSE}, booleans);
}
public void testStringArrayToPrimitives() throws OgnlException {
public void testStringArrayToPrimitives() {
long[] longs = (long[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, long[].class);
assertNotNull(longs);
assertTrue(Arrays.equals(new long[]{123, 456}, longs));
assertArrayEquals(new long[]{123, 456}, longs);
int[] ints = (int[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, int[].class);
assertNotNull(ints);
assertTrue(Arrays.equals(new int[]{123, 456}, ints));
assertArrayEquals(new int[]{123, 456}, ints);
double[] doubles = (double[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, double[].class);
assertNotNull(doubles);
assertTrue(Arrays.equals(new double[]{123, 456}, doubles));
assertArrayEquals(new double[]{123, 456}, doubles, 0.0);
float[] floats = (float[]) converter.convertValue(context, null, null, null, new String[]{
"123", "456"
}, float[].class);
assertNotNull(floats);
assertTrue(Arrays.equals(new float[]{123, 456}, floats));
assertArrayEquals(new float[]{123, 456}, floats, 0.0f);
boolean[] booleans = (boolean[]) converter.convertValue(context, null, null, null, new String[]{
"true", "false"
}, boolean[].class);
assertNotNull(booleans);
assertTrue(Arrays.equals(new boolean[]{true, false}, booleans));
assertArrayEquals(new boolean[]{true, false}, booleans);
}
public void testStringArrayToSet() {
@@ -500,21 +501,21 @@ public class XWorkConverterTest extends XWorkTestCase {
}
public void testStringToPrimitiveWrappers() {
assertEquals(new Long(123), converter.convertValue(context, null, null, null, "123", Long.class));
assertEquals(new Integer(123), converter.convertValue(context, null, null, null, "123", Integer.class));
assertEquals(new Double(123.5), converter.convertValue(context, null, null, null, "123.5", Double.class));
assertEquals(new Float(123.5), converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(123L, converter.convertValue(context, null, null, null, "123", Long.class));
assertEquals(123, converter.convertValue(context, null, null, null, "123", Integer.class));
assertEquals(123.5, converter.convertValue(context, null, null, null, "123.5", Double.class));
assertEquals(123.5f, converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(false, converter.convertValue(context, null, null, null, "false", Boolean.class));
assertEquals(true, converter.convertValue(context, null, null, null, "true", Boolean.class));
}
public void testStringToPrimitives() {
assertEquals(new Long(123), converter.convertValue(context, null, null, null, "123", long.class));
assertEquals(new Double(123.5), converter.convertValue(context, null, null, null, "123.5", double.class));
assertEquals(new Float(123.5), converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(123L, converter.convertValue(context, null, null, null, "123", long.class));
assertEquals(123.5, converter.convertValue(context, null, null, null, "123.5", double.class));
assertEquals(123.5f, converter.convertValue(context, null, null, null, "123.5", float.class));
assertEquals(false, converter.convertValue(context, null, null, null, "false", boolean.class));
assertEquals(true, converter.convertValue(context, null, null, null, "true", boolean.class));
assertEquals(new BigDecimal(123.5), converter.convertValue(context, null, null, null, "123.5", BigDecimal.class));
assertEquals(new BigDecimal("123.5"), converter.convertValue(context, null, null, null, "123.5", BigDecimal.class));
assertEquals(new BigInteger("123"), converter.convertValue(context, null, null, null, "123", BigInteger.class));
}
@@ -551,7 +552,7 @@ public class XWorkConverterTest extends XWorkTestCase {
}
public void testStringToInt() {
assertEquals(new Integer(123), converter.convertValue(context, null, null, null, "123", int.class));
assertEquals(123, converter.convertValue(context, null, null, null, "123", int.class));
context.put(ActionContext.LOCALE, Locale.US);
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123.12", int.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123aa", int.class));
@@ -574,22 +575,22 @@ public class XWorkConverterTest extends XWorkTestCase {
public void testStringToInteger() {
assertEquals(new Integer(123), converter.convertValue(context, null, null, null, "123", Integer.class));
assertEquals(123, converter.convertValue(context, null, null, null, "123", Integer.class));
context.put(ActionContext.LOCALE, Locale.US);
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123.12", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123aa", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "aa123", Integer.class));
assertEquals(new Integer(1234), converter.convertValue(context, null, null, null, "1,234", Integer.class));
assertEquals(1234, converter.convertValue(context, null, null, null, "1,234", Integer.class));
// WRONG: locale separator is wrongly placed
assertEquals(new Integer(123), converter.convertValue(context, null, null, null, "1,23", Integer.class));
assertEquals(123, converter.convertValue(context, null, null, null, "1,23", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "1,234.12", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "1.234", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "1.234,12", Integer.class));
context.put(ActionContext.LOCALE, Locale.GERMANY);
// WRONG: locale separator is wrongly placed
assertEquals(new Integer(12312), converter.convertValue(context, null, null, null, "123.12", Integer.class));
assertEquals(new Integer(1234), converter.convertValue(context, null, null, null, "1.234", Integer.class));
assertEquals(12312, converter.convertValue(context, null, null, null, "123.12", Integer.class));
assertEquals(1234, converter.convertValue(context, null, null, null, "1.234", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123aa", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "aa123", Integer.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "1,234", Integer.class));
@@ -624,26 +625,26 @@ public class XWorkConverterTest extends XWorkTestCase {
public void testStringToDouble() {
assertEquals(123d, converter.convertValue(context, null, null, null, "123", Double.class));
context.put(ActionContext.LOCALE, Locale.US);
assertEquals(new Double(123.12), converter.convertValue(context, null, null, null, "123.12", Double.class));
assertEquals(123.12, converter.convertValue(context, null, null, null, "123.12", Double.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123aa", Double.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "aa123", Double.class));
assertEquals(new Double(1234), converter.convertValue(context, null, null, null, "1,234", Double.class));
assertEquals(new Double(1234.12), converter.convertValue(context, null, null, null, "1,234.12", Double.class));
assertEquals(1234d, converter.convertValue(context, null, null, null, "1,234", Double.class));
assertEquals(1234.12, converter.convertValue(context, null, null, null, "1,234.12", Double.class));
// WRONG: locale separator is wrongly placed
assertEquals(new Double(123), converter.convertValue(context, null, null, null, "1,23", Double.class));
assertEquals(new Double(1.234), converter.convertValue(context, null, null, null, "1.234", Double.class));
assertEquals(123d, converter.convertValue(context, null, null, null, "1,23", Double.class));
assertEquals(1.234, converter.convertValue(context, null, null, null, "1.234", Double.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "1.234,12", Double.class));
context.put(ActionContext.LOCALE, Locale.GERMANY);
// WRONG: locale separator is wrongly placed
assertEquals(new Double(12312), converter.convertValue(context, null, null, null, "123.12", Double.class));
assertEquals(12312d, converter.convertValue(context, null, null, null, "123.12", Double.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "123aa", Double.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "aa123", Double.class));
assertEquals(new Double(1.234), converter.convertValue(context, null, null, null, "1,234", Double.class));
assertEquals(1.234, converter.convertValue(context, null, null, null, "1,234", Double.class));
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, null, null, null, "1,234.12", Double.class));
assertEquals(new Double(1.23), converter.convertValue(context, null, null, null, "1,23", Double.class));
assertEquals(new Double(1234), converter.convertValue(context, null, null, null, "1.234", Double.class));
assertEquals(new Double(1234.12), converter.convertValue(context, null, null, null, "1.234,12", Double.class));
assertEquals(1.23, converter.convertValue(context, null, null, null, "1,23", Double.class));
assertEquals(1234d, converter.convertValue(context, null, null, null, "1.234", Double.class));
assertEquals(1234.12, converter.convertValue(context, null, null, null, "1.234,12", Double.class));
}
@@ -655,50 +656,50 @@ public class XWorkConverterTest extends XWorkTestCase {
// Testing for null result on non-primitive Number types supplied as empty String or
public void testNotPrimitiveDefaultsToNull() {
assertEquals(null, converter.convertValue(context, null, null, null, null, Double.class));
assertEquals(null, converter.convertValue(context, null, null, null, "", Double.class));
assertNull(converter.convertValue(context, null, null, null, null, Double.class));
assertNull(converter.convertValue(context, null, null, null, "", Double.class));
assertEquals(null, converter.convertValue(context, null, null, null, null, Integer.class));
assertEquals(null, converter.convertValue(context, null, null, null, "", Integer.class));
assertNull(converter.convertValue(context, null, null, null, null, Integer.class));
assertNull(converter.convertValue(context, null, null, null, "", Integer.class));
assertEquals(null, converter.convertValue(context, null, null, null, null, Float.class));
assertEquals(null, converter.convertValue(context, null, null, null, "", Float.class));
assertNull(converter.convertValue(context, null, null, null, null, Float.class));
assertNull(converter.convertValue(context, null, null, null, "", Float.class));
assertEquals(null, converter.convertValue(context, null, null, null, null, Character.class));
assertEquals(null, converter.convertValue(context, null, null, null, "", Character.class));
assertNull(converter.convertValue(context, null, null, null, null, Character.class));
assertNull(converter.convertValue(context, null, null, null, "", Character.class));
assertEquals(null, converter.convertValue(context, null, null, null, null, Long.class));
assertEquals(null, converter.convertValue(context, null, null, null, "", Long.class));
assertNull(converter.convertValue(context, null, null, null, null, Long.class));
assertNull(converter.convertValue(context, null, null, null, "", Long.class));
assertEquals(null, converter.convertValue(context, null, null, null, null, Short.class));
assertEquals(null, converter.convertValue(context, null, null, null, "", Short.class));
assertNull(converter.convertValue(context, null, null, null, null, Short.class));
assertNull(converter.convertValue(context, null, null, null, "", Short.class));
}
public void testConvertChar() {
assertEquals(new Character('A'), converter.convertValue(context, "A", char.class));
assertEquals(new Character('Z'), converter.convertValue(context, "Z", char.class));
assertEquals(new Character('A'), converter.convertValue(context, "A", Character.class));
assertEquals(new Character('Z'), converter.convertValue(context, "Z", Character.class));
assertEquals('A', converter.convertValue(context, "A", char.class));
assertEquals('Z', converter.convertValue(context, "Z", char.class));
assertEquals('A', converter.convertValue(context, "A", Character.class));
assertEquals('Z', converter.convertValue(context, "Z", Character.class));
assertEquals(new Character('A'), converter.convertValue(context, new Character('A'), char.class));
assertEquals(new Character('Z'), converter.convertValue(context, new Character('Z'), char.class));
assertEquals(new Character('A'), converter.convertValue(context, new Character('A'), Character.class));
assertEquals(new Character('Z'), converter.convertValue(context, new Character('Z'), Character.class));
assertEquals('A', converter.convertValue(context, 'A', char.class));
assertEquals('Z', converter.convertValue(context, 'Z', char.class));
assertEquals('A', converter.convertValue(context, 'A', Character.class));
assertEquals('Z', converter.convertValue(context, 'Z', Character.class));
assertEquals(new Character('D'), converter.convertValue(context, "DEF", char.class));
assertEquals(new Character('X'), converter.convertValue(context, "XYZ", Character.class));
assertEquals(new Character(' '), converter.convertValue(context, " ", Character.class));
assertEquals(new Character(' '), converter.convertValue(context, " ", char.class));
assertEquals('D', converter.convertValue(context, "DEF", char.class));
assertEquals('X', converter.convertValue(context, "XYZ", Character.class));
assertEquals(' ', converter.convertValue(context, " ", Character.class));
assertEquals(' ', converter.convertValue(context, " ", char.class));
assertEquals(null, converter.convertValue(context, "", char.class));
assertNull(converter.convertValue(context, "", char.class));
}
public void testConvertClass() {
Class clazz = (Class) converter.convertValue(context, "java.util.Date", Class.class);
Class<?> clazz = (Class<?>) converter.convertValue(context, "java.util.Date", Class.class);
assertEquals(Date.class.getName(), clazz.getName());
Class clazz2 = (Class) converter.convertValue(context, "com.opensymphony.xwork2.util.Bar", Class.class);
Class<?> clazz2 = (Class<?>) converter.convertValue(context, "com.opensymphony.xwork2.util.Bar", Class.class);
assertEquals(Bar.class.getName(), clazz2.getName());
assertEquals(OgnlRuntime.NoConversionPossible, converter.convertValue(context, "com.opensymphony.xwork2.util.IDoNotExist", Class.class));
@@ -713,7 +714,7 @@ public class XWorkConverterTest extends XWorkTestCase {
assertEquals(Boolean.TRUE, converter.convertValue(context, Boolean.TRUE, Boolean.class));
assertEquals(Boolean.FALSE, converter.convertValue(context, Boolean.FALSE, Boolean.class));
assertEquals(null, converter.convertValue(context, null, Boolean.class));
assertNull(converter.convertValue(context, null, Boolean.class));
assertEquals(Boolean.TRUE, converter.convertValue(context, new Bar(), Boolean.class)); // Ognl converter will default to true
}
@@ -729,7 +730,7 @@ public class XWorkConverterTest extends XWorkTestCase {
names.add("XWork");
names.add("Struts");
Collection col = (Collection) converter.convertValue(context, names, Collection.class);
Collection<String> col = (Collection<String>) converter.convertValue(context, names, Collection.class);
assertSame(names, col);
}
@@ -752,7 +753,7 @@ public class XWorkConverterTest extends XWorkTestCase {
assertEquals(321, cat.getFoo().getNumber());
}
public void testCollectionConversion() throws Exception {
public void testCollectionConversion() {
// given
String[] col1 = new String[]{"1", "2", "ble", "3"};
@@ -20,6 +20,7 @@ package com.opensymphony.xwork2.ognl;
import com.opensymphony.xwork2.*;
import com.opensymphony.xwork2.config.ConfigurationException;
import com.opensymphony.xwork2.conversion.impl.ConversionData;
import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
import com.opensymphony.xwork2.inject.ContainerBuilder;
import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor;
@@ -849,11 +850,11 @@ public class OgnlValueStackTest extends XWorkTestCase {
assertTrue(true);
}
Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertTrue(conversionErrors.containsKey("bar"));
}
public void testPrimitiveSettingWithInvalidValueAddsFieldErrorInNonDevMode() throws Exception {
public void testPrimitiveSettingWithInvalidValueAddsFieldErrorInNonDevMode() {
SimpleAction action = new SimpleAction();
OgnlValueStack stack = createValueStack();
stack.getContext().put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);
@@ -861,7 +862,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
stack.push(action);
stack.setValue("bar", "3x");
Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertTrue(conversionErrors.containsKey("bar"));
}
@@ -879,7 +880,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
// expected
}
Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertTrue(conversionErrors.containsKey("bean"));
assertNotNull(action.getBean());
}
@@ -978,8 +979,8 @@ public class OgnlValueStackTest extends XWorkTestCase {
vs.setValue("animalMap[6].name", "Cat Six by interface");
assertNotNull(foo.getAnimalMap());
assertEquals(2, foo.getAnimalMap().size());
assertEquals("Cat Three by interface", foo.getAnimalMap().get(new Long(3)).getName());
assertEquals("Cat Six by interface", foo.getAnimalMap().get(new Long(6)).getName());
assertEquals("Cat Three by interface", foo.getAnimalMap().get(3L).getName());
assertEquals("Cat Six by interface", foo.getAnimalMap().get(6L).getName());
vs.setValue("annotatedCats[0].name", "Cat One By Annotation");
vs.setValue("annotatedCats[1].name", "Cat Two By Annotation");
@@ -1057,7 +1058,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
vs.setValue("male", "false");
assertEquals(false, dog.isMale());
assertFalse(dog.isMale());
}
public void testStatics() {
@@ -1074,7 +1075,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
assertEquals("Canine", vs.findValue("@vs@SCIENTIFIC_NAME"));
assertEquals("Canine", vs.findValue("@vs1@SCIENTIFIC_NAME"));
assertEquals("Feline", vs.findValue("@vs2@SCIENTIFIC_NAME"));
assertEquals(new Integer(BigDecimal.ROUND_HALF_DOWN), vs.findValue("@java.math.BigDecimal@ROUND_HALF_DOWN"));
assertEquals(BigDecimal.ROUND_HALF_DOWN, vs.findValue("@java.math.BigDecimal@ROUND_HALF_DOWN"));
assertNull(vs.findValue("@vs3@BLAH"));
assertNull(vs.findValue("@com.nothing.here.Nothing@BLAH"));
}
@@ -1177,7 +1178,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
// expected
}
Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);
Map<String, ConversionData> conversionErrors = stack.getActionContext().getConversionErrors();
assertTrue(conversionErrors.containsKey("count"));
}
@@ -1202,11 +1203,11 @@ public class OgnlValueStackTest extends XWorkTestCase {
stack.push("Hello World");
assertEquals("Hello World", stack.findValue("top"));
assertEquals(null, stack.findValue(null));
assertNull(stack.findValue(null));
stack.setDefaultType(Integer.class);
stack.push(new Integer(123));
assertEquals(new Integer(123), stack.findValue("top"));
stack.push(123);
assertEquals(123, stack.findValue("top"));
}
public void testFindString() {
@@ -1215,11 +1216,11 @@ public class OgnlValueStackTest extends XWorkTestCase {
stack.push("Hello World");
assertEquals("Hello World", stack.findString("top"));
assertEquals(null, stack.findString(null));
assertNull(stack.findString(null));
}
public void testExpOverrides() {
Map overrides = new HashMap();
Map<Object, Object> overrides = new HashMap<>();
overrides.put("claus", "top");
OgnlValueStack stack = createValueStack();
@@ -1236,7 +1237,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
stack.getContext().put("santa", "Hello Santa");
assertEquals("Hello Santa", stack.findValue("santa", String.class));
assertEquals(null, stack.findValue("unknown", String.class));
assertNull(stack.findValue("unknown", String.class));
}
public void testWarnAboutInvalidProperties() {
@@ -1247,16 +1248,16 @@ public class OgnlValueStackTest extends XWorkTestCase {
// how to test the warning was logged?
assertEquals("Don", stack.findValue("name", String.class));
assertEquals(null, stack.findValue("address", String.class));
assertNull(stack.findValue("address", String.class));
// should log warning
assertEquals(null, stack.findValue("address.invalidProperty", String.class));
assertNull(stack.findValue("address.invalidProperty", String.class));
// if country is null, OGNL throws an exception
/*action.setAddress(new Address());
stack.push(action);*/
// should log warning
assertEquals(null, stack.findValue("address.country.id", String.class));
assertEquals(null, stack.findValue("address.country.name", String.class));
assertNull(stack.findValue("address.country.id", String.class));
assertNull(stack.findValue("address.country.name", String.class));
}
/**
@@ -1498,7 +1499,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
ognlUtil = container.getInstance(OgnlUtil.class);
}
class BadJavaBean {
static class BadJavaBean {
private int count;
private int count2;
@@ -1519,7 +1520,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
}
}
class MyAction {
static class MyAction {
private Long id;
private String name;
private Address address;
@@ -1549,7 +1550,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
}
}
class Address {
static class Address {
private String address;
private Country country;
private String city;
@@ -1579,7 +1580,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
}
}
class Country {
static class Country {
private String iso;
private String name;
private String displayName;
@@ -1609,7 +1610,7 @@ public class OgnlValueStackTest extends XWorkTestCase {
}
}
class TestAppender extends AbstractAppender {
static class TestAppender extends AbstractAppender {
List<LogEvent> logEvents = new ArrayList<>();
TestAppender() {
@@ -1625,4 +1626,4 @@ public class OgnlValueStackTest extends XWorkTestCase {
enum MyNumbers {
ONE, TWO, THREE
}
}