use of org.drools.drl.ast.descr.MVELExprDescr in project drools by kiegroup.
the class XmlPackageReaderTest method testParseFrom.
@Test
public void testParseFrom() throws Exception {
final XmlPackageReader xmlPackageReader = getXmReader();
xmlPackageReader.read(new InputStreamReader(getClass().getResourceAsStream("test_ParseFrom.xml")));
final PackageDescr packageDescr = xmlPackageReader.getPackageDescr();
assertNotNull(packageDescr);
RuleDescr obj = (RuleDescr) packageDescr.getRules().get(0);
PatternDescr patterndescr = (PatternDescr) obj.getLhs().getDescrs().get(0);
FromDescr from = (FromDescr) patterndescr.getSource();
MVELExprDescr accessordescriptor = (MVELExprDescr) from.getDataSource();
assertEquals("cheesery.getCheeses(i+4)", accessordescriptor.getExpression());
assertEquals(patterndescr.getObjectType(), "Cheese");
assertEquals(patterndescr.getIdentifier(), "cheese");
}
use of org.drools.drl.ast.descr.MVELExprDescr in project drools by kiegroup.
the class RuleParserTest method testSimpleMethodCallWithFrom.
@Test
public void testSimpleMethodCallWithFrom() throws Exception {
final RuleDescr rule = (RuleDescr) parseResource("rule", "test_SimpleMethodCallWithFrom.drl");
assertFalse(parser.getErrors().toString(), parser.hasErrors());
final PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get(0);
final FromDescr from = (FromDescr) pattern.getSource();
final MVELExprDescr method = (MVELExprDescr) from.getDataSource();
assertEquals("something.doIt( foo,bar,42,\"hello\",[ a : \"b\", \"something\" : 42, \"a\" : foo, x : [x:y]],\"end\", [a, \"b\", 42] )", method.getExpression());
}
use of org.drools.drl.ast.descr.MVELExprDescr in project drools by kiegroup.
the class RuleParserTest method testSimpleFunctionCallWithFrom.
@Test
public void testSimpleFunctionCallWithFrom() throws Exception {
final RuleDescr rule = (RuleDescr) parseResource("rule", "test_SimpleFunctionCallWithFrom.drl");
assertFalse(parser.getErrors().toString(), parser.hasErrors());
final PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get(0);
final FromDescr from = (FromDescr) pattern.getSource();
final MVELExprDescr func = (MVELExprDescr) from.getDataSource();
assertEquals("doIt( foo,bar,42,\"hello\",[ a : \"b\", \"something\" : 42, \"a\" : foo, x : [x:y]],\"end\", [a, \"b\", 42] )", func.getExpression());
}
use of org.drools.drl.ast.descr.MVELExprDescr in project drools by kiegroup.
the class RuleParserTest method testSimpleAccessorAndArgWithFrom.
@Test
public void testSimpleAccessorAndArgWithFrom() throws Exception {
final RuleDescr rule = (RuleDescr) parseResource("rule", "test_SimpleAccessorArgWithFrom.drl");
assertFalse(parser.getErrors().toString(), parser.hasErrors());
final PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get(0);
final FromDescr from = (FromDescr) pattern.getSource();
final MVELExprDescr accessor = (MVELExprDescr) from.getDataSource();
assertEquals("something.doIt[\"key\"]", accessor.getExpression());
}
use of org.drools.drl.ast.descr.MVELExprDescr in project drools by kiegroup.
the class PatternUtil method normalizeOOPathPattern.
public static PatternDescr normalizeOOPathPattern(PatternDescr pattern, RuleContext context) {
String oopathExpr = pattern.getDescrs().get(0).getText();
XpathAnalysis xpathAnalysis = XpathAnalysis.analyze(oopathExpr);
XpathAnalysis.XpathPart firstPart = xpathAnalysis.getPart(0);
PatternDescr normalizedPattern = new PatternDescr();
normalizedPattern.setObjectType(findPatternType(firstPart, context));
firstPart.getConstraints().stream().map(ExprConstraintDescr::new).forEach(normalizedPattern::addConstraint);
if (xpathAnalysis.getParts().size() == 1) {
normalizedPattern.setIdentifier(pattern.getIdentifier());
} else {
StringBuilder sb = new StringBuilder();
if (pattern.getIdentifier() != null) {
sb.append(pattern.getIdentifier()).append(": ");
}
for (int i = 1; i < xpathAnalysis.getParts().size(); i++) {
sb.append("/").append(xpathAnalysis.getPart(i));
}
normalizedPattern.addConstraint(new ExprConstraintDescr(sb.toString()));
}
FromDescr source = new FromDescr();
source.setDataSource(new MVELExprDescr(firstPart.getField()));
normalizedPattern.setSource(source);
return normalizedPattern;
}
Aggregations