private void createEvalRule( final PackageDescr packageDescr, final String expression ) { final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) ); final EvalDescr evalDescr = new EvalDescr( expression ); lhs.addDescr( evalDescr ); ruleDescr.setConsequence( "" ); }
private void createReturnValueRule( final PackageDescr packageDescr, final String expression ) { final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Cheese.class.getName(), "stilton" ); lhs.addDescr( pattern ); BindingDescr fieldBindingDescr = new BindingDescr( "x", "price" ); pattern.addConstraint( fieldBindingDescr ); fieldBindingDescr = new BindingDescr( "y", "price" ); pattern.addConstraint( fieldBindingDescr ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) ); pattern.addConstraint( new ExprConstraintDescr("price == (" + expression + ")") ); ruleDescr.setConsequence( "update(stilton);" ); }
private void createPredicateRule( final PackageDescr packageDescr, final String expression ) { final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Cheese.class.getName(), "stilton" ); lhs.addDescr( pattern ); final BindingDescr fieldBindingDescr = new BindingDescr( "x", "price" ); pattern.addConstraint( fieldBindingDescr ); final BindingDescr fieldBindingDescr2 = new BindingDescr( "y", "price" ); pattern.addConstraint( fieldBindingDescr2 ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) ); pattern.addConstraint( new ExprConstraintDescr( expression ) ); ruleDescr.setConsequence( "update(stilton);" ); }
@Test public void testPredicate() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Cheese.class.getName(), "stilton" ); lhs.addDescr( pattern ); final BindingDescr fieldBindingDescr = new BindingDescr( "x", "price" ); pattern.addConstraint( fieldBindingDescr ); final BindingDescr fieldBindingDescr2 = new BindingDescr( "y", "price" ); pattern.addConstraint( fieldBindingDescr2 ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) ); final ExprConstraintDescr predicate = new ExprConstraintDescr( "eval(( ( Integer )map.get( new Integer(x) )).intValue() == y)" ); pattern.addConstraint( predicate ); ruleDescr.setConsequence( "update(stilton);" ); builder.addPackage( packageDescr ); assertLength( 0, builder.getErrors().getErrors() ); }
ruleDescr.setLhs( lhs ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) );
ruleDescr.setLhs( lhs ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) );
@Test public void testErrors() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Cheese.class.getName(), "stilton" ); lhs.addDescr( pattern ); BindingDescr fieldBindingDescr = new BindingDescr( "x", "price" ); pattern.addConstraint( fieldBindingDescr ); fieldBindingDescr = new BindingDescr( "y", "price" ); pattern.addConstraint( fieldBindingDescr ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) ); pattern.addConstraint( new ExprConstraintDescr("price == x") ); // There is no m this should produce errors. ruleDescr.setConsequence( "update(m);" ); builder.addPackage( packageDescr ); assertTrue( builder.getErrors().getErrors().length > 0 ); }
@Test public void testReturnValue() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Cheese.class.getName(), "stilton" ); lhs.addDescr( pattern ); BindingDescr fieldBindingDescr = new BindingDescr( "x", "price" ); pattern.addConstraint( fieldBindingDescr ); fieldBindingDescr = new BindingDescr( "y", "price" ); pattern.addConstraint( fieldBindingDescr ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) ); pattern.addConstraint( new ExprConstraintDescr("price == (( (Integer) map.get( new Integer( x )) ).intValue() * y)") ); ruleDescr.setConsequence( "update(stilton);" ); builder.addPackage( packageDescr ); assertEquals( "Should not have any errors", 0, builder.getErrors().getErrors().length ); }
pattern.addConstraint( fieldBindingDescr ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) );
GlobalDescr globalEntry=new GlobalDescr(); globalEntry.setType("org.slf4j.Logger"); globalEntry.setIdentifier("logger");