[jboss-svn-commits] JBL Code SVN: r12699 - in labs/jbossrules/trunk/drools-compiler: src/main/java/org/drools/brms/server/rules and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 19 23:29:36 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-06-19 23:29:36 -0400 (Tue, 19 Jun 2007)
New Revision: 12699

Modified:
   labs/jbossrules/trunk/drools-compiler/.classpath
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.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/MiscTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/not_with_bindings_rule_test.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl
Log:
-refactor for more robust classloading

Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/.classpath	2007-06-20 03:29:36 UTC (rev 12699)
@@ -8,9 +8,9 @@
   <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
   <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta25/mvel14-1.2beta25.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta26/mvel14-1.2beta26.jar"/>
   <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.1.v_677_R32x/core-3.2.1.v_677_R32x.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
   <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
   <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
   <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -45,27 +45,32 @@
 
     private final SuggestionCompletionEngineBuilder builder = new SuggestionCompletionEngineBuilder();
     private final DrlParser                         parser  = new DrlParser();
-    private final ByteArrayClassLoader        loader;
-    protected List                            errors = new ArrayList();
-    private ClassLoader existingLoader;
+    private final ByteArrayClassLoader              loader;
+    protected List                                  errors  = new ArrayList();
+    // iterating over the import list
+    final ClassTypeResolver resolver;
 
     /**
      * This uses the current classes classloader as a base,
      * and jars can be added.
      */
     public SuggestionCompletionLoader() {
-        this.loader = new ByteArrayClassLoader( this.getClass().getClassLoader() );
-
+        this(null);
     }
 
     /**
      * This allows a pre existing classloader to be used (and preferred)
      * for resolving types.
      */
-    public SuggestionCompletionLoader(
-                                      ClassLoader classLoader) {
-        this();
-        this.existingLoader = classLoader;
+    public SuggestionCompletionLoader(ClassLoader classLoader) {
+        if ( classLoader == null ) {
+            classLoader = Thread.currentThread().getContextClassLoader();
+            if ( classLoader == null ) {
+                classLoader = this.getClass().getClassLoader();
+            }
+        }
+        this.loader = new ByteArrayClassLoader( classLoader );
+        this.resolver = new ClassTypeResolver(new ArrayList(), this.loader);
     }
 
     /**
@@ -177,7 +182,7 @@
                 final String shortTypeName = global.getType();
                 if ( !this.builder.hasFieldsForType( shortTypeName ) ) {
                     final Class clazz = loadClass( global.getType(),
-                                             jars );
+                                                   jars );
                     loadClassFields( clazz,
                                      shortTypeName );
 
@@ -186,7 +191,7 @@
                 }
 
                 this.builder.addGlobalType( global.getIdentifier(),
-                                       shortTypeName );
+                                            shortTypeName );
             } catch ( final IOException e ) {
                 this.errors.add( "Error while inspecting class for global: " + global.getType() + " error message: " + e.getMessage() );
             }
@@ -199,16 +204,13 @@
      */
     private void populateModelInfo(final PackageDescr pkgDescr,
                                    final List jars) {
-
-        // iterating over the import list
-        final ClassTypeResolver resolver = new ClassTypeResolver();
         for ( final Iterator it = pkgDescr.getImports().iterator(); it.hasNext(); ) {
             final ImportDescr imp = (ImportDescr) it.next();
-            final String classname = imp.getTarget();
-            resolver.addImport( classname );
+            final String className = imp.getTarget();
+            resolver.addImport( className );
 
-            final Class clazz = loadClass( classname,
-                                     jars );
+            final Class clazz = loadClass(className, jars);
+            
             if ( clazz != null ) {
                 try {
                     final String shortTypeName = getShortNameOfClass( clazz.getName() );
@@ -216,7 +218,7 @@
                                      shortTypeName );
                     this.builder.addFactType( shortTypeName );
                 } catch ( final IOException e ) {
-                    this.errors.add( "Error while inspecting the class: " + classname + ". The error was: " + e.getMessage() );
+                    this.errors.add( "Error while inspecting the class: " + className + ". The error was: " + e.getMessage() );
                 }
             }
         }
@@ -240,7 +242,7 @@
 
             final String[] fields = new String[templ.getFields().size()];
             this.builder.addFieldsForType( factType,
-                                      fields );
+                                           fields );
 
             int index = 0;
             for ( final Iterator fieldsIt = templ.getFields().iterator(); fieldsIt.hasNext(); ) {
@@ -255,10 +257,26 @@
                     this.errors.add( "Fact template field type not found: " + fieldType );
                 }
                 this.builder.addFieldType( factType + "." + fieldDescr.getName(),
-                                      getFieldType( fieldTypeClass ) );
+                                           getFieldType( fieldTypeClass ) );
             }
         }
     }
