list = AsmInstantiatorDefinitionFactory.extractDefinitions(target); } catch (IllegalArgumentException e) {
list = AsmInstantiatorDefinitionFactory.extractDefinitions(target); } catch (IllegalArgumentException e) {
@Test public void testInstantiateConstructorWithArgsAllPrAsm() throws Exception { Instantiator<Object, DbFinalPrimitiveObject> instantiator = ASM.getInstantiator(DbFinalPrimitiveObject.class, Object.class, AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalPrimitiveObject.class), new HashMap<Parameter, Getter<? super Object, ?>>(), true, true); DbFinalPrimitiveObject object = instantiator.newInstance(null); assertNotNull(object); }
@Test public void testExtractConstructorsDbObject() throws IOException, NoSuchMethodException, SecurityException { List<InstantiatorDefinition> dbObjectConstructors = AsmInstantiatorDefinitionFactory.extractDefinitions(DbObject.class); assertEquals(3, dbObjectConstructors.size()); assertEquals(0, dbObjectConstructors.get(0).getParameters().length); assertEquals(DbObject.class.getConstructor(), ((ExecutableInstantiatorDefinition)dbObjectConstructors.get(0)).getExecutable()); }
@Test public void testInstantiateConstructorWithArgsAllPr() throws Exception { Instantiator<Object, DbFinalPrimitiveObject> instantiator = DISABLE_ASM.getInstantiator(DbFinalPrimitiveObject.class, Object.class, AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalPrimitiveObject.class), new HashMap<Parameter, Getter<? super Object, ?>>(), true, true); DbFinalPrimitiveObject object = instantiator.newInstance(null); assertNotNull(object); }
@Test public void testInstantiateConstructorWithArgsAllPr() throws Exception { BiInstantiator<Object, Object, DbFinalPrimitiveObject> instantiator = DISABLE_ASM.getBiInstantiator(DbFinalPrimitiveObject.class, Object.class, Object.class, AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalPrimitiveObject.class), new HashMap<Parameter, BiFunction<? super Object, ? super Object, ?>>(), true, true); DbFinalPrimitiveObject object = instantiator.newInstance(null, null); assertNotNull(object); }
@Test public void testInstantiateConstructorWithFactoryMethodWithPrimitiveAsm() throws Exception { BiInstantiator<Long, Long, MyClassWithFactoryMethodPrimitiveType> instantiator = ASM.getBiInstantiator(MyClassWithFactoryMethodPrimitiveType.class, long.class, long.class, AsmInstantiatorDefinitionFactory.extractDefinitions(MyClassWithFactoryMethodPrimitiveType.class), new HashMap<Parameter, BiFunction<? super Long, ? super Long, ?>>(), true, true); MyClassWithFactoryMethodPrimitiveType object = instantiator.newInstance(1l, 2l); assertNotNull(object); } @Test
@Test public void testInstantiateConstructorWithFactoryMethodWithPrimitiveAsm() throws Exception { Instantiator<Long, MyClassWithFactoryMethodPrimitiveType> instantiator = ASM.getInstantiator(MyClassWithFactoryMethodPrimitiveType.class, long.class, AsmInstantiatorDefinitionFactory.extractDefinitions(MyClassWithFactoryMethodPrimitiveType.class), new HashMap<Parameter, Getter<? super Long, ?>>(), true, true); MyClassWithFactoryMethodPrimitiveType object = instantiator.newInstance(1l); assertNotNull(object); } @Test
@Test public void testInstantiateConstructorWithArgsAllPrAsm() throws Exception { BiInstantiator<Object, Object, DbFinalPrimitiveObject> instantiator = ASM.getBiInstantiator(DbFinalPrimitiveObject.class, Object.class, Object.class, AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalPrimitiveObject.class), new HashMap<Parameter, BiFunction<? super Object, ? super Object, ?>>(), true, true); DbFinalPrimitiveObject object = instantiator.newInstance(null, null); assertNotNull(object); }
@Test public void testExtractStaticFactoryMethodAsm() throws NoSuchMethodException, IOException { List<InstantiatorDefinition> factoryMethod = AsmInstantiatorDefinitionFactory.extractDefinitions(ObjectWithFactoryMethod.class); assertEquals(1, factoryMethod.size()); ExecutableInstantiatorDefinition id = (ExecutableInstantiatorDefinition) factoryMethod.get(0); assertEquals(ObjectWithFactoryMethod.class.getMethod("valueOf", String.class), id.getExecutable()); assertEquals(1, id.getParameters().length); assertEquals(new Parameter(0, "value", String.class), id.getParameters()[0]); }
@Test public void testExtractConstructorsTuple2() throws IOException, NoSuchMethodException, SecurityException { List<InstantiatorDefinition> finalDbObjectConstructors = AsmInstantiatorDefinitionFactory.extractDefinitions(Tuples.typeDef(String.class, DbObject.class)); assertEquals(1, finalDbObjectConstructors.size()); assertEquals(2, finalDbObjectConstructors.get(0).getParameters().length); assertEquals(Object.class, finalDbObjectConstructors.get(0).getParameters()[0].getType()); assertEquals(Object.class, finalDbObjectConstructors.get(0).getParameters()[1].getType()); assertEquals(String.class, finalDbObjectConstructors.get(0).getParameters()[0].getGenericType()); assertEquals(DbObject.class, finalDbObjectConstructors.get(0).getParameters()[1].getGenericType()); assertEquals("element0", finalDbObjectConstructors.get(0).getParameters()[0].getName()); assertEquals("element1", finalDbObjectConstructors.get(0).getParameters()[1].getName()); assertEquals(Tuple2.class.getConstructor(Object.class, Object.class), ((ExecutableInstantiatorDefinition)finalDbObjectConstructors.get(0)).getExecutable()); }
@Test public void testExtractConstructorsFinalDbObject() throws IOException, NoSuchMethodException, SecurityException { List<InstantiatorDefinition> finalDbObjectConstructors = AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalObject.class); assertEquals(2, finalDbObjectConstructors.size()); assertEquals(6, finalDbObjectConstructors.get(0).getParameters().length); assertEquals(long.class, finalDbObjectConstructors.get(0).getParameters()[0].getType()); assertEquals(String.class, finalDbObjectConstructors.get(0).getParameters()[1].getType()); assertEquals(String.class, finalDbObjectConstructors.get(0).getParameters()[2].getType()); assertEquals(Date.class, finalDbObjectConstructors.get(0).getParameters()[3].getType()); assertEquals(Type.class, finalDbObjectConstructors.get(0).getParameters()[4].getType()); assertEquals(Type.class, finalDbObjectConstructors.get(0).getParameters()[5].getType()); assertEquals("id", finalDbObjectConstructors.get(0).getParameters()[0].getName()); assertEquals("name", finalDbObjectConstructors.get(0).getParameters()[1].getName()); assertEquals("email", finalDbObjectConstructors.get(0).getParameters()[2].getName()); assertEquals("creationTime", finalDbObjectConstructors.get(0).getParameters()[3].getName()); assertEquals("typeOrdinal", finalDbObjectConstructors.get(0).getParameters()[4].getName()); assertEquals("typeName", finalDbObjectConstructors.get(0).getParameters()[5].getName()); assertEquals(DbFinalObject.class.getConstructor(long.class, String.class, String.class, Date.class, Type.class, Type.class), ((ExecutableInstantiatorDefinition)finalDbObjectConstructors.get(0)).getExecutable()); }
@Test public void testCreateInstantiatorFinalDbObjectInjectIdAndName() throws Exception { ExecutableInstantiatorDefinition instantiatorDefinition = (ExecutableInstantiatorDefinition) AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalObject.class).get(0); HashMap<Parameter, Getter<? super Object, ?>> injections = new HashMap<Parameter, Getter<? super Object, ?>>(); injections.put(new Parameter(0, "id", long.class), new ConstantLongGetter<Object>(33l)); injections.put(new Parameter(1, "name", String.class), new ConstantGetter<Object, String>("fdo")); Instantiator<Object, DbFinalObject> instantiator = asmFactory.createInstantiator(Object.class, instantiatorDefinition, injections, true); DbFinalObject fdo = instantiator.newInstance(new Object()); assertNotNull(fdo); assertNull(fdo.getEmail()); assertNull(fdo.getCreationTime()); assertNull(fdo.getTypeName()); assertNull(fdo.getTypeOrdinal()); assertEquals(33l, fdo.getId()); assertEquals("fdo", fdo.getName()); assertSame(instantiator.getClass(), asmFactory.createInstantiator(Object.class, instantiatorDefinition, injections, true).getClass()); }
@Test public void testCreateInstantiatorFinalDbObjectNameAndType() throws Exception { HashMap<Parameter, Getter<? super Object, ?>> injections = new HashMap<Parameter, Getter<? super Object, ?>>(); ConstantIntGetter<Object> getter = new ConstantIntGetter<Object>(1); injections.put(new Parameter(4, "typeOrdinal", Type.class), new OrdinalEnumGetter<Object, Type>(getter, Type.class)); injections.put(new Parameter(1, "name", String.class), new ConstantGetter<Object, String>("fdo")); List<InstantiatorDefinition> instantiatorDefinitions = AsmInstantiatorDefinitionFactory.extractDefinitions(DbFinalObject.class); Instantiator<Object, DbFinalObject> instantiator = asmFactory.createInstantiator(Object.class, (ExecutableInstantiatorDefinition) instantiatorDefinitions.get(0), injections, true); DbFinalObject fdo = instantiator.newInstance(new Object()); assertNotNull(fdo); assertNull(fdo.getEmail()); assertNull(fdo.getCreationTime()); assertNull(fdo.getTypeName()); assertEquals(0, fdo.getId()); assertEquals("fdo", fdo.getName()); assertEquals(Type.type2, fdo.getTypeOrdinal()); }