use of org.drools.mvel.accessors.ClassFieldAccessorStore in project drools by kiegroup.
the class BetaNodeBuilder method build.
public BetaNode build() {
NodeFactory nFactory = CoreComponentFactory.get().getNodeFactoryService();
EntryPointNode epn = buildContext.getRuleBase().getRete().getEntryPointNodes().values().iterator().next();
ObjectTypeNode otn = nFactory.buildObjectTypeNode(buildContext.getNextNodeId(), epn, new ClassObjectType(leftType), buildContext);
LeftInputAdapterNode leftInput = nFactory.buildLeftInputAdapterNode(buildContext.getNextNodeId(), otn, buildContext, false);
ObjectSource rightInput = nFactory.buildObjectTypeNode(buildContext.getNextNodeId(), epn, new ClassObjectType(rightType), buildContext);
ReteTesterHelper reteTesterHelper = new ReteTesterHelper();
Pattern pattern = new Pattern(0, new ClassObjectType(leftType));
// BetaNodeFieldConstraint betaConstraint = null;
BetaConstraints betaConstraints = null;
if (constraintFieldName != null) {
ClassFieldAccessorStore store = (ClassFieldAccessorStore) reteTesterHelper.getStore();
InternalReadAccessor extractor = store.getReader(leftType, leftFieldName);
Declaration declr = new Declaration(leftVariableName, extractor, pattern);
betaConstraints = new SingleBetaConstraints(reteTesterHelper.getBoundVariableConstraint(rightType, constraintFieldName, declr, constraintOperator), buildContext.getRuleBase().getConfiguration());
} else {
betaConstraints = new EmptyBetaConstraints();
}
switch(nodeType) {
case NodeTypeEnums.JoinNode:
return new JoinNode(0, leftInput, rightInput, betaConstraints, buildContext);
case NodeTypeEnums.NotNode:
return new NotNode(0, leftInput, rightInput, betaConstraints, buildContext);
case NodeTypeEnums.ExistsNode:
return new ExistsNode(0, leftInput, rightInput, betaConstraints, buildContext);
}
throw new IllegalStateException("Unable to build Node");
}
use of org.drools.mvel.accessors.ClassFieldAccessorStore in project drools by kiegroup.
the class AbstractTraitFactory method buildClassDefinition.
public ClassDefinition buildClassDefinition(Class<?> klazz, Class<?> wrapperClass) throws IOException {
ClassFieldInspectorImpl inspector = new ClassFieldInspectorImpl(klazz);
ClassFieldAccessorStore store = getClassFieldAccessorStore();
ClassDefinition def;
if (!klazz.isInterface()) {
String className = wrapperClass.getName();
String superClass = wrapperClass != klazz ? klazz.getName() : klazz.getSuperclass().getName();
String[] interfaces = new String[klazz.getInterfaces().length + 1];
for (int j = 0; j < klazz.getInterfaces().length; j++) {
interfaces[j] = klazz.getInterfaces()[j].getName();
}
interfaces[interfaces.length - 1] = CoreWrapper.class.getName();
def = new ClassDefinition(className, superClass, interfaces);
def.setDefinedClass(wrapperClass);
Traitable tbl = wrapperClass.getAnnotation(Traitable.class);
def.setTraitable(true, tbl != null && tbl.logical());
Map<String, Field> fields = inspector.getFieldTypesField();
for (Field f : fields.values()) {
if (f != null) {
FieldDefinition fld = new FieldDefinition();
fld.setName(f.getName());
fld.setTypeName(f.getType().getName());
fld.setInherited(true);
ClassFieldAccessor accessor = store.getAccessor(def.getDefinedClass().getName(), fld.getName());
fld.setReadWriteAccessor(accessor);
if (inspector.getGetterMethods().containsKey(f.getName())) {
fld.setGetterName(inspector.getGetterMethods().get(f.getName()).getName());
}
if (inspector.getSetterMethods().containsKey(f.getName())) {
fld.setSetterName(inspector.getSetterMethods().get(f.getName()).getName());
}
def.addField(fld);
}
}
} else {
String className = klazz.getName();
String superClass = Object.class.getName();
String[] interfaces = new String[klazz.getInterfaces().length];
for (int j = 0; j < klazz.getInterfaces().length; j++) {
interfaces[j] = klazz.getInterfaces()[j].getName();
}
def = new ClassDefinition(className, superClass, interfaces);
def.setDefinedClass(klazz);
Map<String, Method> properties = inspector.getGetterMethods();
for (Map.Entry<String, Method> propEntry : properties.entrySet()) {
Method m = propEntry.getValue();
if (m != null && m.getDeclaringClass() != TraitType.class && m.getDeclaringClass() != Thing.class && inspector.getSetterMethods().containsKey(propEntry.getKey())) {
FieldDefinition fld = new FieldDefinition();
fld.setName(getterToFieldName(m.getName()));
fld.setTypeName(m.getReturnType().getName());
fld.setInherited(true);
ClassFieldAccessor accessor = store.getAccessor(def.getDefinedClass().getName(), fld.getName());
fld.setReadWriteAccessor(accessor);
fld.setGetterName(m.getName());
fld.setSetterName(inspector.getSetterMethods().get(propEntry.getKey()).getName());
def.addField(fld);
}
}
}
return def;
}
use of org.drools.mvel.accessors.ClassFieldAccessorStore in project drools by kiegroup.
the class ClassBuilderTest method build.
private Class build(ClassBuilder builder, ClassDefinition classDef) throws Exception {
classLoader = new PackageClassLoader(data.getStore(), ProjectClassLoader.createProjectClassLoader());
byte[] d = builder.buildClass(classDef, classLoader);
data.write(convertClassToResourcePath(classDef.getClassName()), d);
this.store = new ClassFieldAccessorStore();
store.setClassFieldAccessorCache(new ClassFieldAccessorCache(classLoader));
store.setEagerWire(true);
Class clazz = classLoader.loadClass(classDef.getClassName());
classDef.setDefinedClass(clazz);
return clazz;
}
use of org.drools.mvel.accessors.ClassFieldAccessorStore in project drools by kiegroup.
the class InstancesHashcodedTest method build.
/*
<dimension name="bck_cycle_dm" item-expression="cycleDimension"
mode="ignore" cache="10" export-to="cycle_id">
<id name="objid" type="long" generator-sql="select bck_dimensions_uid.nextval from dual"/>
<field name="cut_date" type="java.util.Date" value="cutDate" key="true"/>
<field name="due_date" type="java.util.Date" value="dueDate" key="true"/>
<field name="cycle_code" type="java.lang.String" value="cycleCode"/>
<field name="issue_date" type="java.util.Date" value="issueDate"/>
</dimension>
*/
private Class build(ClassBuilder builder, ClassDefinition classDef) throws Exception {
ProjectClassLoader prjClassLoader = ProjectClassLoader.createProjectClassLoader();
byte[] d = builder.buildClass(classDef, prjClassLoader);
JavaDialectRuntimeData data = new JavaDialectRuntimeData();
data.write(convertClassToResourcePath(classDef.getClassName()), d);
ClassLoader classLoader = new PackageClassLoader(data.getStore(), prjClassLoader);
ClassFieldAccessorStore store = new ClassFieldAccessorStore();
store.setClassFieldAccessorCache(new ClassFieldAccessorCache(classLoader));
store.setEagerWire(true);
Class clazz = classLoader.loadClass(classDef.getClassName());
classDef.setDefinedClass(clazz);
return clazz;
}
use of org.drools.mvel.accessors.ClassFieldAccessorStore in project drools by kiegroup.
the class CharClassFieldExtractorTest method setUp.
@Before
public void setUp() throws Exception {
ClassFieldAccessorStore store = new ClassFieldAccessorStore();
store.setClassFieldAccessorCache(new ClassFieldAccessorCache(Thread.currentThread().getContextClassLoader()));
store.setEagerWire(true);
this.reader = store.getReader(TestBean.class, "charAttr");
}
Aggregations