use of org.mvel2.integration.impl.MapVariableResolverFactory in project drools by kiegroup.
the class JavaRuleBuilderHelper method generateMethodTemplate.
public static void generateMethodTemplate(final String ruleTemplate, final RuleBuildContext context, final Map vars) {
TemplateRegistry registry = getRuleTemplateRegistry(context.getKnowledgeBuilder().getRootClassLoader());
context.addMethod((String) TemplateRuntime.execute(registry.getNamedTemplate(ruleTemplate), null, new MapVariableResolverFactory(vars), registry));
}
use of org.mvel2.integration.impl.MapVariableResolverFactory in project drools by kiegroup.
the class AccumulateTemplateTest method testMethodGeneration.
@Test
public void testMethodGeneration() {
final String className = "accumulate0";
final String[] declarationTypes = new String[] { "String", "int" };
final Declaration[] declarations = new Declaration[] { new Declaration("name", null, null), new Declaration("age", null, null) };
final Declaration[] inner = new Declaration[] { new Declaration("cheese", new PatternExtractor(new ClassObjectType(Cheese.class)), null), new Declaration("price", store.getReader(Cheese.class, "price"), null) };
final String[] globals = new String[] { "aGlobal", "anotherGlobal" };
final List globalTypes = Arrays.asList(new String[] { "String", "String" });
final Map map = new HashMap();
map.put("className", StringUtils.ucFirst(className));
map.put("instanceName", className);
map.put("package", "org.drools");
map.put("ruleClassName", "Rule0");
map.put("invokerClassName", "Rule0" + StringUtils.ucFirst(className) + "Invoker");
map.put("declarations", declarations);
map.put("declarationTypes", declarationTypes);
map.put("globals", globals);
map.put("globalTypes", globalTypes);
map.put("innerDeclarations", inner);
map.put("attributes", new String[] { "x" });
map.put("attributesTypes", new String[] { "int" });
map.put("initCode", "x = 0;");
map.put("actionCode", "x += 1;");
map.put("reverseCode", "x -= 1;");
map.put("resultCode", "x + 10");
map.put("supportsReverse", "true");
map.put("resultType", Integer.class);
map.put("hashCode", new Integer(10));
TemplateRegistry registry = getRuleTemplateRegistry();
Object method = TemplateRuntime.execute(registry.getNamedTemplate("accumulateInnerClass"), null, new MapVariableResolverFactory(map), registry);
// System.out.println( method );
}
use of org.mvel2.integration.impl.MapVariableResolverFactory in project drools by kiegroup.
the class AccumulateTemplateTest method testInvokerGenerationMultiPattern.
@Test
public void testInvokerGenerationMultiPattern() {
final String className = "accumulate0";
final String[] declarationTypes = new String[] { "String", "int" };
final Declaration[] declarations = new Declaration[] { new Declaration("name", store.getReader(Person.class, "name"), null), new Declaration("age", store.getReader(Person.class, "age"), null) };
final Declaration[] inner = new Declaration[] { new Declaration("$cheese", new PatternExtractor(new ClassObjectType(Cheese.class)), null), new Declaration("$person", new PatternExtractor(new ClassObjectType(Person.class)), null) };
final String[] globals = new String[] { "aGlobal", "anotherGlobal" };
final List globalTypes = Arrays.asList(new String[] { "String", "String" });
final Map map = new HashMap();
map.put("className", StringUtils.ucFirst(className));
map.put("instanceName", className);
map.put("package", "org.drools");
map.put("ruleClassName", "Rule0");
map.put("invokerClassName", "Rule0" + StringUtils.ucFirst(className) + "Invoker");
map.put("declarations", declarations);
map.put("declarationTypes", declarationTypes);
map.put("globals", globals);
map.put("globalTypes", globalTypes);
map.put("innerDeclarations", inner);
map.put("attributes", new Attribute[] { new Attribute("int", "x") });
map.put("initCode", "x = 0;");
map.put("actionCode", "x += 1;");
map.put("reverseCode", "");
map.put("resultCode", "x + 10");
map.put("supportsReverse", "false");
map.put("resultType", Integer.class);
map.put("hashCode", new Integer(10));
map.put("isMultiPattern", Boolean.TRUE);
TemplateRegistry registry = getInvokerTemplateRegistry();
Object method = TemplateRuntime.execute(registry.getNamedTemplate("accumulateInvoker"), null, new MapVariableResolverFactory(map), registry);
// System.out.println( method );
}
use of org.mvel2.integration.impl.MapVariableResolverFactory in project drools by kiegroup.
the class AbstractModel method getMappedMiningPojo.
public Map.Entry<String, String> getMappedMiningPojo() {
Map<String, String> result = new HashMap<>();
if (!templateRegistry.contains(getMiningPojoTemplateName())) {
this.addMiningTemplateToRegistry(templateRegistry);
}
List<PMMLMiningField> dataFields = this.getMiningFields();
Map<String, Object> vars = new HashMap<>();
String className = this.getMiningPojoClassName();
vars.put("pmmlPackageName", PMML_JAVA_PACKAGE_NAME);
vars.put("className", className);
vars.put("imports", new ArrayList<>());
vars.put("dataFields", dataFields);
vars.put("modelName", this.getModelId());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
TemplateRuntime.execute(templateRegistry.getNamedTemplate(this.getMiningPojoTemplateName()), null, new MapVariableResolverFactory(vars), baos);
} catch (TemplateRuntimeError tre) {
// need to figure out logging here
return null;
}
result.put(PMML_JAVA_PACKAGE_NAME + "." + className, new String(baos.toByteArray()));
return result.entrySet().iterator().next();
}
use of org.mvel2.integration.impl.MapVariableResolverFactory in project drools by kiegroup.
the class AbstractModel method getMappedRuleUnit.
@Override
public Map.Entry<String, String> getMappedRuleUnit() {
Map<String, String> result = new HashMap<>();
if (!templateRegistry.contains(this.getRuleUnitTemplateName())) {
this.addRuleUnitTemplateToRegistry(templateRegistry);
}
Map<String, Object> vars = new HashMap<>();
String className = this.getRuleUnitClassName();
vars.put("pmmlPackageName", this.getModelPackageName());
vars.put("className", className);
vars.put("pojoInputClassName", PMMLRequestData.class.getName());
if (this instanceof Miningmodel) {
vars.put("miningPojoClassName", this.getMiningPojoClassName());
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
TemplateRuntime.execute(templateRegistry.getNamedTemplate(this.getRuleUnitTemplateName()), null, new MapVariableResolverFactory(vars), baos);
} catch (TemplateError te) {
return null;
} catch (TemplateRuntimeError tre) {
// need to figure out logging here
return null;
}
result.put(this.getModelPackageName() + "." + className, new String(baos.toByteArray()));
return result.isEmpty() ? null : result.entrySet().iterator().next();
}
Aggregations