use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.
the class BuilderBiInstantiatorDefinitionFactoryTest method testBuilderFromMethodVoidNullHandling.
@Test
public void testBuilderFromMethodVoidNullHandling() throws Exception {
final List<InstantiatorDefinition> instantiatorDefinitions = BuilderInstantiatorDefinitionFactory.extractDefinitions(ClassBuilderWithMethod.class);
assertEquals(1, instantiatorDefinitions.size());
BuilderInstantiatorDefinition b = (BuilderInstantiatorDefinition) instantiatorDefinitions.get(0);
final Parameter[] parameters = b.getParameters();
Arrays.sort(parameters, new Comparator<Parameter>() {
@Override
public int compare(Parameter o1, Parameter o2) {
return o1.getName().compareTo(o2.getName());
}
});
Map<Parameter, BiFunction<? super Void, ? super Object, ?>> params = new HashMap<Parameter, BiFunction<? super Void, ? super Object, ?>>();
params.put(parameters[2], new ConstantBiFunction<Void, Object, String>(null));
params.put(parameters[0], new ConstantBiFunction<Void, Object, Integer>(null));
final InstantiatorFactory instantiatorFactory = new InstantiatorFactory(new AsmFactory(getClass().getClassLoader()), true);
final BiInstantiator<Void, Object, ClassBuilderWithMethod> instantiator = instantiatorFactory.<Void, Object, ClassBuilderWithMethod>getBiInstantiator(b, Void.class, Object.class, params, true, true);
final ClassBuilderWithMethod o = instantiator.newInstance(null, null);
assertFalse((instantiator instanceof BuilderBiInstantiator));
assertEquals(0, o.getId());
assertEquals(null, o.getZrux());
}
use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.
the class JoolTupleTest method testFindPropertyNoAsmJool.
@Test
public void testFindPropertyNoAsmJool() {
Type type = new TypeReference<org.jooq.lambda.tuple.Tuple2<String, String>>() {
}.getType();
ClassMeta<org.jooq.lambda.tuple.Tuple2<String, String>> classMeta = ReflectionService.disableAsm().getClassMeta(type);
InstantiatorDefinition instantiatorDefinition = classMeta.getInstantiatorDefinitions().get(0);
assertEquals("v1", instantiatorDefinition.getParameters()[0].getName());
assertEquals("v2", instantiatorDefinition.getParameters()[1].getName());
assertEquals(2, instantiatorDefinition.getParameters().length);
}
use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.
the class ReflectionInstantiatorDefinitionFactoryTest method testExtractStaticFactoryMethodAsm.
@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]);
}
use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.
the class OptionalClassMetaTest method testInstantiatorDefinition.
@Test
public void testInstantiatorDefinition() throws Exception {
List<InstantiatorDefinition> instantiatorDefinitions = objectClassMeta.getInstantiatorDefinitions();
assertEquals(1, instantiatorDefinitions.size());
InstantiatorDefinition id = instantiatorDefinitions.get(0);
assertEquals(1, id.getParameters().length);
assertEquals("value", id.getParameters()[0].getName());
}
use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.
the class BiInstantiatorFactoryTest method testBiInstantiatorOnDifferentGetter.
@Test
public void testBiInstantiatorOnDifferentGetter() throws Exception {
Map<Parameter, BiFunction<? super Object, ? super Object, ?>> injections1 = new HashMap<Parameter, BiFunction<? super Object, ? super Object, ?>>();
Map<Parameter, BiFunction<? super Object, ? super Object, ?>> injections2 = new HashMap<Parameter, BiFunction<? super Object, ? super Object, ?>>();
injections1.put(new Parameter(0, "str", String.class), new BiFunctionGetter<Object, Object, String>(new ConstantGetter<Object, String>("str1")));
injections1.put(new Parameter(1, "val1", int.class), new BiFunctionGetter<Object, Object, Integer>(new ConstantGetter<Object, Integer>(12)));
injections2.put(new Parameter(0, "str", String.class), new BiFunctionGetter<Object, Object, String>(new ConstantGetter<Object, String>("str2")));
injections2.put(new Parameter(1, "val1", int.class), new BiFunctionGetter<Object, Object, Integer>(new MyConstantGetter()));
List<InstantiatorDefinition> constructors = ReflectionService.newInstance().extractInstantiator(ClassExample.class);
final BiInstantiator<Object, Object, ClassExample> instantiator1 = ASM.getBiInstantiator(ClassExample.class, Object.class, Object.class, constructors, injections1, true, true);
final BiInstantiator<Object, Object, ClassExample> instantiator2 = ASM.getBiInstantiator(ClassExample.class, Object.class, Object.class, constructors, injections2, true, true);
ClassExample c1 = instantiator1.newInstance(null, null);
assertEquals("str1", c1.getStr());
assertEquals(12, c1.getVal1());
ClassExample c2 = instantiator2.newInstance(null, null);
assertEquals("str2", c2.getStr());
assertEquals(13, c2.getVal1());
}
Aggregations