/** First test verifies that bean builder works as expected */ public void testLowLevelMaterializer() throws Exception { AbstractTypeMaterializer mat = new AbstractTypeMaterializer(); DeserializationConfig config = new ObjectMapper().getDeserializationConfig(); Class<?> impl = mat.materializeClass(config, config.constructType(Bean.class)); assertNotNull(impl); assertTrue(Bean.class.isAssignableFrom(impl)); // also, let's instantiate to make sure: Object ob = impl.newInstance(); // and just for good measure do actual cast Bean bean = (Bean) ob; // call something to ensure generation worked... assertNull(bean.getA()); // Also: let's verify that we can handle dup calls: Class<?> impl2 = mat.materializeClass(config, config.constructType(Bean.class)); assertNotNull(impl2); assertSame(impl, impl2); }
public void testLowLevelMaterializerFailOnIncompatible() throws Exception { AbstractTypeMaterializer mat = new AbstractTypeMaterializer(); DeserializationConfig config = new ObjectMapper().getDeserializationConfig(); try { mat.materializeClass(config, config.constructType(InvalidBean.class)); fail("Expected exception for incompatible property types"); } catch (IllegalArgumentException e) { verifyException(e, "incompatible types"); } }
public void testLowLevelMaterializerFailOnUnrecognized() throws Exception { AbstractTypeMaterializer mat = new AbstractTypeMaterializer(); // by default early failure is disabled, enable: mat.enable(AbstractTypeMaterializer.Feature.FAIL_ON_UNMATERIALIZED_METHOD); DeserializationConfig config = new ObjectMapper().getDeserializationConfig(); try { mat.materializeClass(config, config.constructType(PartialBean.class)); fail("Expected exception for unrecognized method"); } catch (IllegalArgumentException e) { verifyException(e, "Unrecognized abstract method 'foobar'"); } }