+    
+    private Class loadClass(String className,
+                            List jars) {
+        Class clazz = null;
+        try {
+            clazz = resolver.resolveType( className );
+        } catch ( ClassNotFoundException e1 ) {
+            try {
+                addJars( jars );
+                clazz = resolver.resolveType( className );
+            } catch ( Exception e) {
+                this.errors.add( "Class not found: " + className );
+            }
+        }
+        return clazz;
+    }    
 
     private void loadClassFields(final Class clazz,
                                  final String shortTypeName) throws IOException {
@@ -271,12 +289,12 @@
         fields = removeIrrelevantFields( fields );
 
         this.builder.addFieldsForType( shortTypeName,
-                                  fields );
+                                       fields );
         for ( int i = 0; i < fields.length; i++ ) {
             final Class type = (Class) inspector.getFieldTypes().get( fields[i] );
             final String fieldType = getFieldType( type );
             this.builder.addFieldType( shortTypeName + "." + fields[i],
-                                  fieldType );
+                                       fieldType );
         }
     }
 
@@ -302,39 +320,6 @@
     }
 
     /**
-     * @param pkg
-     * @param classname
-     * @param clazz
-     * @return
-     */
-    private Class loadClass(final String classname,
-                            final List jars) {
-        Class clazz = null;
-        try {
-            // check if it is already in the classpath
-            if (this.existingLoader != null) {
-                clazz = this.existingLoader.loadClass( classname );
-            } else {
-                clazz = this.loader.loadClass( classname );
-            }
-
-        } catch ( final ClassNotFoundException e1 ) {
-
-            // not found in the classpath, so check if it
-            // is in a package model
-            try {
-                addJars( jars );
-                clazz = this.loader.loadClass( classname );
-            } catch ( final IOException e ) {
-                throw new IllegalStateException( e.getMessage() );
-            } catch ( final ClassNotFoundException e ) {
-                this.errors.add( "Class not found: " + classname );
-            }
-        }
-        return clazz;
-    }
-
-    /**
      * This will add the given jars to the classloader.
      */
     private void addJars(final List jars) throws IOException {
@@ -352,7 +337,7 @@
                                    len );
                     }
                     this.loader.addResource( entry.getName(),
-                                        out.toByteArray() );
+                                             out.toByteArray() );
                 }
             }
 

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	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -120,12 +120,12 @@
         
         if ( this.pkg != null ) {
             this.typeResolver = new ClassTypeResolver( this.pkg.getImports(),
-                                                       this.pkg.getPackageCompilationData().getClassLoader() );
+                                                       this.configuration.getClassLoader() );
             // make an automatic import for the current package
             this.typeResolver.addImport( this.pkg.getName() + ".*" );            
         } else {
             this.typeResolver = new ClassTypeResolver( new ArrayList(),
-                                                       Thread.currentThread().getContextClassLoader() );
+                                                       this.configuration.getClassLoader() );
         }
 
         this.dialects = configuration.buildDialectRegistry( this );
@@ -295,7 +295,7 @@
 
     private Package newPackage(final PackageDescr packageDescr) {
         final Package pkg = new Package( packageDescr.getName(),
-                                         Thread.currentThread().getContextClassLoader() );       
+                                         this.configuration.getClassLoader() );       
 
         this.dialect.init( pkg );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -53,7 +53,7 @@
 
     private int                  compiler;
 
-//    private ClassLoader          classLoader;
+    private ClassLoader          classLoader;
 
     private String               languageLevel;
 
@@ -84,11 +84,6 @@
               null );
     }
 
