@Test public void testGlobal() throws Exception { PackageDescr pack = (PackageDescr) parseResource( "compilationUnit", "globals.drl" ); assertEquals( 1, pack.getRules().size() ); final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 ); assertEquals( 1, rule.getLhs().getDescrs().size() ); assertEquals( 1, pack.getImports().size() ); assertEquals( 2, pack.getGlobals().size() ); final GlobalDescr foo = (GlobalDescr) pack.getGlobals().get( 0 ); assertEquals( "java.lang.String", foo.getType() ); assertEquals( "foo", foo.getIdentifier() ); final GlobalDescr bar = (GlobalDescr) pack.getGlobals().get( 1 ); assertEquals( "java.lang.Integer", bar.getType() ); assertEquals( "bar", bar.getIdentifier() ); }
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( "" ); }
global.getType() ); assertEquals( "aList", global.getIdentifier() ); assertEquals( source.indexOf( "global " + global.getType() ), global.getStartCharacter() ); assertEquals( source.indexOf( "global " + global.getType() + " " + global.getIdentifier() ) + ("global " + global.getType() + " " + global.getIdentifier()).length(), global.getEndCharacter() ); global.getType() ); assertEquals( "aNumber", global.getIdentifier() ); assertEquals( source.indexOf( "global " + global.getType() ), global.getStartCharacter() ); assertEquals( source.indexOf( "global " + global.getType() + " " + global.getIdentifier() ) + ("global " + global.getType() + " " + global.getIdentifier()).length(), global.getEndCharacter() );
public ExpandedDRLInfo registerGlobalDescrs(final List<GlobalDescr> globalDescrs) { if (globalDescrs != null) { for (GlobalDescr globalDescr : globalDescrs) { globals.add(globalDescr.getIdentifier()); } } return this; } }
GlobalDescr globalEntry=new GlobalDescr(); globalEntry.setType("org.slf4j.Logger"); globalEntry.setIdentifier("logger"); pkg.addGlobal(globalEntry);
protected void visit(final GlobalDescr descr) { String fqcn = getFullyQualifiedClassName(descr.getType()); addResourceReference(fqcn, ResourceType.JAVA); }
public ExpandedDRLInfo registerGlobalDescrs( List<GlobalDescr> globalDescrs ) { if ( globalDescrs != null ) { for ( GlobalDescr globalDescr : globalDescrs ) { globals.add( globalDescr.getIdentifier() ); } } return this; } }
@Test public void testParseGlobal() throws Exception { final XmlPackageReader xmlPackageReader = getXmReader(); xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseGlobal.xml" ) ) ); final PackageDescr packageDescr = xmlPackageReader.getPackageDescr(); assertNotNull( packageDescr ); assertEquals( "com.sample", packageDescr.getName() ); final List imports = packageDescr.getImports(); assertEquals( 2, imports.size() ); assertEquals( "java.util.HashMap", ((ImportDescr) imports.get( 0 )).getTarget() ); assertEquals( "org.drools.compiler.*", ((ImportDescr) imports.get( 1 )).getTarget() ); final List globals = packageDescr.getGlobals(); assertEquals( 2, globals.size() ); final GlobalDescr x = (GlobalDescr) globals.get( 0 ); final GlobalDescr yada = (GlobalDescr) globals.get( 1 ); assertEquals( "com.sample.X", x.getType() ); assertEquals( "x", x.getIdentifier() ); assertEquals( "com.sample.Yada", yada.getType() ); assertEquals( "yada", yada.getIdentifier() ); }
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);" ); }
final GlobalDescr yada = (GlobalDescr) globals.get( 1 ); assertEquals( "com.sample.X", x.getType() ); assertEquals( "x", x.getIdentifier() ); assertEquals( "com.sample.Yada", yada.getType() ); assertEquals( "yada", yada.getIdentifier() );
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 testGlobals() { PackageDescr pkg = DescrFactory.newPackage() .name( "org.drools.compiler" ) .newGlobal().type( "java.util.List" ).identifier( "list" ).end() .newGlobal().type( "Person" ).identifier( "bob" ).end() .getDescr(); assertEquals( 2, pkg.getGlobals().size() ); assertEquals( "java.util.List", pkg.getGlobals().get( 0 ).getType() ); assertEquals( "list", pkg.getGlobals().get( 0 ).getIdentifier() ); assertEquals( "Person", pkg.getGlobals().get( 1 ).getType() ); assertEquals( "bob", pkg.getGlobals().get( 1 ).getIdentifier() ); KiePackage kpkg = compilePkgDescr( pkg ); assertEquals( "org.drools.compiler", kpkg.getName() ); }
@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() ); }
final GlobalDescr yada = (GlobalDescr) globals.get( 1 ); assertEquals( "com.sample.X", x.getType() ); assertEquals( "x", x.getIdentifier() ); assertEquals( "com.sample.Yada", yada.getType() ); assertEquals( "yada", yada.getIdentifier() );
ruleDescr.setLhs( lhs ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) );
final GlobalDescr yada = (GlobalDescr) globals.get( 1 ); assertEquals( "com.sample.X", x.getType() ); assertEquals( "x", x.getIdentifier() ); assertEquals( "com.sample.Yada", yada.getType() ); assertEquals( "yada", yada.getIdentifier() );
@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 ); }
ruleDescr.setLhs( lhs ); packageDescr.addGlobal( new GlobalDescr( "map", "java.util.Map" ) );
@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" ) );