[jboss-svn-commits] JBL Code SVN: r18358 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: base/mvel and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 6 23:05:59 EST 2008


Author: mark.proctor at jboss.com
Date: 2008-02-06 23:05:59 -0500 (Wed, 06 Feb 2008)
New Revision: 18358

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/IntegrationException.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MVELDialectData.java
Log:
JBRULES-720 Clips Parser
-Refactored functions so all functions are now added by the PackageBuilder into the RuleBase
-All functions now live in the MAIN namespace and the factory is always retrieved from there.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/IntegrationException.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/IntegrationException.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/IntegrationException.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-public class IntegrationException extends CheckedDroolsException {
+public class IntegrationException extends RuntimeDroolsException {
     /**
      * 
      */

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -136,7 +136,7 @@
 
     Package getPackage(String name);
 
-    void addPackage(Package pkg) throws Exception;
+    void addPackage(Package pkg);
     
     /**
      * This locks the current RuleBase and all there referenced StatefulSessions. This should be 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -49,8 +49,10 @@
 
     static {
         //for handling dates as string literals
-        DataConversion.addConversionHandler( Date.class, new MVELDateCoercion() );
-        DataConversion.addConversionHandler( Calendar.class, new MVELCalendarCoercion() );
+        DataConversion.addConversionHandler( Date.class,
+                                             new MVELDateCoercion() );
+        DataConversion.addConversionHandler( Calendar.class,
+                                             new MVELCalendarCoercion() );
     }
 
     public DroolsMVELFactory(final Map previousDeclarations,
@@ -80,35 +82,35 @@
         }
     }
 
-//    public void writeExternal(final ObjectOutput stream) throws IOException {
-//        setNextFactory( null );
-//        stream.writeObject( this.previousDeclarations );
-//        stream.writeObject( this.localDeclarations );
-//        stream.writeObject( this.globals );
-//        stream.writeObject( this.variableResolvers );
-//    }
-//
-//    public void readExternal(final ObjectInput stream) throws IOException,
-//                                                      ClassNotFoundException {
-//        DroolsObjectInputStream droolsInputStream = (DroolsObjectInputStream) stream;
-//
-//        this.previousDeclarations = (Map) droolsInputStream.readObject();
-//        this.localDeclarations = (Map) droolsInputStream.readObject();
-//        this.globals = (Map) droolsInputStream.readObject();
-//        this.variableResolvers = (Map) droolsInputStream.readObject();
-//
-//        StaticMethodImportResolverFactory factory = new StaticMethodImportResolverFactory();
-//        setNextFactory( factory );
-//
-//        Package pkg = droolsInputStream.getPackage();
-//        ClassLoader classLoader = pkg.getPackageCompilationData().getClassLoader();
-//        for ( Iterator it = pkg.getStaticImports().iterator(); it.hasNext(); ) {
-//            String staticImportEntry = (String) it.next();
-//            addStaticImport( factory,
-//                             staticImportEntry,
-//                             classLoader );
-//        }
-//    }
+    //    public void writeExternal(final ObjectOutput stream) throws IOException {
+    //        setNextFactory( null );
+    //        stream.writeObject( this.previousDeclarations );
+    //        stream.writeObject( this.localDeclarations );
+    //        stream.writeObject( this.globals );
+    //        stream.writeObject( this.variableResolvers );
+    //    }
+    //
+    //    public void readExternal(final ObjectInput stream) throws IOException,
+    //                                                      ClassNotFoundException {
+    //        DroolsObjectInputStream droolsInputStream = (DroolsObjectInputStream) stream;
+    //
+    //        this.previousDeclarations = (Map) droolsInputStream.readObject();
+    //        this.localDeclarations = (Map) droolsInputStream.readObject();
+    //        this.globals = (Map) droolsInputStream.readObject();
+    //        this.variableResolvers = (Map) droolsInputStream.readObject();
+    //
+    //        StaticMethodImportResolverFactory factory = new StaticMethodImportResolverFactory();
+    //        setNextFactory( factory );
+    //
+    //        Package pkg = droolsInputStream.getPackage();
+    //        ClassLoader classLoader = pkg.getPackageCompilationData().getClassLoader();
+    //        for ( Iterator it = pkg.getStaticImports().iterator(); it.hasNext(); ) {
+    //            String staticImportEntry = (String) it.next();
+    //            addStaticImport( factory,
+    //                             staticImportEntry,
+    //                             classLoader );
+    //        }
+    //    }
 
     public static void addStaticImport(StaticMethodImportResolverFactory factory,
                                        String staticImportEntry,
@@ -162,7 +164,7 @@
                 this.localVariables = new HashMap();
             } else {
                 this.localVariables.clear();
-            }            
+            }
         } else {
             this.localVariables = variables;
         }
@@ -199,9 +201,9 @@
                          vr = new LocalVariableResolver( this,
                                                          name ) );
         }
-        
+
         vr.setValue( value );
-        return vr;        
+        return vr;
     }
 
     public VariableResolver createVariable(String name,
@@ -213,8 +215,8 @@
                          vr = new LocalVariableResolver( this,
                                                          name,
                                                          type ) );
-        }        
-        
+        }
+
         vr.setValue( value );
         return vr;
     }
@@ -243,7 +245,7 @@
                                                        (Class) this.globals.get( name ),
                                                        this ) );
             return true;
-        }  else if ( nextFactory != null ) {
+        } else if ( nextFactory != null ) {
             return nextFactory.isResolveable( name );
         }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -3,6 +3,8 @@
 import java.io.Serializable;
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalRuleBase;
+import org.drools.rule.MVELDialectData;
 import org.drools.spi.Consequence;
 import org.drools.spi.KnowledgeHelper;
 import org.mvel.compiler.CompiledExpression;
@@ -27,11 +29,16 @@
     public void evaluate(final KnowledgeHelper knowledgeHelper,
                          final WorkingMemory workingMemory) throws Exception {
         DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
+        
         factory.setContext( knowledgeHelper.getTuple(),
                             knowledgeHelper,
                             null,
                             workingMemory,
                             null );
+        
+        MVELDialectData data = ( MVELDialectData ) workingMemory.getRuleBase().getPackage( "MAIN" ).getDialectDatas().getDialectData( "mvel" );
+        factory.setNextFactory( data.getFunctionFactory() );
+        
         CompiledExpression compexpr = (CompiledExpression) this.expr;
 
         //Receive breakpoints from debugger

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -364,15 +364,8 @@
      *
      * @param pkg
      *            The package to add.
-     * @throws PackageIntegrationException
-     *
-     * @throws RuleIntegrationException
-     *             if an error prevents complete construction of the network for
-     *             the <code>Rule</code>.
-     * @throws FactException
-     * @throws InvalidPatternException
      */
-    public synchronized void addPackage(final Package newPkg) throws PackageIntegrationException {
+    public synchronized void addPackage(final Package newPkg) {
         newPkg.checkValidity();
         synchronized ( this.pkgs ) {
             final Package pkg = (Package) this.pkgs.get( newPkg.getName() );
@@ -448,7 +441,7 @@
      * and the actual Rule objects into the package).
      */
     private void mergePackage(final Package pkg,
-                              final Package newPkg) throws PackageIntegrationException {
+                              final Package newPkg) {
         final Map globals = pkg.getGlobals();
         final Map<String, ImportDeclaration> imports = pkg.getImports();
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -83,19 +83,12 @@
         this.dialects.put( dialect, dialectData );
     }
     
+    public void setDialectData(String name, DialectData data) {
+        this.dialects.put( name, data );
+    }
+    
     public DialectData getDialectData(String dialect) {
-        DialectData data = this.dialects.get( dialect );
-        if ( data == null ) {
-          if ( "java".equals( dialect ) ) {
-              data = new JavaDialectData( this );    
-          } else if ( "mvel".equals( dialect )) {
-              data = new MVELDialectData( this );
-          } else {
-              throw new RuntimeException("DialectData " + dialect + " does not exist." );
-          }
-          this.dialects.put( dialect, data );
-        } 
-        return data;
+        return this.dialects.get( dialect );
     }
     
     public DialectData removeRule(final Package pkg, final Rule rule) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MVELDialectData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MVELDialectData.java	2008-02-07 04:04:39 UTC (rev 18357)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MVELDialectData.java	2008-02-07 04:05:59 UTC (rev 18358)
@@ -10,26 +10,38 @@
 public class MVELDialectData implements DialectData, Serializable {
     private MapFunctionResolverFactory functionFactory;
     
+    /**
+     * Default constructor - for Externalizable. This should never be used by a user, as it
+     * will result in an invalid state for the instance.
+     */
+    public MVELDialectData() {
+
+    }
+    
     public MVELDialectData(final DialectDatas datas) {
         this.functionFactory = new MapFunctionResolverFactory( );
     }
     
-    public void addFunction(String name, Function function) {
-        this.functionFactory.createVariable( name, function );
+    public MapFunctionResolverFactory getFunctionFactory() {
+        return this.functionFactory;
     }
-
-    public boolean isDirty() {
-        return false;
+    
+    public void removeRule(Package pkg,
+                           Rule rule) {
     }
-
+    
+    public void addFunction(Function function) {
+        this.functionFactory.addFunction( function );
+    }
+    
     public void removeFunction(Package pkg,
                                org.drools.rule.Function function) {
-        // TODO Auto-generated method stub
+        this.functionFactory.removeFunction( function.getName() );
         
-    }
+    }    
 
-    public void removeRule(Package pkg,
-                           Rule rule) {        
+    public boolean isDirty() {
+        return false;
     }
 
     public void merge(DialectData newData) {        
@@ -49,6 +61,11 @@
             this.variables.put( function.getName(), function );
         }
         
+        public void removeFunction(String functionName) {
+            this.variables.remove( functionName );
+            this.variableResolvers.remove( functionName );
+        }
+        
         public VariableResolver createVariable(String name,
                                                Object value) {
             throw new RuntimeException( "variable is a read-only function pointer" );




More information about the jboss-svn-commits mailing list