-//    public PackageBuilderConfiguration(ClassLoader classLoader) {
-//        init( classLoader,
-//              null );
-//    }
-
     private void init(ClassLoader classLoader,
                       Properties properties) {
         if ( classLoader == null ) {
@@ -96,11 +91,10 @@
             if ( classLoader == null ) {
                 classLoader = this.getClass().getClassLoader();
             }
-            //setClassLoader( classLoader );
         }
-        //setClassLoader( classLoader );
+        setClassLoader( classLoader );
 
-        this.chainedProperties = new ChainedProperties( Thread.currentThread().getContextClassLoader(),
+        this.chainedProperties = new ChainedProperties( this.classLoader,
                                                         "packagebuilder.conf" );
 
         if ( properties != null ) {
@@ -182,17 +176,17 @@
         }
     }
 
-//    public ClassLoader getClassLoader() {
-//        return this.classLoader;
-//    }
-//
-//    /** Use this to override the classloader that will be used for the rules. */
-//    public void setClassLoader(final ClassLoader classLoader) {
-//        if ( classLoader != null ) {
-//            this.classLoader = classLoader;
-//        }
-//    }
+    public ClassLoader getClassLoader() {
+        return this.classLoader;
+    }
 
+    /** Use this to override the classloader that will be used for the rules. */
+    public void setClassLoader(final ClassLoader classLoader) {
+        if ( classLoader != null ) {
+            this.classLoader = classLoader;
+        }
+    }
+
     /**
      * This will attempt to read the System property to work out what default to set.
      * This should only be done once when the class is loaded. After that point, you will have

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -68,6 +68,7 @@
         final XStream stream = new XStream();
         stream.setMode( XStream.ID_REFERENCES );
 
+        
         final ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
         final ClassLoader newLoader = this.getClass().getClassLoader();
         try {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/QueryBuilder.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -27,8 +27,8 @@
                                              0, // offset is 0 by default
                                              objectType,
                                              null );
-        
-        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( DroolsQuery.class, "name" );        
+        ClassLoader classloader = context.getPkg().getPackageCompilationData().getClassLoader();
+        final FieldExtractor extractor = context.getDialect().getClassFieldExtractorCache().getExtractor(  DroolsQuery.class, "name",  classloader );        
 
         final FieldValue field = FieldFactory.getFieldValue( queryDescr.getName(),
                                                              ValueType.STRING_TYPE );
@@ -41,7 +41,6 @@
 
         Extractor arrayExtractor = null;
         try {
-            ClassLoader classloader = context.getPkg().getPackageCompilationData().getClassLoader();
             arrayExtractor = context.getDialect().getClassFieldExtractorCache().getExtractor( ((ClassObjectType) objectType).getClassType(),
                                                                                               "arguments",
                                                                                               classloader );

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -80,7 +80,7 @@
 
     private DialectRegistry          dialectRegistry;
 
-    private Dialect                   dialect;
+    private Dialect                  dialect;
 
     /**
      * Default constructor
@@ -113,22 +113,22 @@
                        ruleDescr.getAttributes() );
 
         this.dialectRegistry = dialectRegistry;
-        this.dialect = ( this.rule.getDialect() != null ) ? this.dialectRegistry.getDialect( this.rule.getDialect() ) : defaultDialect;
-        
+        this.dialect = (this.rule.getDialect() != null) ? this.dialectRegistry.getDialect( this.rule.getDialect() ) : defaultDialect;
+
         getDialect().init( ruleDescr );
     }
 
     public Dialect getDialect() {
         return dialect;
     }
-    
+
     /**
      * Allows the change of the current dialect in the context
      */
-    public void setDialect( Dialect dialect ) {
+    public void setDialect(Dialect dialect) {
         this.dialect = dialect;
     }
-    
+
     public Dialect getDialect(String dialectName) {
         return (Dialect) this.dialectRegistry.getDialect( dialectName );
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixer.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -23,10 +23,10 @@
 import org.mvel.MacroProcessor;
 
 public class KnowledgeHelperFixer {
-    private static final MacroProcessor macroProcessor;
+    private static final Map macros;
     
     static {
-        Map macros = new HashMap(5);
+        macros = new HashMap(5);
         
         macros.put( "insert",
                     new Macro() {
@@ -68,16 +68,16 @@
                         public String doMacro() {
                             return "drools.retract";
                         }
-                    } );  
-        macroProcessor = new MacroProcessor();
-        macroProcessor.setMacros(macros);        
+                    } );          
     }
 
     public String fix(final String raw) {
         if  ( raw == null || "".equals( raw.trim() )) {
             return raw;
         }
-               
+        
+        MacroProcessor macroProcessor = new MacroProcessor();
+        macroProcessor.setMacros( macros );
         return macroProcessor.parse( raw );
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -6,12 +6,14 @@
 
 import org.drools.FactHandle;
 import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
 import org.drools.base.mvel.DroolsMVELPreviousDeclarationVariable;
 import org.drools.base.mvel.MVELConsequence;
 import org.drools.compiler.RuleError;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.builder.ConsequenceBuilder;
 import org.drools.rule.builder.RuleBuildContext;
+import org.drools.spi.KnowledgeHelper;
 import org.mvel.ASTNode;
 import org.mvel.MVEL;
 import org.mvel.Macro;
@@ -27,21 +29,21 @@
     //private final Interceptor assertInterceptor;
     //private final Interceptor modifyInterceptor;
     private final Map         interceptors;
-    private final Map         macros;
+    private final Map macros;
 
     public MVELConsequenceBuilder() {
         this.interceptors = new HashMap(1);
         this.interceptors.put( "Modify", new ModifyInterceptor() );
-//        this.assertInterceptor = new AssertInterceptor();
-//        this.modifyInterceptor = new ModifyInterceptor();
-        this.macros = new HashMap(1);
-//        macros.put( "assert",
-//                    new Macro() {
-//                        public String doMacro() {
-//                            return "@Modify with";
-//                        }
-//                    } );   
+
+         macros = new HashMap(4);
         
+        macros.put( "insert",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.insert";
+                        }
+                    } ); 
+        
         macros.put( "modify",
                     new Macro() {
                         public String doMacro() {
@@ -49,7 +51,19 @@
                         }
                     } );
         
-     
+        macros.put( "update",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.update";
+                        }
+                    } );
+        
+        macros.put( "retract",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.retract";
+                        }
+                    } );             
     }
 
     public void build(final RuleBuildContext context) {
@@ -62,9 +76,10 @@
                                                                      context.getPkg().getGlobals() );
             factory.setNextFactory( ((MVELDialect) context.getDialect()).getClassImportResolverFactory() );
 
