org.sql2o.reflection.FactoryFacade Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of anima Show documentation
Show all versions of anima Show documentation
Operate the database like a stream
package org.sql2o.reflection;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@SuppressWarnings("Unsafe")
public class FactoryFacade {
private final static FactoryFacade instance;
static {
MethodGetterFactory mg;
MethodSetterFactory m;
ObjectConstructorFactory o;
try {
m = (MethodSetterFactory) Class
.forName("org.sql2o.reflection.MethodAccessorsGenerator")
.newInstance();
mg = (MethodGetterFactory) m;
o = (ObjectConstructorFactory) m;
} catch (Throwable ex) {
mg = new ReflectionMethodGetterFactory();
m = new ReflectionMethodSetterFactory();
o = null;
}
FieldGetterFactory fg;
FieldSetterFactory f;
try {
Class clsg = Class.forName("org.sql2o.reflection.UnsafeFieldGetterFactory");
fg = (FieldGetterFactory) clsg.newInstance();
Class cls = Class.forName("org.sql2o.reflection.UnsafeFieldSetterFactory");
f = (FieldSetterFactory) cls.newInstance();
if(o==null) o = (ObjectConstructorFactory) f;
} catch (Throwable ex) {
fg = new ReflectionFieldGetterFactory();
f = new ReflectionFieldSetterFactory();
o = new ReflectionObjectConstructorFactory();
}
instance = new FactoryFacade(fg, mg, f, m, o);
}
private final FieldGetterFactory fieldGetterFactory;
private final MethodGetterFactory methodGetterFactory;
private final FieldSetterFactory fieldSetterFactory;
private final MethodSetterFactory methodSetterFactory;
private final ObjectConstructorFactory objectConstructorFactory;
public FactoryFacade(
FieldGetterFactory fieldGetterFactory, MethodGetterFactory methodGetterFactory,
FieldSetterFactory fieldSetterFactory, MethodSetterFactory methodSetterFactory,
ObjectConstructorFactory objectConstructorFactory) {
this.fieldGetterFactory = fieldGetterFactory;
this.methodGetterFactory = methodGetterFactory;
this.fieldSetterFactory = fieldSetterFactory;
this.methodSetterFactory = methodSetterFactory;
this.objectConstructorFactory = objectConstructorFactory;
}
public static FactoryFacade getInstance() {
return instance;
}
public Getter newGetter(Field field) {
return fieldGetterFactory.newGetter(field);
}
public Getter newGetter(Method method) {
return methodGetterFactory.newGetter(method);
}
public Setter newSetter(Field field) {
return fieldSetterFactory.newSetter(field);
}
public Setter newSetter(Method method) {
return methodSetterFactory.newSetter(method);
}
public ObjectConstructor newConstructor(Class> cls) {
return objectConstructorFactory.newConstructor(cls);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy