[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