+            MacroProcessor macroProcessor = new MacroProcessor();
+            macroProcessor.setMacros( macros );
             
-            
-            final Serializable expr = MVEL.compileExpression( new MacroProcessor(delimitExpressions( (String) context.getRuleDescr().getConsequence() )).parse(this.macros),
+            final Serializable expr = MVEL.compileExpression( macroProcessor.parse( delimitExpressions( (String) context.getRuleDescr().getConsequence() )),
                                                               ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses(), this.interceptors );
 
             context.getRule().setConsequence( new MVELConsequence( expr,
@@ -153,16 +168,19 @@
                             VariableResolverFactory factory) {
             Object object = ((WithNode) node). getNestedStatement().getValue( null,
                                                                               factory );
-            FactHandle handle = ((DroolsMVELFactory) factory).getWorkingMemory().getFactHandle( object );
-            ((DroolsMVELFactory) factory).getWorkingMemory().modifyRetract( handle, null, null );
+            
+            DroolsMVELKnowledgeHelper resolver = ( DroolsMVELKnowledgeHelper ) factory.getVariableResolver( "drools" );
+            KnowledgeHelper helper = ( KnowledgeHelper ) resolver.getValue();
+            helper.modifyRetract( object );
             return 0;
         }
 
         public int doAfter(Object value,
                            ASTNode node,
                            VariableResolverFactory factory) {
-            FactHandle handle = ((DroolsMVELFactory) factory).getWorkingMemory().getFactHandle( value );            
-            ((DroolsMVELFactory) factory).getWorkingMemory().modifyInsert( handle, value, null, null );
+            DroolsMVELKnowledgeHelper resolver = ( DroolsMVELKnowledgeHelper ) factory.getVariableResolver( "drools" );
+            KnowledgeHelper helper = ( KnowledgeHelper ) resolver.getValue();
+            helper.modifyInsert( value );
             return 0;
         }
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -177,7 +177,7 @@
                                                          index + 1 );
 
         try {
-            Class cls = Thread.currentThread().getContextClassLoader().loadClass( className );
+            Class cls = configuration.getClassLoader().loadClass( className );
             Method[] methods = cls.getDeclaredMethods();
             for ( int i = 0; i < methods.length; i++ ) {
                 if ( methods[i].equals( "methodName" ) ) {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/XmlPackageReader.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -127,10 +127,10 @@
 
         this.handlers.put( "and-restriction-connective",
                            new RestrictionConnectiveHandler( this ) );
-        
+
         this.handlers.put( "or-restriction-connective",
-                           new RestrictionConnectiveHandler( this) );
-        
+                           new RestrictionConnectiveHandler( this ) );
+
         this.handlers.put( "and",
                            new AndHandler( this ) );
         this.handlers.put( "or",
@@ -157,7 +157,7 @@
                            new ReturnValueRestrictionHandler( this ) );
         this.handlers.put( "field-binding",
                            new FieldBindingHandler( this ) );
-        
+
         initEntityResolver();
     }
 
@@ -263,7 +263,8 @@
             throw new RuntimeException( "parser must be namespace-aware" );
         }
 
-        localParser.parse( in, this );
+        localParser.parse( in,
+                           this );
 
         return this.packageDescr;
     }
