[jboss-svn-commits] JBL Code SVN: r6046 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: rule spi

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 31 12:53:45 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-08-31 12:53:42 -0400 (Thu, 31 Aug 2006)
New Revision: 6046

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FunctionResolver.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/TypeResolver.java
Log:
JBRULES-468 import functions from static methods

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2006-08-31 16:53:31 UTC (rev 6045)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2006-08-31 16:53:42 UTC (rev 6046)
@@ -69,16 +69,18 @@
     private Map                    rules;
 
     private List                   imports;
+    
+    private List                   functions;
 
+    private List                   functionImports;
+
     private Map                    globals;
-    
+
     private Map                    factTemplates;
 
     // @todo: add attributes to Package
     //private Map                   attributes;
 
-    private TypeResolver           typeResolver;
-
     private PackageCompilationData packageCompilationData;
 
     /** This is to indicate the the package has no errors during the compilation/building phase */
@@ -120,9 +122,11 @@
                    final ClassLoader parentClassLoader) {
         this.name = name;
         this.imports = new ArrayList( 1 );
+        this.functionImports = Collections.EMPTY_LIST;
         this.rules = new LinkedHashMap();
         this.globals = Collections.EMPTY_MAP;
         this.factTemplates = Collections.EMPTY_MAP;
+        this.functions = Collections.EMPTY_LIST;
         this.packageCompilationData = new PackageCompilationData( parentClassLoader );
     }
 
@@ -135,6 +139,7 @@
         stream.writeObject( this.packageCompilationData );
         stream.writeObject( this.name );
         stream.writeObject( this.imports );
+        stream.writeObject( this.functionImports );
         stream.writeObject( this.globals );
 
         // Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
@@ -157,6 +162,7 @@
         this.packageCompilationData = (PackageCompilationData) stream.readObject();
         this.name = (String) stream.readObject();
         this.imports = (List) stream.readObject();
+        this.functionImports = (List) stream.readObject();
         this.globals = (Map) stream.readObject();
 
         // Return the rules stored as a byte[]
@@ -215,6 +221,33 @@
         return this.imports;
     }
 
+    public void addFunctionImport(final String functionImport) {
+        if ( this.functionImports == Collections.EMPTY_LIST ) {
+            this.functionImports = new ArrayList( 1 );
+        }
+        this.functionImports.add( functionImport );
+    }
+    
+    public void addFunction(String functionName) {
+        if ( this.functions == Collections.EMPTY_LIST ) {
+            this.functions = new ArrayList( 1 );
+        }
+        
+        this.functions.add( functionName );
+    }    
+    
+    public List getFunctions() {
+        return this.functions;
+    }
+
+    public void removeFunctionImport(final String functionImport) {
+        this.functionImports.remove( functionImport );
+    }
+
+    public List getFunctionImports() {
+        return this.functionImports;
+    }
+
     public void addGlobal(final String identifier,
                           final Class clazz) {
         if ( this.globals == Collections.EMPTY_MAP ) {
@@ -233,18 +266,20 @@
     }
 
     public void removeFunction(final String functionName) {
+        this.functions.remove( functionName );
         this.packageCompilationData.remove( this.name + "." + ucFirst( functionName ) );
     }
-    
+
     public FactTemplate getFactTemplate(final String name) {
-        return ( FactTemplate )  this.factTemplates.get( name );
+        return (FactTemplate) this.factTemplates.get( name );
     }
-    
+
     public void addFactTemplate(FactTemplate factTemplate) {
         if ( this.factTemplates == Collections.EMPTY_MAP ) {
             this.factTemplates = new HashMap( 1 );
         }
-        this.factTemplates.put( factTemplate.getName(), factTemplate );
+        this.factTemplates.put( factTemplate.getName(),
+                                factTemplate );
     }
 
     /**
@@ -329,14 +364,6 @@
         return (Rule[]) this.rules.values().toArray( new Rule[this.rules.size()] );
     }
 
-    public void setTypeSolver(final TypeResolver typeResolver) {
-        this.typeResolver = typeResolver;
-    }
-
-    public TypeResolver getTypeResolver() {
-        return this.typeResolver;
-    }
-
     public PackageCompilationData getPackageCompilationData() {
         return this.packageCompilationData;
     }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FunctionResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FunctionResolver.java	2006-08-31 16:53:31 UTC (rev 6045)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FunctionResolver.java	2006-08-31 16:53:42 UTC (rev 6046)
@@ -0,0 +1,11 @@
+package org.drools.spi;
+
+import java.util.List;
+
+public interface FunctionResolver {
+    public List getFunctionImports();
+
+    public void addFunctionImport(String functionImport);
+
+    public String resolveFunction(String functionName, int numberOfArgs);
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/TypeResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/TypeResolver.java	2006-08-31 16:53:31 UTC (rev 6045)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/TypeResolver.java	2006-08-31 16:53:42 UTC (rev 6046)
@@ -19,27 +19,10 @@
 import java.util.List;
 
 public interface TypeResolver {
+    public List getImports();
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.drools.semantics.base.Importer#getImports( Class clazz )
-     */
-    public abstract List getImports();
+    public void addImport(String importEntry);
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.drools.semantics.base.Importer#addImports(org.drools.spi.ImportEntry)
-     */
-    public abstract void addImport(String importEntry);
+    public Class resolveType(String className) throws ClassNotFoundException;
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.drools.semantics.base.Importer#importClass(java.lang.ClassLoader,
-     *      java.lang.String)
-     */
-    public abstract Class resolveType(String className) throws ClassNotFoundException;
-
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list