Search in sources :

Example 11 with InstantiatorDefinition

use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.

the class TupleClassMetaTest method testRespecify.

@Test
public void testRespecify() throws ClassNotFoundException, MalformedURLException {
    ClassLoader cl = new URLClassLoader(new URL[] { LibrarySetsClassLoader.findUrl(Tuple2.class, getClass().getClassLoader()) }, null) {

        @Override
        public InputStream getResourceAsStream(String name) {
            return null;
        }
    };
    ReflectionService reflectionService = new ReflectionService(null) {
    };
    Class<?> tuple2Class = cl.loadClass(Tuple2.class.getName());
    TupleClassMeta classMeta = new TupleClassMeta(tuple2Class, reflectionService);
    List<InstantiatorDefinition> instantiatorDefinitions = classMeta.getInstantiatorDefinitions();
    assertEquals(1, instantiatorDefinitions.size());
    assertEquals("element0", instantiatorDefinitions.get(0).getParameters()[0].getName());
}
Also used : InstantiatorDefinition(org.simpleflatmapper.reflect.InstantiatorDefinition) Tuple2(org.simpleflatmapper.tuple.Tuple2) URLClassLoader(java.net.URLClassLoader) LibrarySetsClassLoader(org.simpleflatmapper.test.junit.LibrarySetsClassLoader) URLClassLoader(java.net.URLClassLoader) ReflectionService(org.simpleflatmapper.reflect.ReflectionService) Test(org.junit.Test)

Example 12 with InstantiatorDefinition

use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.

the class TupleClassMetaTest method testFindPropertyNoAsm.

@Test
public void testFindPropertyNoAsm() {
    Type type = new TypeReference<Tuple2<String, String>>() {
    }.getType();
    ClassMeta<Tuple2<String, String>> classMeta = ReflectionService.disableAsm().getClassMeta(type);
    InstantiatorDefinition instantiatorDefinition = classMeta.getInstantiatorDefinitions().get(0);
    assertEquals("element0", instantiatorDefinition.getParameters()[0].getName());
    assertEquals("element1", instantiatorDefinition.getParameters()[1].getName());
    assertEquals(2, instantiatorDefinition.getParameters().length);
}
Also used : InstantiatorDefinition(org.simpleflatmapper.reflect.InstantiatorDefinition) Type(java.lang.reflect.Type) Tuple2(org.simpleflatmapper.tuple.Tuple2) Test(org.junit.Test)

Example 13 with InstantiatorDefinition

use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.

the class ArrayClassMetaTest method instantiate.

private Object instantiate(ClassMeta<?> classMeta) throws Exception {
    InstantiatorDefinition instantiatorDefinition = classMeta.getInstantiatorDefinitions().get(0);
    InstantiatorFactory instantiatorFactory = new InstantiatorFactory(null);
    Instantiator instantiator = instantiatorFactory.getInstantiator(instantiatorDefinition, (Class) Object.class, new HashMap(), false, true);
    return instantiator.newInstance(null);
}
Also used : InstantiatorFactory(org.simpleflatmapper.reflect.InstantiatorFactory) InstantiatorDefinition(org.simpleflatmapper.reflect.InstantiatorDefinition) HashMap(java.util.HashMap) Instantiator(org.simpleflatmapper.reflect.Instantiator)

Example 14 with InstantiatorDefinition

use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.

the class BuilderBiInstantiatorDefinitionFactoryTest method testBuilderFromMethodAsmBoxing.