@@ -340,9 +341,13 @@
             return;
         }
 
-        validate( uri,  localName, handler );
+        validate( uri,
+                  localName,
+                  handler );
 
-        final Object node = handler.start( uri, localName, attrs );
+        final Object node = handler.start( uri,
+                                           localName,
+                                           attrs );
 
         if ( node != null ) {
             this.parents.add( node );
@@ -377,7 +382,8 @@
 
         this.current = getParent( handler.generateNodeFor() );
 
-        final Object node = handler.end( uri, localName );
+        final Object node = handler.end( uri,
+                                         localName );
 
         // next
         if ( node != null && !this.lastWasEndElement ) {
@@ -427,7 +433,7 @@
                 }
             }
             if ( !validParent ) {
-                 throw new SAXParseException( "<" + localName + "> has an invalid parent element [" + parent + "]",
+                throw new SAXParseException( "<" + localName + "> has an invalid parent element [" + parent + "]",
                                              getLocator() );
             }
         }
@@ -651,7 +657,6 @@
         }
 
         // Try looking in META-INF
-
         {
             final InputStream is = cl.getResourceAsStream( "META-INF/" + xsd );
             if ( is != null ) {

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	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -46,6 +46,7 @@
 import org.drools.WorkingMemory;
 import org.drools.base.DefaultKnowledgeHelper;
 import org.drools.common.ActivationGroupNode;
+import org.drools.common.DroolsObjectInputStream;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.LogicalDependency;
 import org.drools.common.RuleFlowGroupNode;
@@ -268,7 +269,7 @@
 
     private Object serializeIn(final byte[] bytes) throws IOException,
                                                   ClassNotFoundException {
-        final ObjectInput in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
+        final ObjectInput in = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ) );
         final Object obj = in.readObject();
         in.close();
         return obj;
@@ -1185,7 +1186,7 @@
         ObjectOutputStream out = new ObjectOutputStream(data);
         out.writeObject( pkg );
         
-        ObjectInputStream objIn = new ObjectInputStream(new ByteArrayInputStream(data.toByteArray()));
+        ObjectInputStream objIn = new DroolsObjectInputStream(new ByteArrayInputStream(data.toByteArray()));
         Package pkg2 = (Package) objIn.readObject();
         assertNotNull(pkg2);
         

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -62,6 +62,7 @@
 import org.drools.WorkingMemory;
 import org.drools.Cheesery.Maturity;
 import org.drools.common.AbstractWorkingMemory;
+import org.drools.common.DroolsObjectInputStream;
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
@@ -1583,7 +1584,7 @@
 
     protected Object serializeIn(final byte[] bytes) throws IOException,
                                                     ClassNotFoundException {
-        final ObjectInput in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
+        final ObjectInput in = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ) );
         final Object obj = in.readObject();
         in.close();
         return obj;

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/AccumulateTemplateTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -42,7 +42,8 @@
                                                                        new PatternExtractor( new ClassObjectType( Cheese.class ) ),
                                                                        null ), new Declaration( "price",
                                                                                                 ClassFieldExtractorCache.getExtractor( Cheese.class,
-                                                                                                                                       "price" ),
+                                                                                                                                       "price",
+                                                                                                                                       getClass().getClassLoader() ),
                                                                                                 null )};
         final String[] globals = new String[]{"aGlobal", "anotherGlobal"};
         final List globalTypes = Arrays.asList( new String[]{"String", "String"} );
