[jboss-svn-commits] JBL Code SVN: r19529 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/common and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 11 12:21:38 EDT 2008
Author: mingjin
Date: 2008-04-11 12:21:38 -0400 (Fri, 11 Apr 2008)
New Revision: 19529
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBaseSerializationTest.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/DialectData.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MVELDialectData.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
Log:
JBRULES-1557 DynamicRulesTest.testDynamicFunction Fails under JDK 1.6
- AbstractRuleBase: add function to package during package merging.
- DialectData: added setDirty(boolean)
- JavaDialectData: implemented setDirty(..)
- MVELDialectData: implemented setDirty(..)
- Package: set corresponding DialectData dirty after adding a function
- LargeRuleBaseSerializationTest: reduced # of rules to 525 to avoid stack overflow
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBaseSerializationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBaseSerializationTest.java 2008-04-11 15:59:47 UTC (rev 19528)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBaseSerializationTest.java 2008-04-11 16:21:38 UTC (rev 19529)
@@ -18,7 +18,7 @@
* Settings | File Templates.
*/
public class LargeRuleBaseSerializationTest extends TestCase {
- private static final int RULE_COUNT = Integer.parseInt(System.getProperty("test.count", "1000"));
+ private static final int RULE_COUNT = Integer.parseInt(System.getProperty("test.count", "525"));
private static final int ITERATIONS = Integer.parseInt(System.getProperty("test.iterations", "5"));
private static RuleBase ruleBase;
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-04-11 15:59:47 UTC (rev 19528)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-04-11 16:21:38 UTC (rev 19529)
@@ -86,7 +86,7 @@
/** The fact handle factory. */
protected FactHandleFactory factHandleFactory;
- protected Map globals;
+ protected Map<String, Class> globals;
private ReloadPackageCompilationData reloadPackageCompilationData = null;
@@ -429,28 +429,27 @@
this.packageClassLoader.addClassLoader( newPkg.getDialectDatas().getClassLoader() );
}
- mergePackage( pkg,
- newPkg );
+ final Map<String, Class> newGlobals = newPkg.getGlobals();
- final Map newGlobals = newPkg.getGlobals();
-
if (newGlobals != null) {
// Check that the global data is valid, we cannot change the type
// of an already declared global variable
- for ( final Iterator it = newGlobals.keySet().iterator(); it.hasNext(); ) {
- final String identifier = (String) it.next();
- final Class type = (Class) newGlobals.get( identifier );
- final boolean f = this.globals.containsKey( identifier );
- if ( f ) {
- final boolean y = !this.globals.get( identifier ).equals( type );
- if ( f && y ) {
+ for ( final Map.Entry<String, Class> entry : newGlobals.entrySet() ) {
+ final String identifier = entry.getKey();
+ final Class type = entry.getValue();
+ if ( this.globals.containsKey( identifier ) &&
+ !this.globals.get( identifier ).equals( type )) {
throw new PackageIntegrationException( pkg );
- }
+ } else {
+ this.globals.put(identifier,
+ type);
}
}
- this.globals.putAll( newGlobals );
}
+ mergePackage( pkg,
+ newPkg );
+
if (newPkg.getTypeDeclarations() != null) {
// Add type declarations
for ( TypeDeclaration type : newPkg.getTypeDeclarations().values() ) {
@@ -472,8 +471,8 @@
//and now the rule flows
if ( newPkg.getRuleFlows() != null ) {
final Map flows = newPkg.getRuleFlows();
- for ( final Iterator iter = flows.entrySet().iterator(); iter.hasNext(); ) {
- final Entry flow = (Entry) iter.next();
+ for ( final Object object : newPkg.getRuleFlows().entrySet() ) {
+ final Entry flow = (Entry) object;
this.processes.put( flow.getKey(),
flow.getValue() );
}
@@ -497,22 +496,14 @@
*/
private void mergePackage(final Package pkg,
final Package newPkg) {
- final Map globals = pkg.getGlobals();
final Map<String, ImportDeclaration> imports = pkg.getImports();
// Merge imports
imports.putAll( newPkg.getImports() );
if (newPkg.getGlobals() != null) {
+ final Map globals = pkg.getGlobals();
// Add globals
- for ( final Iterator it = newPkg.getGlobals().keySet().iterator(); it.hasNext(); ) {
- final String identifier = (String) it.next();
- final Class type = (Class) globals.get( identifier );
- if ( globals.containsKey( identifier ) && !globals.get( identifier ).equals( type ) ) {
- throw new PackageIntegrationException( "Unable to merge new Package",
- newPkg );
- }
- }
if (globals == Collections.EMPTY_MAP) {
for (Object object : newPkg.getGlobals().entrySet()) {
Map.Entry entry = (Map.Entry)object;
@@ -564,9 +555,8 @@
pkg.getDialectDatas().merge( newPkg.getDialectDatas() );
if ( newPkg.getFunctions() != null) {
- for (Object object : newPkg.getFunctions().entrySet()) {
- Map.Entry entry = (Map.Entry)object;
- pkg.addFunction((Function)entry.getValue());
+ for (Map.Entry<String, Function> entry : newPkg.getFunctions().entrySet()) {
+ pkg.addFunction(entry.getValue());
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectData.java 2008-04-11 15:59:47 UTC (rev 19528)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectData.java 2008-04-11 16:21:38 UTC (rev 19529)
@@ -9,6 +9,8 @@
public boolean isDirty();
+ public void setDirty(boolean dirty);
+
public void reload();
public DialectData clone();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java 2008-04-11 15:59:47 UTC (rev 19528)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java 2008-04-11 16:21:38 UTC (rev 19529)
@@ -106,6 +106,10 @@
return this.dirty;
}
+ public void setDirty(boolean dirty) {
+ this.dirty = dirty;
+ }
+
/**
* Handles the write serialization of the PackageCompilationData. Patterns in Rules may reference generated data which cannot be serialized by
* default methods. The PackageCompilationData holds a reference to the generated bytecode. The generated bytecode must be restored before any Rules.
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-04-11 15:59:47 UTC (rev 19528)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MVELDialectData.java 2008-04-11 16:21:38 UTC (rev 19529)
@@ -56,7 +56,10 @@
return false;
}
- public void merge(DialectData newData) {
+ public void setDirty(boolean dirty) {
+ }
+
+ public void merge(DialectData newData) {
}
public void reload() {
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 2008-04-11 15:59:47 UTC (rev 19528)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2008-04-11 16:21:38 UTC (rev 19529)
@@ -72,7 +72,7 @@
private Set staticImports;
- private Map globals;
+ private Map<String, Class> globals;
private Map factTemplates;
@@ -201,7 +201,7 @@
this.functions = (Map<String, Function>) in.readObject();
this.factTemplates = (Map) in.readObject();
this.ruleFlows = (Map) in.readObject();
- this.globals = (Map) in.readObject();
+ this.globals = (Map<String, Class>) in.readObject();
this.valid = in.readBoolean();
this.rules = (Map) in.readObject();
@@ -270,6 +270,7 @@
this.functions.put( function.getName(),
function );
+ dialectDatas.getDialectData(function.getDialect()).setDirty(true);
}
public Map<String, Function> getFunctions() {
@@ -287,7 +288,7 @@
public void addGlobal(final String identifier,
final Class clazz) {
if ( this.globals == Collections.EMPTY_MAP ) {
- this.globals = new HashMap( 1 );
+ this.globals = new HashMap<String, Class>( 1 );
}
this.globals.put( identifier,
clazz );
@@ -297,7 +298,7 @@
this.globals.remove( identifier );
}
- public Map getGlobals() {
+ public Map<String, Class> getGlobals() {
return this.globals;
}
More information about the jboss-svn-commits
mailing list