@Test
public void testBuilderFromMethodAsmBoxing() 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[1], new ConstantBiFunction<Void, Object, String>("myname"));
    params.put(parameters[0], new ConstantBiFunction<Void, Object, Integer>(3));
    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("myname", o.getName());
    assertEquals(3, o.getId());
}
Also used : HashMap(java.util.HashMap) AsmFactory(org.simpleflatmapper.reflect.asm.AsmFactory) BuilderInstantiatorDefinition(org.simpleflatmapper.reflect.BuilderInstantiatorDefinition) InstantiatorFactory(org.simpleflatmapper.reflect.InstantiatorFactory) BuilderBiInstantiator(org.simpleflatmapper.reflect.impl.BuilderBiInstantiator) BuilderInstantiatorDefinition(org.simpleflatmapper.reflect.BuilderInstantiatorDefinition) ExecutableInstantiatorDefinition(org.simpleflatmapper.reflect.instantiator.ExecutableInstantiatorDefinition) InstantiatorDefinition(org.simpleflatmapper.reflect.InstantiatorDefinition) ConstantBiFunction(org.simpleflatmapper.util.ConstantBiFunction) BiFunction(org.simpleflatmapper.util.BiFunction) Parameter(org.simpleflatmapper.reflect.Parameter) Test(org.junit.Test)

Example 15 with InstantiatorDefinition

use of org.simpleflatmapper.reflect.InstantiatorDefinition in project SimpleFlatMapper by arnaudroger.

the class BuilderBiInstantiatorDefinitionFactoryTest method testBuilderFromMethodVoid.

@Test
public void testBuilderFromMethodVoid() 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>("zrux"));
    params.put(parameters[0], new ConstantBiFunction<Void, Object, Integer>(3));
    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(3, o.getId());
    assertEquals("zrux", o.getZrux());
}
Also used : HashMap(java.util.HashMap) AsmFactory(org.simpleflatmapper.reflect.asm.AsmFactory) BuilderInstantiatorDefinition(org.simpleflatmapper.reflect.BuilderInstantiatorDefinition) InstantiatorFactory(org.simpleflatmapper.reflect.InstantiatorFactory) BuilderBiInstantiator(org.simpleflatmapper.reflect.impl.BuilderBiInstantiator) BuilderInstantiatorDefinition(org.simpleflatmapper.reflect.BuilderInstantiatorDefinition) ExecutableInstantiatorDefinition(org.simpleflatmapper.reflect.instantiator.ExecutableInstantiatorDefinition) InstantiatorDefinition(org.simpleflatmapper.reflect.InstantiatorDefinition) ConstantBiFunction(org.simpleflatmapper.util.ConstantBiFunction) BiFunction(org.simpleflatmapper.util.BiFunction) Parameter(org.simpleflatmapper.reflect.Parameter) Test(org.junit.Test)

Aggregations

InstantiatorDefinition (org.simpleflatmapper.reflect.InstantiatorDefinition)32 Test (org.junit.Test)20 ExecutableInstantiatorDefinition (org.simpleflatmapper.reflect.instantiator.ExecutableInstantiatorDefinition)20 Parameter (org.simpleflatmapper.reflect.Parameter)17 HashMap (java.util.HashMap)13 BiFunction (org.simpleflatmapper.util.BiFunction)11 BuilderInstantiatorDefinition (org.simpleflatmapper.reflect.BuilderInstantiatorDefinition)10 InstantiatorFactory (org.simpleflatmapper.reflect.InstantiatorFactory)10 ConstantBiFunction (org.simpleflatmapper.util.ConstantBiFunction)9 BuilderBiInstantiator (org.simpleflatmapper.reflect.impl.BuilderBiInstantiator)6 Type (java.lang.reflect.Type)4 AsmFactory (org.simpleflatmapper.reflect.asm.AsmFactory)4 ConstantGetter (org.simpleflatmapper.reflect.getter.ConstantGetter)3 InstantiatorDefinitions (org.simpleflatmapper.reflect.instantiator.InstantiatorDefinitions)3 ArrayList (java.util.ArrayList)2 DbFinalPrimitiveObject (org.simpleflatmapper.test.beans.DbFinalPrimitiveObject)2 Tuple2 (org.simpleflatmapper.tuple.Tuple2)2 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 java.lang.reflect (java.lang.reflect)1