[jboss-svn-commits] JBL Code SVN: r5919 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/compiler main/java/org/drools/lang/descr main/java/org/drools/semantics/java main/resources/org/drools/semantics/java test/java/org/drools test/java/org/drools/compiler test/java/org/drools/integrationtests test/resources/org/drools/integrationtests

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 16 14:06:39 EDT 2006


Author: /services/svn/bin/commit-email.pl: `/opt/subversion/bin/svnlook info /services/jbf-svn/code -r 5919' failed with this output:
Date: svnlook: Inconsistent line ending style
New Revision: 5919

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_From.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FromDescr.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionFixer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Log:
2006-08-16 14:06:31 -0400 (Wed, 16 Aug 2006)

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -371,19 +371,6 @@
     }
 
     /**
-     * @deprecated Do not use for compiling rules. Do a whole package at a time.
-     */
-    public void compileRule(final RuleBuilder builder,
-                            final Rule rule,
-                            final RuleDescr ruleDescr) {
-
-        addRuleSemantics( builder,
-                          rule,
-                          ruleDescr );
-        this.compileAll();
-    }
-
-    /**
      * This will setup the semantic components of the rule for compiling later on.
      * It will not actually call the compiler
      */

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FromDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FromDescr.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/descr/FromDescr.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -1,7 +1,10 @@
 package org.drools.lang.descr;
 
-public class FromDescr extends PatternDescr {
+import java.util.List;
 
+public class FromDescr extends PatternDescr
+    implements
+    ConditionalElementDescr { 
 	private ColumnDescr column;
 	private DeclarativeInvokerDescr dataSource;
 	
@@ -25,5 +28,15 @@
 	public ColumnDescr getReturnedColumn() {
 		return column;
 	}
+
+    public void addDescr(PatternDescr patternDescr) {
+        //
+    }
+
+    public List getDescrs() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 	
+   
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionFixer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionFixer.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/FunctionFixer.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -61,7 +61,7 @@
             final int endIndex = findEndParenthesis( raw,
                                                matcher );
             if ( endIndex < 0 ) {
-                // this means that the first '(' is inside quotes - jump it ant try again
+                // this means that the first '(' is inside quotes - jump it and try again
                 startIndex = matcher.start( 3 );
                 continue;
             } else {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -35,6 +35,7 @@
 import org.drools.base.FieldFactory;
 import org.drools.base.FieldImpl;
 import org.drools.base.ValueType;
+import org.drools.base.dataproviders.MethodDataProvider;
 import org.drools.base.evaluators.Operator;
 import org.drools.compiler.RuleError;
 import org.drools.facttemplates.FactTemplate;
@@ -44,11 +45,16 @@
 import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.ColumnDescr;
 import org.drools.lang.descr.ConditionalElementDescr;
+import org.drools.lang.descr.DeclarativeInvokerDescr;
 import org.drools.lang.descr.EvalDescr;
 import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.FieldAccessDescr;
 import org.drools.lang.descr.FieldBindingDescr;
 import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.FromDescr;
+import org.drools.lang.descr.FunctionCallDescr;
 import org.drools.lang.descr.LiteralRestrictionDescr;
+import org.drools.lang.descr.MethodAccessDescr;
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
 import org.drools.lang.descr.PatternDescr;
@@ -65,6 +71,7 @@
 import org.drools.rule.Declaration;
 import org.drools.rule.EvalCondition;
 import org.drools.rule.Exists;
+import org.drools.rule.From;
 import org.drools.rule.GroupElement;
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.LiteralRestriction;
@@ -80,6 +87,7 @@
 import org.drools.rule.Rule;
 import org.drools.rule.VariableConstraint;
 import org.drools.rule.VariableRestriction;
+import org.drools.spi.DataProvider;
 import org.drools.spi.Evaluator;
 import org.drools.spi.Extractor;
 import org.drools.spi.FieldExtractor;
@@ -237,7 +245,7 @@
         for ( final Iterator it = ruleDescr.getLhs().getDescrs().iterator(); it.hasNext(); ) {
             final Object object = it.next();
             if ( object instanceof ConditionalElementDescr ) {
-                if ( object instanceof AndDescr ) {
+                if ( object.getClass() == AndDescr.class ) {
                     final And and = new And();
                     this.columnCounter.setParent( and );
                     build( this.rule,
@@ -246,7 +254,7 @@
                            false, // do not decrement offset
                            false ); // do not decrement first offset
                     this.rule.addPattern( and );
-                } else if ( object instanceof OrDescr ) {
+                } else if ( object.getClass() == OrDescr.class ) {
                     final Or or = new Or();
                     this.columnCounter.setParent( or );
                     build( this.rule,
@@ -255,7 +263,7 @@
                            true, // when OR is used, offset MUST be decremented
                            false ); // do not decrement first offset
                     this.rule.addPattern( or );
-                } else if ( object instanceof NotDescr ) {
+                } else if ( object.getClass() == NotDescr.class ) {
                     // We cannot have declarations created inside a not visible outside it, so track no declarations so they can be removed
                     this.notDeclarations = new HashMap();
                     final Not not = new Not();
@@ -273,7 +281,7 @@
                     }
 
                     this.notDeclarations = null;
-                } else if ( object instanceof ExistsDescr ) {
+                } else if ( object.getClass() == ExistsDescr.class ) {
                     // We cannot have declarations created inside a not visible outside it, so track no declarations so they can be removed
                     this.notDeclarations = new HashMap();
                     final Exists exists = new Exists();
@@ -290,13 +298,16 @@
 
                     this.notDeclarations = null;
                     this.rule.addPattern( exists );
-                } else if ( object instanceof EvalDescr ) {
+                } else if ( object.getClass() == EvalDescr.class ) {
                     final EvalCondition eval = build( (EvalDescr) object );
                     if ( eval != null ) {
                         this.rule.addPattern( eval );
                     }
-                }
-            } else if ( object instanceof ColumnDescr ) {
+                } else if ( object.getClass() == FromDescr.class ) {
+                    final From from = build( (FromDescr) object);
+                    this.rule.addPattern( from );
+                }                
+            } else if ( object.getClass() == ColumnDescr.class ) {
                 final Column column = build( (ColumnDescr) object );
                 if ( column != null ) {
                     this.rule.addPattern( column );
@@ -321,7 +332,7 @@
         for ( final Iterator it = descr.getDescrs().iterator(); it.hasNext(); ) {
             final Object object = it.next();
             if ( object instanceof ConditionalElementDescr ) {
-                if ( object instanceof AndDescr ) {
+                if ( object.getClass() == AndDescr.class ) {
                     final And and = new And();
                     this.columnCounter.setParent( and );
                     build( rule,
@@ -330,7 +341,7 @@
                            false, // do not decrement offset
                            false ); // do not decrement first offset
                     ce.addChild( and );
-                } else if ( object instanceof OrDescr ) {
+                } else if ( object.getClass() == OrDescr.class ) {
                     final Or or = new Or();
                     this.columnCounter.setParent( or );
                     build( rule,
@@ -339,7 +350,7 @@
                            true, // when OR is used, offset MUST be decremented
                            false ); // do not decrement first offset
                     ce.addChild( or );
-                } else if ( object instanceof NotDescr ) {
+                } else if ( object.getClass() == NotDescr.class ) {
                     final Not not = new Not();
                     this.columnCounter.setParent( not );
                     build( rule,
@@ -348,7 +359,7 @@
                            true, // when NOT is used, offset MUST be decremented
                            true ); // when NOT is used, offset MUST be decremented for first column
                     ce.addChild( not );
-                } else if ( object instanceof ExistsDescr ) {
+                } else if ( object.getClass() == ExistsDescr.class ) {
                     final Exists exists = new Exists();
                     this.columnCounter.setParent( exists );
                     build( rule,
@@ -357,13 +368,16 @@
                            true, // when EXIST is used, offset MUST be decremented
                            true ); // when EXIST is used, offset MUST be decremented for first column
                     ce.addChild( exists );
-                } else if ( object instanceof EvalDescr ) {
+                } else if ( object.getClass() == EvalDescr.class ) {
                     final EvalCondition eval = build( (EvalDescr) object );
                     if ( eval != null ) {
                         ce.addChild( eval );
                     }
+                } else if ( object.getClass() == FromDescr.class ) {
+                    final From from = build( (FromDescr) object);
+                    this.rule.addPattern( from );                    
                 }
-            } else if ( object instanceof ColumnDescr ) {
+            } else if ( object.getClass() == ColumnDescr.class ) {
                 if ( decrementOffset && decrementFirst ) {
                     this.columnOffset--;
                 } else {
@@ -387,15 +401,15 @@
         }
 
         ObjectType objectType = null;
-                
-        FactTemplate factTemplate  = this.pkg.getFactTemplate( columnDescr.getObjectType() );
-        
-        if ( factTemplate != null ){
+
+        FactTemplate factTemplate = this.pkg.getFactTemplate( columnDescr.getObjectType() );
+
+        if ( factTemplate != null ) {
             objectType = new FactTemplateObjectType( factTemplate );
-        } else {            
+        } else {
             try {
                 //clazz = Class.forName( columnDescr.getObjectType() );
-                objectType = new ClassObjectType( this.typeResolver.resolveType( columnDescr.getObjectType() )) ;
+                objectType = new ClassObjectType( this.typeResolver.resolveType( columnDescr.getObjectType() ) );
             } catch ( final ClassNotFoundException e ) {
                 this.errors.add( new RuleError( this.rule,
                                                 columnDescr,
@@ -582,17 +596,17 @@
                                          RestrictionDescr restrictionDescr) {
         Restriction restriction = null;
         if ( restrictionDescr instanceof LiteralRestrictionDescr ) {
-            restriction = build( extractor,
-                                 fieldConstraintDescr,
-                                 (LiteralRestrictionDescr) restrictionDescr );
+            restriction = buildRestriction( extractor,
+                                            fieldConstraintDescr,
+                                            (LiteralRestrictionDescr) restrictionDescr );
         } else if ( restrictionDescr instanceof VariableRestrictionDescr ) {
-            restriction = build( extractor,
-                                 fieldConstraintDescr,
-                                 (VariableRestrictionDescr) restrictionDescr );
+            restriction = buildRestriction( extractor,
+                                            fieldConstraintDescr,
+                                            (VariableRestrictionDescr) restrictionDescr );
         } else if ( restrictionDescr instanceof ReturnValueRestrictionDescr ) {
-            restriction = build( extractor,
-                                 fieldConstraintDescr,
-                                 (ReturnValueRestrictionDescr) restrictionDescr );
+            restriction = buildRestriction( extractor,
+                                            fieldConstraintDescr,
+                                            (ReturnValueRestrictionDescr) restrictionDescr );
 
         }
 
@@ -630,9 +644,9 @@
         }
     }
 
-    private VariableRestriction build(final FieldExtractor extractor,
-                                      final FieldConstraintDescr fieldConstraintDescr,
-                                      final VariableRestrictionDescr variableRestrictionDescr) {
+    private VariableRestriction buildRestriction(final FieldExtractor extractor,
+                                                 final FieldConstraintDescr fieldConstraintDescr,
+                                                 final VariableRestrictionDescr variableRestrictionDescr) {
         if ( variableRestrictionDescr.getIdentifier() == null || variableRestrictionDescr.getIdentifier().equals( "" ) ) {
             this.errors.add( new RuleError( this.rule,
                                             variableRestrictionDescr,
@@ -662,9 +676,9 @@
                                         evaluator );
     }
 
-    private LiteralRestriction build(final FieldExtractor extractor,
-                                     final FieldConstraintDescr fieldConstraintDescr,
-                                     final LiteralRestrictionDescr literalRestrictionDescr) {
+    private LiteralRestriction buildRestriction(final FieldExtractor extractor,
+                                                final FieldConstraintDescr fieldConstraintDescr,
+                                                final LiteralRestrictionDescr literalRestrictionDescr) {
         FieldValue field = null;
         if ( literalRestrictionDescr.isStaticFieldValue() ) {
             final int lastDot = literalRestrictionDescr.getText().lastIndexOf( '.' );
@@ -709,9 +723,9 @@
                                        evaluator );
     }
 
-    private ReturnValueRestriction build(final FieldExtractor extractor,
-                                         final FieldConstraintDescr fieldConstraintDescr,
-                                         final ReturnValueRestrictionDescr returnValueRestrictionDescr) {
+    private ReturnValueRestriction buildRestriction(final FieldExtractor extractor,
+                                                    final FieldConstraintDescr fieldConstraintDescr,
+                                                    final ReturnValueRestrictionDescr returnValueRestrictionDescr) {
         final String classMethodName = "returnValue" + this.counter++;
         returnValueRestrictionDescr.setClassMethodName( classMethodName );
 
@@ -875,6 +889,29 @@
                                predicateDescr );
     }
 
+    private From build(FromDescr fromDescr) {
+        Column column = build( fromDescr.getReturnedColumn() );
+
+        DeclarativeInvokerDescr invokerDescr = fromDescr.getDataSource();
+
+        DataProvider dataProvider = null;
+        if ( invokerDescr.getClass() == FieldAccessDescr.class ) {
+            //FieldAccessDescr fieldAccessDescr = ( FieldAccessDescr ) invokerDescr;
+        } else if ( invokerDescr.getClass() == FunctionCallDescr.class ) {
+            //FunctionCallDescr functionCallDescr = ( FunctionCallDescr) invokerDescr;
+        } else if ( invokerDescr.getClass() == MethodAccessDescr.class ) {
+            MethodAccessDescr methodAccessDescr = (MethodAccessDescr) invokerDescr;
+            dataProvider = new MethodDataProvider( methodAccessDescr.getVariableName(),
+                                                   methodAccessDescr.getMethodName(),
+                                                   methodAccessDescr.getArguments(),
+                                                   this.declarations,
+                                                   this.pkg.getGlobals() );
+        }
+
+        return new From( column,
+                         dataProvider );
+    }
+
     private EvalCondition build(final EvalDescr evalDescr) {
 
         final String classMethodName = "eval" + this.counter++;
@@ -978,11 +1015,16 @@
                                      (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ),
                                      ruleDescr.getConsequence() );
 
+        // Must use the rule declarations, so we use the same order as used in the generated invoker
         final List list = Arrays.asList( this.rule.getDeclarations() );
 
         final int[] indexes = new int[declarations.length];
         for ( int i = 0, length = declarations.length; i < length; i++ ) {
             indexes[i] = list.indexOf( declarations[i] );
+            if ( indexes[i] == -1 ) {
+                // some defensive code, this should never happen
+                throw new RuntimeDroolsException( "Unable to find declaration in list while generating the consequence invoker" );                
+            }
         }
 
         st.setAttribute( "indexes",
@@ -1069,14 +1111,15 @@
                                              final ObjectType objectType,
                                              final String fieldName) {
         FieldExtractor extractor = null;
-        
+
         if ( objectType.getValueType() == ValueType.FACTTEMPLATE_TYPE ) {
             //@todo use extractor cache            
-            FactTemplate factTemplate = ( ( FactTemplateObjectType ) objectType ).getFactTemplate();
-            extractor = new FactTemplateFieldExtractor( factTemplate, factTemplate.getFieldTemplateIndex( fieldName ));
-        } else {        
+            FactTemplate factTemplate = ((FactTemplateObjectType) objectType).getFactTemplate();
+            extractor = new FactTemplateFieldExtractor( factTemplate,
+                                                        factTemplate.getFieldTemplateIndex( fieldName ) );
+        } else {
             try {
-                extractor = classFieldExtractorCache.getExtractor( ( ( ClassObjectType ) objectType ).getClassType(),
+                extractor = classFieldExtractorCache.getExtractor( ((ClassObjectType) objectType).getClassType(),
                                                                    fieldName );
             } catch ( final RuntimeDroolsException e ) {
                 this.errors.add( new RuleError( this.rule,

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/semantics/java/javaInvokers.stg	2006-08-16 18:06:31 UTC (rev 5919)
@@ -58,7 +58,7 @@
 
 public class <invokerClassName> implements org.drools.spi.ReturnValueExpression, org.drools.spi.CompiledInvoker
 {
-    private static final long serialVersionUID  = 7952983928232702826L;
+    private static final long serialVersionUID  = 320;
     
     public Object evaluate(org.drools.spi.Tuple tuple,
                             org.drools.rule.Declaration[] declarations, 
@@ -86,7 +86,7 @@
 
 public class <invokerClassName> implements org.drools.spi.PredicateExpression, org.drools.spi.CompiledInvoker
 {
-    private static final long serialVersionUID  = 7952983928232702826L;
+    private static final long serialVersionUID  = 320;
     
     public boolean evaluate(Object object,
     						org.drools.spi.Tuple tuple,
@@ -121,7 +121,7 @@
 
 public class <invokerClassName> implements org.drools.spi.EvalExpression, org.drools.spi.CompiledInvoker
 {
-    private static final long serialVersionUID  = 7952983928232702826L;
+    private static final long serialVersionUID  = 320;
     
     public boolean evaluate(org.drools.spi.Tuple tuple,
                             org.drools.rule.Declaration[] declarations, 
@@ -148,7 +148,7 @@
 
 public class <invokerClassName> implements org.drools.spi.Consequence
 {
-    private static final long serialVersionUID  = 7952983928232702826L;
+    private static final long serialVersionUID  = 320;
 
     public void evaluate(org.drools.spi.KnowledgeHelper knowledgeHelper,
                          org.drools.WorkingMemory workingMemory) throws Exception {    

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -27,17 +27,21 @@
      * 
      */
     private static final long serialVersionUID = 4654655548777389065L;
-    public final static int MAKING_CHEESE  = 0;
-    public final static int SELLING_CHEESE = 1;
+    public final static int   MAKING_CHEESE    = 0;
+    public final static int   SELLING_CHEESE   = 1;
 
-    private final List            cheeses        = new ArrayList();
+    private final List        cheeses          = new ArrayList();
 
-    private int             status;
+    private int               status;
 
     public List getCheeses() {
         return this.cheeses;
     }
 
+    public void addCheese(Cheese cheese) {
+        this.cheeses.add( cheese );
+    }
+    
     public void setStatus(final int status) {
         this.status = status;
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -599,7 +599,7 @@
                       and.getChildren() );
         final Column column = (Column) and.getChildren().get( 0 );
 
-        final LiteralConstraint literalConstarint = (LiteralConstraint) column.getConstraints().get( 0 );
+        final LiteralConstraint literalConstraint = (LiteralConstraint) column.getConstraints().get( 0 );
     }
 
     public void testNot() throws Exception {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-08-16 18:06:31 UTC (rev 5919)
@@ -790,6 +790,29 @@
                       list.size() );
     }
 
+    
+    public void testBasicFrom() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_From.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );   
+        
+        WorkingMemory  workingMemory = ruleBase.newWorkingMemory();
+        List list = new ArrayList();
+        workingMemory.setGlobal( "list", list );
+        
+        Cheesery cheesery = new Cheesery();
+        Cheese stilton = new Cheese( "stilton", 12);
+        cheesery.addCheese( stilton );
+        workingMemory.setGlobal( "cheesery", cheesery );
+        
+        workingMemory.fireAllRules();
+        
+        assertEquals( 1, list.size() );
+    }
+    
     public void testWithInvalidRule() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "invalid_rule.drl" ) ) );

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_From.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_From.drl	2006-08-16 16:37:30 UTC (rev 5918)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_From.drl	2006-08-16 18:06:31 UTC (rev 5919)
@@ -0,0 +1,18 @@
+package org.drools.test;
+ 
+#we don't use the import, as class is fully qualified below 
+#import org.drools.integrationtests.helloworld.Message
+import org.drools.Cheese;
+import org.drools.Cheesery;
+import java.util.List;
+
+global List list;
+global Cheesery cheesery;
+
+rule "test from"
+	when
+		$cheese : Cheese() from cheesery.getCheeses()		
+	then
+	    System.out.println( list );
+		list.add( $cheese );
+end




More information about the jboss-svn-commits mailing list