[jboss-svn-commits] JBL Code SVN: r13207 - in labs/jbossrules/trunk/drools-core: src/main/java/org/drools/common and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jul 7 08:15:50 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-07 08:15:50 -0400 (Sat, 07 Jul 2007)
New Revision: 13207
Modified:
labs/jbossrules/trunk/drools-core/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
Log:
-now works with non DroolsObjectInputStream serialization.
Property changes on: labs/jbossrules/trunk/drools-core
___________________________________________________________________
Name: svn:ignore
-
target
.classpath
.project
.wtpmodules
+ target
.metadata
.settings
.wtpmodules
*.log
*.log.*
*.ipr
*.iws
*.iml
nbproject
local
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 2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-07-07 12:15:50 UTC (rev 13207)
@@ -173,21 +173,27 @@
public void doReadExternal(final ObjectInput stream,
final Object[] objects) throws IOException,
ClassNotFoundException {
- // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
- DroolsObjectInputStream parentStream = (DroolsObjectInputStream) stream;
- parentStream.setRuleBase( this );
- this.pkgs = (Map) parentStream.readObject();
+ // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
+ this.pkgs = (Map) stream.readObject();
- this.packageClassLoader = new CompositePackageClassLoader( parentStream.getClassLoader() );
+ if ( stream instanceof DroolsObjectInputStream ) {
+ DroolsObjectInputStream parentStream = (DroolsObjectInputStream) stream;
+ parentStream.setRuleBase( this );
+ this.packageClassLoader = new CompositePackageClassLoader( parentStream.getClassLoader() );
+ this.classLoader = new MapBackedClassLoader( parentStream.getClassLoader() );
+ } else {
+ this.packageClassLoader = new CompositePackageClassLoader( Thread.currentThread().getContextClassLoader() );
+ this.classLoader = new MapBackedClassLoader( Thread.currentThread().getContextClassLoader() );
+ }
+
+ this.packageClassLoader.addClassLoader( this.classLoader );
+
for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
this.packageClassLoader.addClassLoader( ((Package) it.next()).getPackageCompilationData().getClassLoader() );
- }
+ }
- this.classLoader = new MapBackedClassLoader( parentStream.getClassLoader() );
- this.packageClassLoader.addClassLoader( this.classLoader );
-
// Return the rules stored as a byte[]
- final byte[] bytes = (byte[]) parentStream.readObject();
+ final byte[] bytes = (byte[]) stream.readObject();
// Use a custom ObjectInputStream that can resolve against a given classLoader
final DroolsObjectInputStream childStream = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2007-07-07 12:15:50 UTC (rev 13207)
@@ -92,10 +92,6 @@
this.ruleBase = ruleBase;
}
- public void setRuleBase(InternalRuleBase ruleBase) {
- this.ruleBase = ruleBase;
- }
-
private void readObject(ObjectInputStream stream) throws IOException,
ClassNotFoundException {
stream.defaultReadObject();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2007-07-07 12:15:50 UTC (rev 13207)
@@ -97,14 +97,6 @@
this.ruleBase = ((DroolsObjectInputStream) stream).getRuleBase();
}
- /**
- * Allow this to be settable, otherwise we get infinite recursion on serialisation
- * @param ruleBase
- */
- void setRete(final Rete rete) {
-
- }
-
// ------------------------------------------------------------
// Instance methods
// ------------------------------------------------------------
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-07-07 12:15:50 UTC (rev 13207)
@@ -155,8 +155,6 @@
this.rete = (Rete) objects[0];
this.reteooBuilder = (ReteooBuilder) objects[1];
-
- this.reteooBuilder.setRete( this.rete );
}
// ------------------------------------------------------------
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 2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2007-07-07 12:15:50 UTC (rev 13207)
@@ -126,7 +126,7 @@
this.globals = Collections.EMPTY_MAP;
this.factTemplates = Collections.EMPTY_MAP;
this.functions = Collections.EMPTY_LIST;
-
+
// This classloader test should only be here for unit testing, too much legacy api to want to change by hand at the moment
if ( parentClassLoader == null ) {
parentClassLoader = Thread.currentThread().getContextClassLoader();
@@ -149,7 +149,7 @@
stream.writeObject( this.staticImports );
stream.writeObject( this.globals );
stream.writeObject( this.ruleFlows );
-
+
// Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
// a byte[]
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -173,13 +173,13 @@
this.staticImports = (List) stream.readObject();
this.globals = (Map) stream.readObject();
this.ruleFlows = (Map) stream.readObject();
-
+
// Return the rules stored as a byte[]
final byte[] bytes = (byte[]) stream.readObject();
// Use a custom ObjectInputStream that can resolve against a given classLoader
final DroolsObjectInputStream streamWithLoader = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
- this.packageCompilationData.getClassLoader() );
+ this.packageCompilationData.getClassLoader() );
this.rules = (Map) streamWithLoader.readObject();
}
@@ -289,17 +289,18 @@
rule );
rule.setLoadOrder( this.rules.size() );
}
-
+
/**
* Add a rule flow to this package.
*/
public void addRuleFlow(Process process) {
- if (this.ruleFlows == Collections.EMPTY_MAP) {
+ if ( this.ruleFlows == Collections.EMPTY_MAP ) {
this.ruleFlows = new HashMap();
}
- this.ruleFlows.put(process.getId(), process );
+ this.ruleFlows.put( process.getId(),
+ process );
}
-
+
/**
* Get the rule flows for this package. The key is the ruleflow id.
* It will be Collections.EMPTY_MAP if none have been added.
@@ -307,18 +308,16 @@
public Map getRuleFlows() {
return this.ruleFlows;
}
-
-
+
/**
* Rule flows can be removed by ID.
*/
public void removeRuleFlow(String id) {
- if (!this.ruleFlows.containsKey( id )) {
- throw new IllegalArgumentException("The rule flow with id [" + id + "] is not part of this package.");
+ if ( !this.ruleFlows.containsKey( id ) ) {
+ throw new IllegalArgumentException( "The rule flow with id [" + id + "] is not part of this package." );
}
this.ruleFlows.remove( id );
}
-
public void removeRule(final Rule rule) {
this.rules.remove( rule.getName() );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-07-07 12:15:50 UTC (rev 13207)
@@ -125,8 +125,12 @@
*/
public void readExternal(final ObjectInput stream) throws IOException,
ClassNotFoundException {
- DroolsObjectInputStream droolsStream = ( DroolsObjectInputStream ) stream;
- initClassLoader( droolsStream.getClassLoader() );
+ if ( stream instanceof DroolsObjectInputStream ) {
+ DroolsObjectInputStream droolsStream = ( DroolsObjectInputStream ) stream;
+ initClassLoader( droolsStream.getClassLoader() );
+ } else {
+ initClassLoader( Thread.currentThread().getContextClassLoader() );
+ }
this.store = (Map) stream.readObject();
this.AST = stream.readObject();
More information about the jboss-svn-commits
mailing list