@@ -110,16 +111,19 @@
         final String[] declarationTypes = new String[]{"String", "int"};
         final Declaration[] declarations = new Declaration[]{new Declaration( "name",
                                                                               ClassFieldExtractorCache.getExtractor( Person.class,
-                                                                                                                                 "name" ),
+                                                                                                                     "name",
+                                                                                                                     getClass().getClassLoader() ),
                                                                               null ), new Declaration( "age",
                                                                                                        ClassFieldExtractorCache.getExtractor( Person.class,
-                                                                                                                                                          "age" ),
+                                                                                                                                              "age",
+                                                                                                                                              getClass().getClassLoader() ),
                                                                                                        null )};
         final Declaration[] inner = new Declaration[]{new Declaration( "cheese",
                                                                        new PatternExtractor( new ClassObjectType( Cheese.class ) ),
                                                                        null ), new Declaration( "price",
                                                                                                 ClassFieldExtractorCache.getExtractor( Cheese.class,
-                                                                                                                                                   "price" ),
+                                                                                                                                       "price",
+                                                                                                                                       getClass().getClassLoader() ),
                                                                                                 null )};
         final String[] globals = new String[]{"aGlobal", "anotherGlobal"};
         final List globalTypes = Arrays.asList( new String[]{"String", "String"} );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/KnowledgeHelperFixerTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -26,113 +26,140 @@
 
     public void testAdd__Handle__Simple() {
         String result = KnowledgeHelperFixerTest.fixer.fix( "update(myObject );" );
-        assertEquals( "drools.update( myObject );",
-                      result );
+        assertEqualsIgnoreWhitespace( "drools.update(myObject );",
+                                      result );
 
         result = KnowledgeHelperFixerTest.fixer.fix( "update ( myObject );" );
-        assertEquals( "drools.update( myObject );",
-                      result );
+        assertEqualsIgnoreWhitespace( "drools.update( myObject );",
+                                      result );
     }
 
     public void testAdd__Handle__withNewLines() {
-        final String result = KnowledgeHelperFixerTest.fixer.fix( "\n\t\n\tupdate(myObject );" );
-        assertEquals( "\n\t\n\tdrools.update( myObject );",
-                      result );
+        final String result = KnowledgeHelperFixerTest.fixer.fix( "\n\t\n\tupdate( myObject );" );
+        assertEqualsIgnoreWhitespace( "\n\t\n\tdrools.update( myObject );",
+                                      result );
     }
 
     public void testAdd__Handle__rComplex() {
-        String result = KnowledgeHelperFixerTest.fixer.fix( "something update(myObject ); other" );
-        assertEquals( "something drools.update( myObject ); other",
-                      result );
+        String result = KnowledgeHelperFixerTest.fixer.fix( "something update( myObject); other" );
+        assertEqualsIgnoreWhitespace( "something drools.update( myObject); other",
+                                      result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "something update (myObject );" );
-        assertEquals( "something drools.update( myObject );",
-                      result );
+        result = KnowledgeHelperFixerTest.fixer.fix( "something update ( myObject );" );
+        assertEqualsIgnoreWhitespace( "something drools.update( myObject );",
+                                      result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( " update(myObject ); x" );
-        assertEquals( " drools.update( myObject ); x",
-                      result );
+        result = KnowledgeHelperFixerTest.fixer.fix( " update( myObject ); x" );
+        assertEqualsIgnoreWhitespace( " drools.update( myObject ); x",
+                                      result );
 
         //should not touch, as it is not a stand alone word
         result = KnowledgeHelperFixerTest.fixer.fix( "xxupdate(myObject ) x" );
-        assertEquals( "xxupdate(myObject ) x",
-                      result );
+        assertEqualsIgnoreWhitespace( "xxupdate(myObject ) x",
+                                      result );
     }
 
     public void testMultipleMatches() {
         String result = KnowledgeHelperFixerTest.fixer.fix( "update(myObject); update(myObject );" );
-        assertEquals( "drools.update( myObject ); drools.update( myObject );",
-                      result );
+        assertEqualsIgnoreWhitespace( "drools.update(myObject); drools.update(myObject );",
+                                      result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "xxx update(myObject ); update(myObject ); update(yourObject ); yyy" );
-        assertEquals( "xxx drools.update( myObject ); drools.update( myObject ); drools.update( yourObject ); yyy",
-                      result );
+        result = KnowledgeHelperFixerTest.fixer.fix( "xxx update(myObject ); update( myObject ); update( yourObject ); yyy" );
+        assertEqualsIgnoreWhitespace( "xxx drools.update(myObject ); drools.update( myObject ); drools.update( yourObject ); yyy",
+                                      result );
 
     }
 
-    public void testAssert() {
-        final String raw = "some code; insert(new String(\"foo\"));\n More();";
-        final String result = "some code; drools.insert(new String(\"foo\"));\n More();";
-        assertEquals( result,
-                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
+    public void testAssert1() {
+        final String raw = "insert( foo );";
+        final String result = "drools.insert( foo );";
+        assertEqualsIgnoreWhitespace( result,
+                                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
     }
 
+    public void testAssert2() {
+        final String raw = "some code; insert( new String(\"foo\") );\n More();";
+        final String result = "some code; drools.insert( new String(\"foo\") );\n More();";
+        assertEqualsIgnoreWhitespace( result,
+                                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
+    }
+
     public void testAssertLogical() {
         final String raw = "some code; insertLogical(new String(\"foo\"));\n More();";
         final String result = "some code; drools.insertLogical(new String(\"foo\"));\n More();";
-        assertEquals( result,
-                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
+        assertEqualsIgnoreWhitespace( result,
+                                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
     }
 
+    public void testModifyRetractModifyInsert() {
+        final String raw = "some code; insert( bar ); modifyRetract( foo );\n More(); retract( bar ); modifyInsert( foo );";
+        final String result = "some code; drools.insert( bar ); drools.modifyRetract( foo );\n More(); drools.retract( bar ); drools.modifyInsert( foo );";
+        assertEqualsIgnoreWhitespace( result,
+                                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
+    }
+
     public void testAllActionsMushedTogether() {
         String result = KnowledgeHelperFixerTest.fixer.fix( "insert(myObject ); update(ourObject);\t retract(herObject);" );
-        assertEquals( "drools.insert(myObject ); drools.update( ourObject );\t drools.retract( herObject );",
-                      result );
+        assertEqualsIgnoreWhitespace( "drools.insert(myObject ); drools.update(ourObject);\t drools.retract(herObject);",
+                                      result );
 
-        result = KnowledgeHelperFixerTest.fixer.fix( "insert(myObject ); update(ourObject);\t retract(herObject);\ninsert(myObject); update(ourObject);\t retract(herObject);" );
-        assertEquals( "drools.insert(myObject ); drools.update( ourObject );\t drools.retract( herObject);\ndrools.insert(myObject); drools.update( ourObject );\t drools.retract( herObject );",
-                      result );
+        result = KnowledgeHelperFixerTest.fixer.fix( "insert( myObject ); update(ourObject);\t retract(herObject  );\ninsert(  myObject ); update(ourObject);\t retract(  herObject  );" );
+        assertEqualsIgnoreWhitespace( "drools.insert( myObject ); drools.update(ourObject);\t drools.retract(herObject  );\ndrools.insert(  myObject ); drools.update(ourObject);\t drools.retract(  herObject  );",
+                                      result );
     }
 
     public void testLeaveLargeAlone() {
         final String original = "yeah yeah yeah minsert( xxx ) this is a long() thing Person (name=='drools') modify a thing";
         final String result = KnowledgeHelperFixerTest.fixer.fix( original );
-        assertEquals( original,
-                      result );
+        assertEqualsIgnoreWhitespace( original,
+                                      result );
     }
 
     public void testWithNull() {
         final String original = null;
         final String result = KnowledgeHelperFixerTest.fixer.fix( original );
-        assertEquals( original,
-                      result );
+        assertEqualsIgnoreWhitespace( original,
+                                      result );
     }
 
     public void testLeaveAssertAlone() {
         final String original = "drools.insert(foo)";
-        assertEquals( original,
-                      KnowledgeHelperFixerTest.fixer.fix( original ) );
+        assertEqualsIgnoreWhitespace( original,
+                                      KnowledgeHelperFixerTest.fixer.fix( original ) );
     }
 
     public void testLeaveAssertLogicalAlone() {
         final String original = "drools.insertLogical(foo)";
-        assertEquals( original,
-                      KnowledgeHelperFixerTest.fixer.fix( original ) );
+        assertEqualsIgnoreWhitespace( original,
+                                      KnowledgeHelperFixerTest.fixer.fix( original ) );
     }
 
     public void testWackyAssert() {
         final String raw = "System.out.println($person1.getName() + \" and \" + $person2.getName() +\" are sisters\");\n" + "insert($person1.getName(\"foo\") + \" and \" + $person2.getName() +\" are sisters\"); yeah();";
         final String expected = "System.out.println($person1.getName() + \" and \" + $person2.getName() +\" are sisters\");\n" + "drools.insert($person1.getName(\"foo\") + \" and \" + $person2.getName() +\" are sisters\"); yeah();";
 
-        assertEquals( expected,
-                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
-
+        assertEqualsIgnoreWhitespace( expected,
+                                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
     }
 
     public void testMoreAssertCraziness() {
         final String raw = "foobar(); (insert(new String(\"blah\").get()); bangBangYudoHono();)";
-        assertEquals( "foobar(); (drools.insert(new String(\"blah\").get()); bangBangYudoHono();)",
-                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
+        assertEqualsIgnoreWhitespace( "foobar(); (drools.insert(new String(\"blah\").get()); bangBangYudoHono();)",
+                                      KnowledgeHelperFixerTest.fixer.fix( raw ) );
     }
 
+    private void assertEqualsIgnoreWhitespace(final String expected,
+                                              final String actual) {
+        if ( expected == null || actual == null ) {
+            assertEquals(expected, actual);
+            return;
+        }
+        final String cleanExpected = expected.replaceAll( "\\s+",
+                                                          "" );
+        final String cleanActual = actual.replaceAll( "\\s+",
+                                                      "" );
+
+        assertEquals( cleanExpected,
+                      cleanActual );
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -37,7 +37,7 @@
     public void testSimpleExpression() throws Exception {
         final Package pkg = new Package( "pkg1" );
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
-        ruleDescr.setConsequence( "cheese.setPrice( 5 );" );
+        ruleDescr.setConsequence( "modify (cheese) {price = 5 }; retract (cheese)" );
 
         MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
         DialectRegistry registry = new DialectRegistry();
@@ -91,6 +91,10 @@
         assertEquals( 5,
                       cheddar.getPrice() );
     }
+    
+    public void testKnowledgeHelper() {
+        
+    }
 
     /**
      * Just like MVEL command line, we can allow expressions to span lines, with optional ";"

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -50,7 +50,8 @@
 
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
         
-        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class, "price" );
+        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class, "price",
+                                                                                getClass().getClassLoader() );
         
         final Pattern pattern = new Pattern( 0,
                                              new ClassObjectType( int.class ) );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -52,7 +52,8 @@
                                                                                mvelDialect );
         
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
-        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class, "price" );
+        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class, "price",
+                                                                                getClass().getClassLoader() );
         
         final Pattern patternA = new Pattern( 0,
                                               new ClassObjectType( int.class ) );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java	2007-06-20 03:29:36 UTC (rev 12699)
@@ -56,7 +56,8 @@
                                                                                mvelDialect );
         
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
-        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class, "price" );
+        final FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( Cheese.class, "price",
+                                                                                getClass().getClassLoader() );
         
         final Pattern patternA = new Pattern( 0,
                                               new ClassObjectType( int.class ) );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/not_with_bindings_rule_test.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/not_with_bindings_rule_test.drl	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/not_with_bindings_rule_test.drl	2007-06-20 03:29:36 UTC (rev 12699)
@@ -13,7 +13,6 @@
         $person : Person( $likes:likes )
         not Cheese( type == $likes )
     then
-        //System.out.println( "help" );    
 		list.add( $person );
 end    
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl	2007-06-20 03:29:36 UTC (rev 12699)
@@ -3,8 +3,9 @@
 import org.drools.Person;
 import org.drools.Cheese;
 import org.drools.Cheesery;
+import java.util.List
 
-global java.util.List list
+global List list
 
 rule "match Person 1"
 	salience 10
@@ -17,9 +18,11 @@
 
 rule "match Person 2"
 	agenda-group "xxx"	
+	salience ($age2 - $age1)
     when
        $person : Person(name=="mark", $age1 : age )
-       Cheesery( cheeses contains $person )                
+       cheesery : Cheesery( cheeses contains $person )     
+       cheeses : List() from cheesery.getCheeses()           
        Person( age < ( $age1 ) )
        Person( $age2 : age -> ( $age1 == $age2 ) )      
        eval( $age1 == $age2 )

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl	2007-06-20 03:29:19 UTC (rev 12698)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/waltz/waltz.drl	2007-06-20 03:29:36 UTC (rev 12699)
@@ -59,8 +59,9 @@
         $stage: Stage ( value == Stage.DUPLICATE )
         not ( Line() )
 	then
+	    modifyRetract( $stage );
         $stage.setValue ( Stage.DETECT_JUNCTIONS );
-        update($stage);
+        modifyInsert( $stage );
     	//sysout.println("reversing done");
 end
 




More information about the jboss-svn-commits mailing list