[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