/** Test that type conversion is performed on indexed collection properties. */ public void testSetIndexedValue() { ValueStack stack = ActionContext.getContext().getValueStack(); Map<String, Object> stackContext = stack.getContext(); stackContext.put(ReflectionContextState.CREATE_NULL_OBJECTS, Boolean.TRUE); stackContext.put(ReflectionContextState.DENY_METHOD_EXECUTION, Boolean.TRUE); stackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE); User user = new User(); stack.push(user); // indexed string w/ existing array user.setList(new ArrayList<String>()); user.getList().add(""); String[] foo = new String[] {"asdf"}; stack.setValue("list[0]", foo); assertNotNull(user.getList()); assertEquals(1, user.getList().size()); assertEquals(String.class, user.getList().get(0).getClass()); assertEquals("asdf", user.getList().get(0)); }
/** XW-281 */ public void testSetBigIndexedValue() { ValueStack stack = ActionContext.getContext().getValueStack(); Map stackContext = stack.getContext(); stackContext.put(ReflectionContextState.CREATE_NULL_OBJECTS, Boolean.FALSE); stackContext.put(ReflectionContextState.DENY_METHOD_EXECUTION, Boolean.TRUE); stackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE); User user = new User(); stack.push(user); // indexed string w/ existing array user.setList(new ArrayList()); String[] foo = new String[] {"asdf"}; ((OgnlValueStack) stack).setDevMode("true"); try { stack.setValue("list.1114778947765", foo); fail("non-valid expression: list.1114778947765"); } catch (RuntimeException ex) {; // it's oke } try { stack.setValue("1114778947765", foo); fail("non-valid expression: 1114778947765"); } catch (RuntimeException ex) {; } try { stack.setValue("1234", foo); fail("non-valid expression: 1114778947765"); } catch (RuntimeException ex) {; } ((OgnlValueStack) stack).setDevMode("false"); stack.setValue("list.1114778947765", foo); stack.setValue("1114778947765", foo); stack.setValue("1234", foo); }