This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch action-context-boost in repository https://gitbox.apache.org/repos/asf/struts.git
The following commit(s) were added to refs/heads/action-context-boost by this push: new df687a6 WW-4789 WW-3788 Marks CONVERSION_ERRORS as deprecated on behalf using helper methods df687a6 is described below commit df687a6d43901ef42ff98b01754fc191ec29445f Author: Lukasz Lenart <lukaszlen...@apache.org> AuthorDate: Fri Apr 10 09:08:38 2020 +0200 WW-4789 WW-3788 Marks CONVERSION_ERRORS as deprecated on behalf using helper methods --- .../com/opensymphony/xwork2/ActionContext.java | 15 +- .../xwork2/conversion/impl/XWorkConverter.java | 5 +- .../xwork2/interceptor/AliasInterceptor.java | 5 +- .../xwork2/interceptor/ParametersInterceptor.java | 5 +- .../interceptor/StaticParametersInterceptor.java | 5 +- .../impl/AnnotationXWorkConverterTest.java | 74 +++++----- .../xwork2/conversion/impl/XWorkConverterTest.java | 155 +++++++++++---------- .../xwork2/ognl/OgnlValueStackTest.java | 51 +++---- 8 files changed, 164 insertions(+), 151 deletions(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/ActionContext.java b/core/src/main/java/com/opensymphony/xwork2/ActionContext.java index 3d7b78e..fbc15b9 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ActionContext.java +++ b/core/src/main/java/com/opensymphony/xwork2/ActionContext.java @@ -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); } diff --git a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java index 2a8df11..3cda3e3 100644 --- a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java +++ b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkConverter.java @@ -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)); diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java index bc156e4..44cdd51 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java @@ -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); } diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index aa8c441..c3d67d3 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@ -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); } diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java index 2d05e9c..14fba78 100644 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java @@ -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); diff --git a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java index 25a57fd..a4e501b 100644 --- a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java @@ -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)); } diff --git a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java index 1b2113c..7bb42b6 100644 --- a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java @@ -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"}; diff --git a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java index e84956b..b5704c3 100644 --- a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java @@ -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 -} \ No newline at end of file +}