@Test public void testParseCascadeWriteOnly() throws Exception { final AhcPropertyAccessor accessor = new AhcMapperExpressionParser(AhcMapperLogger.DEBUG_STDOUT) .parse(ClassCyclicParent.class, "child.writeOnly", String.class, null, true); assertEquals(MethodPathBasedPropertyAccessor.class, accessor.getClass()); assertEquals(true, accessor.isPrimary()); assertEquals(false, accessor.isReadable()); assertEquals(true, accessor.isWritable()); assertEquals("child.writeOnly", accessor.getName()); final ClassCyclicParent o = new ClassCyclicParent(); o.setChild(new ClassCyclicChild()); accessor.setValue(o, "12345"); assertEquals("12345", o.getChild().getReadOnly()); }
@Test public void testParseSimpleCascade() throws Exception { final AhcPropertyAccessor accessor = new AhcMapperExpressionParser(AhcMapperLogger.DEBUG_STDOUT) .parse(ClassCyclicParent.class, "child.name", String.class, null, true); assertEquals(MethodPathBasedPropertyAccessor.class, accessor.getClass()); assertEquals(true, accessor.isPrimary()); assertEquals(true, accessor.isReadable()); assertEquals(true, accessor.isWritable()); assertEquals("child.name", accessor.getName()); final ClassCyclicParent o = new ClassCyclicParent(); o.setChild(new ClassCyclicChild()); accessor.setValue(o, "abc"); assertEquals("abc", o.getChild().getName()); assertEquals("abc", accessor.getValue(o)); try { accessor.getValue(new ClassCyclicParent()); fail("exception expected"); } catch (NullPointerException exc) { } }