[jboss-svn-commits] JBL Code SVN: r19120 - in labs/jbossrules/branches/fixing_bad_merge: 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
Wed Mar 19 10:54:15 EDT 2008
Author: mingjin
Date: 2008-03-19 10:54:15 -0400 (Wed, 19 Mar 2008)
New Revision: 19120
Modified:
labs/jbossrules/branches/fixing_bad_merge/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java
labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/DialectDatas.java
labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/Package.java
labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
Log:
JBRULES-1488 fixed bad merge
- all tests in compiler should pass now.
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java 2008-03-19 14:40:17 UTC (rev 19119)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java 2008-03-19 14:54:15 UTC (rev 19120)
@@ -37,7 +37,7 @@
import org.drools.rule.Rule;
public class MarshallingTest extends TestCase {
-
+
public void testSerializable() throws Exception {
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
@@ -436,7 +436,7 @@
/*
* Here I am inserting data points which are not used by any rule (e.g Person).
* Later adding rule (e.g. Rule: 'match Person') for those data points.
- *
+ *
* Result: Pkg/Rule addition is failing with ClassCastException
*/
public void testSerializeAdd2() throws Exception {
@@ -445,7 +445,7 @@
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_0.drl" ) ) );
- Package pkg = serialisePackage( builder.getPackage() );
+ Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
List results = new ArrayList();
@@ -469,18 +469,18 @@
results.get( 0 ) );
// serialize session and rulebase out
- byte[] serializedSession = serializeOut( session );
- byte[] serializedRulebase = serializeOut( ruleBase );
+ byte[] serializedSession = SerializationHelper.serializeOut( session );
+ byte[] serializedRulebase = SerializationHelper.serializeOut( ruleBase );
session.dispose();
// now deserialize the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
// dynamically add a new package
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic3_0.drl" ) ) );
- pkg = serialisePackage( builder.getPackage() );
+ pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton",
@@ -504,8 +504,8 @@
serializedSession = null;
serializedRulebase = null;
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
// dispose session
session.dispose();
@@ -516,8 +516,8 @@
* Here I am inserting data points(e.g. Cheese) with 'stilton' / 'brie' as type value.
* Initially I had only 1 rule ('like stilton') for data points(e.g. Cheese) having type as 'stilton'.
*
- * Later added new rule ('like brie') for data points(e.g. Cheese) having type as 'brie'.
- *
+ * Later added new rule ('like brie') for data points(e.g. Cheese) having type as 'brie'.
+ *
* Result: new rule is not getting fired for new data points having type as 'brie'.
* Only for old data points having type as 'brie' the new rule got fired.
*/
@@ -526,7 +526,7 @@
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_0.drl" ) ) );
- Package pkg = serialisePackage( builder.getPackage() );
+ Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
List results = new ArrayList();
@@ -540,8 +540,8 @@
10 ) );
session.fireAllRules();
- byte[] serializedSession = serializeOut( session );
- byte[] serializedRulebase = serializeOut( ruleBase );
+ byte[] serializedSession = SerializationHelper.serializeOut( session );
+ byte[] serializedRulebase = SerializationHelper.serializeOut( ruleBase );
session.dispose();
@@ -551,15 +551,15 @@
results.get( 0 ) );
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_1.drl" ) ) );
- pkg = serialisePackage( builder.getPackage() );
+ pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
-
+
InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton",
20 ) );
InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie",
@@ -581,23 +581,23 @@
serializedSession = null;
serializedRulebase = null;
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
session.dispose();
}
/*
- * Works Fine if both the scenarios mentioned above are skipped.
+ * Works Fine if both the scenarios mentioned above are skipped.
*/
public void testSerializeAdd3() throws Exception {
//Create a rulebase, a session, and test it
RuleBase ruleBase = RuleBaseFactory.newRuleBase( );
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_0.drl" ) ) );
- Package pkg = serialisePackage( builder.getPackage() );
+ Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
-
+
List results = new ArrayList();
StatefulSession session = ruleBase.newStatefulSession();
session.setGlobal( "results",
@@ -609,8 +609,8 @@
10 ) );
session.fireAllRules();
- byte[] serializedSession = serializeOut( session );
- byte[] serializedRulebase = serializeOut( ruleBase );
+ byte[] serializedSession = SerializationHelper.serializeOut( session );
+ byte[] serializedRulebase = SerializationHelper.serializeOut( ruleBase );
session.dispose();
@@ -620,22 +620,22 @@
results.get( 0 ) );
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
-
+
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic3_0.drl" ) ) );
- pkg = serialisePackage( builder.getPackage() );
-
+ pkg = SerializationHelper.serializeObject( builder.getPackage() );
+
ruleBase.addPackage( pkg );
-
+
InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton", 20 ) );
InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie", 20 ) );
InternalFactHandle bob1 = (InternalFactHandle) session.insert( new Person( "bob", 20 ) );
InternalFactHandle bob2 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
-
+
assertEquals( 4,
results.size() );
assertEquals( stilton2.getObject(),
@@ -647,31 +647,31 @@
serializedSession = null;
serializedRulebase = null;
-
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
-
+
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
+
session.dispose();
-
+
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
-
+
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_2.drl" ) ) );
- pkg = serialisePackage( builder.getPackage() );
+ pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
-
+
InternalFactHandle stilton3 = (InternalFactHandle) session.insert( new Cheese( "stilton", 40 ) );
InternalFactHandle brie3 = (InternalFactHandle) session.insert( new Cheese( "brie", 40 ) );
InternalFactHandle bob3 = (InternalFactHandle) session.insert( new Person( "bob", 40 ) );
InternalFactHandle bob4 = (InternalFactHandle) session.insert( new Person( "bob", 40 ) );
InternalFactHandle addr1 = (InternalFactHandle) session.insert( new Address( "bangalore" ) );
InternalFactHandle addr2 = (InternalFactHandle) session.insert( new Address( "India" ) );
-
+
session.fireAllRules();
-
+
assertEquals( 9,
results.size() );
assertEquals( stilton3.getObject(),
@@ -687,26 +687,26 @@
serializedSession = null;
serializedRulebase = null;
-
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
-
+
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
+
session.dispose();
-
+
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
-
+
InternalFactHandle stilton4 = (InternalFactHandle) session.insert( new Cheese( "stilton", 50 ) );
InternalFactHandle brie4 = (InternalFactHandle) session.insert( new Cheese( "brie", 50 ) );
InternalFactHandle bob5 = (InternalFactHandle) session.insert( new Person( "bob", 50 ) );
InternalFactHandle bob6 = (InternalFactHandle) session.insert( new Person( "bob", 50 ) );
InternalFactHandle addr3 = (InternalFactHandle) session.insert( new Address( "Tripura" ) );
InternalFactHandle addr4 = (InternalFactHandle) session.insert( new Address( "Agartala" ) );
-
+
session.fireAllRules();
-
+
assertEquals( 14,
results.size() );
assertEquals( stilton4.getObject(),
@@ -722,22 +722,22 @@
serializedSession = null;
serializedRulebase = null;
-
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
-
+
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
+
session.dispose();
-
+
}
-
+
/*
* I have tried both the scenarios
* 1. Remove a rule from a pkg.
* 2. Remove a pkg
- *
+ *
* But both cases after inserting associated data points (i.e data points which are used to fire/activate the removed rule)
* session.fireAllRules() is throwing NoClassDefFoundError
- *
+ *
*/
public void testSerializeAddRemove_NoClassDefFoundError() throws Exception {
@@ -745,9 +745,9 @@
RuleBase ruleBase = RuleBaseFactory.newRuleBase( );
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_0.drl" ) ) );
- Package pkg = serialisePackage( builder.getPackage() );
+ Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
-
+
List results = new ArrayList();
StatefulSession session = ruleBase.newStatefulSession();
session.setGlobal( "results",
@@ -759,8 +759,8 @@
10 ) );
session.fireAllRules();
- byte[] serializedSession = serializeOut( session );
- byte[] serializedRulebase = serializeOut( ruleBase );
+ byte[] serializedSession = SerializationHelper.serializeOut( session );
+ byte[] serializedRulebase = SerializationHelper.serializeOut( ruleBase );
session.dispose();
@@ -770,22 +770,22 @@
results.get( 0 ) );
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
-
+
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic3_0.drl" ) ) );
- pkg = serialisePackage( builder.getPackage() );
-
+ pkg = SerializationHelper.serializeObject( builder.getPackage() );
+
ruleBase.addPackage( pkg );
-
+
InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton", 20 ) );
InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie", 20 ) );
InternalFactHandle bob1 = (InternalFactHandle) session.insert( new Person( "bob", 20 ) );
InternalFactHandle bob2 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
-
+
assertEquals( 4,
results.size() );
assertEquals( stilton2.getObject(),
@@ -797,26 +797,26 @@
serializedSession = null;
serializedRulebase = null;
-
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
-
+
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
+
session.dispose();
-
+
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
-
+
// CASE 1: remove rule
ruleBase.removeRule("org.drools.test", "like stilton");
-
+
InternalFactHandle stilton3 = (InternalFactHandle) session.insert( new Cheese( "stilton", 20 ) );
InternalFactHandle brie3 = (InternalFactHandle) session.insert( new Cheese( "brie", 20 ) );
InternalFactHandle bob3 = (InternalFactHandle) session.insert( new Person( "bob", 20 ) );
InternalFactHandle bob4 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
-
+
assertEquals( 6,
results.size() );
assertEquals( bob4.getObject(),
@@ -826,36 +826,36 @@
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) serializeIn( serializedRulebase );
+ ruleBase = (RuleBase) SerializationHelper.serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
results = (List) session.getGlobal( "results" );
-
+
// CASE 2: remove pkg
ruleBase.removePackage("org.drools.test");
-
+
InternalFactHandle stilton4 = (InternalFactHandle) session.insert( new Cheese( "stilton", 20 ) );
InternalFactHandle brie4 = (InternalFactHandle) session.insert( new Cheese( "brie", 20 ) );
InternalFactHandle bob5 = (InternalFactHandle) session.insert( new Person( "bob", 20 ) );
InternalFactHandle bob6 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
-
+
assertEquals( 6,
results.size() );
assertEquals( bob6.getObject(),
results.get( 4 ) );
assertEquals( bob5.getObject(),
results.get( 5 ) );
-
+
serializedSession = null;
serializedRulebase = null;
-
- serializedSession = serializeOut( session );
- serializedRulebase = serializeOut( ruleBase );
-
+
+ serializedSession = SerializationHelper.serializeOut( session );
+ serializedRulebase = SerializationHelper.serializeOut( ruleBase );
+
session.dispose();
-
+
}
-
+
/**
* In this case we are dealing with facts which are not on the systems classpath.
*
@@ -915,33 +915,4 @@
config );
}
- protected Package serialisePackage(Package pkg) {
- try {
- byte[] bytes = serializeOut( pkg );
- return (Package) serializeIn( bytes );
- } catch ( Exception e ) {
- throw new RuntimeException( "trouble serialising package.",
- e );
- }
- }
-
- protected Object serializeIn(final byte[] bytes) throws IOException,
- ClassNotFoundException {
- final ObjectInput in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
- final Object obj = in.readObject();
- in.close();
- return obj;
- }
-
- protected byte[] serializeOut(final Object obj) throws IOException {
- // Serialize to a byte array
- final ByteArrayOutputStream bos = new ByteArrayOutputStream();
- final ObjectOutput out = new ObjectOutputStream( bos );
- out.writeObject( obj );
- out.close();
-
- // Get the bytes of the serialized object
- final byte[] bytes = bos.toByteArray();
- return bytes;
- }
}
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2008-03-19 14:40:17 UTC (rev 19119)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2008-03-19 14:54:15 UTC (rev 19120)
@@ -265,6 +265,8 @@
timeMachine = (TimeMachine)in.readObject();
entryPoint = (EntryPoint)in.readObject();
entryPointNode = (EntryPointNode)in.readObject();
+ entryPoints = (Map<String, WorkingMemoryEntryPoint>)in.readObject();
+ initTransient();
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -299,6 +301,7 @@
out.writeObject(timeMachine);
out.writeObject(entryPoint);
out.writeObject(entryPointNode);
+ out.writeObject(entryPoints);
}
// ------------------------------------------------------------
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/DialectDatas.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/DialectDatas.java 2008-03-19 14:40:17 UTC (rev 19119)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/DialectDatas.java 2008-03-19 14:54:15 UTC (rev 19120)
@@ -1,5 +1,7 @@
package org.drools.rule;
+import org.drools.common.DroolsObjectInput;
+
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
@@ -12,7 +14,7 @@
import org.drools.common.DroolsObjectInput;
public class DialectDatas implements Externalizable {
- private ClassLoader parentClassLoader;
+ private transient ClassLoader parentClassLoader;
private CompositePackageClassLoader classLoader;
private Map<String, DialectData> dialects;
@@ -40,8 +42,6 @@
*/
public void writeExternal(final ObjectOutput stream) throws IOException {
stream.writeObject(this.dialects);
- stream.writeObject(this.classLoader);
- stream.writeObject(this.parentClassLoader instanceof DroolsClassLoader ? this.parentClassLoader : null);
stream.writeObject( this.lineMappings );
}
@@ -53,14 +53,15 @@
*/
public void readExternal(final ObjectInput stream) throws IOException,
ClassNotFoundException {
- this.dialects = (Map<String, DialectData>)stream.readObject();
- this.classLoader = (CompositePackageClassLoader)stream.readObject();
- setParentClassLoader((ClassLoader)stream.readObject());
- if (stream instanceof DroolsObjectInput) {
- ((DroolsObjectInput)stream).setClassLoader(this.classLoader);
- ((DroolsObjectInput)stream).setDialectDatas(this);
- }
- this.lineMappings = (Map) stream.readObject();
+ DroolsObjectInput droolsStream = (DroolsObjectInput)stream;
+
+ setParentClassLoader(droolsStream.getClassLoader());
+ this.classLoader = new CompositePackageClassLoader( this.parentClassLoader );
+ droolsStream.setDialectDatas(this);
+ droolsStream.setClassLoader(this.classLoader);
+
+ this.dialects = (Map<String, DialectData>)droolsStream.readObject();
+ this.lineMappings = (Map) stream.readObject();
}
public void addDialectData(String dialect, DialectData dialectData) {
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/JavaDialectData.java 2008-03-19 14:40:17 UTC (rev 19119)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/JavaDialectData.java 2008-03-19 14:54:15 UTC (rev 19120)
@@ -36,6 +36,7 @@
import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
import org.drools.common.DroolsObjectInputStream;
import org.drools.common.DroolsObjectOutputStream;
+import org.drools.common.DroolsObjectInput;
import org.drools.spi.Accumulator;
import org.drools.spi.Consequence;
import org.drools.spi.EvalExpression;
@@ -107,8 +108,6 @@
if (!(stream instanceof DroolsObjectOutputStream)) {
stream = new DroolsObjectOutputStream(stream);
}
- stream.writeObject( this.datas );
- stream.writeObject( classLoader );
stream.writeObject( this.store );
stream.writeObject( this.AST );
stream.writeObject( this.invokerLookups );
@@ -123,14 +122,12 @@
*/
public void readExternal(ObjectInput stream) throws IOException,
ClassNotFoundException {
- DroolsObjectInputStream droolsStream = stream instanceof DroolsObjectInputStream
- ? (DroolsObjectInputStream)stream
- : new DroolsObjectInputStream(stream);
- this.datas = (DialectDatas)droolsStream.readObject();
- this.classLoader = (PackageClassLoader)droolsStream.readObject();
+ DroolsObjectInput droolsStream = (DroolsObjectInput)stream;
+
+ this.datas = droolsStream.getDialectDatas();
+ this.classLoader = new PackageClassLoader( this.datas.getParentClassLoader(), this );
this.datas.addClassLoader( this.classLoader );
- droolsStream.setClassLoader(this.classLoader);
- droolsStream.setDialectDatas(this.datas);
+
this.store = (Map) stream.readObject();
this.AST = stream.readObject();
this.invokerLookups = (Map) droolsStream.readObject();
@@ -303,23 +300,29 @@
InstantiationException,
IllegalAccessException {
final Class clazz = this.classLoader.findClass( className );
- if ( invoker instanceof ReturnValueRestriction ) {
- ((ReturnValueRestriction) invoker).setReturnValueExpression( (ReturnValueExpression) clazz.newInstance() );
- } else if ( invoker instanceof PredicateConstraint ) {
- ((PredicateConstraint) invoker).setPredicateExpression( (PredicateExpression) clazz.newInstance() );
- } else if ( invoker instanceof EvalCondition ) {
- ((EvalCondition) invoker).setEvalExpression( (EvalExpression) clazz.newInstance() );
- } else if ( invoker instanceof Accumulate ) {
- ((Accumulate) invoker).setAccumulator( (Accumulator) clazz.newInstance() );
- } else if ( invoker instanceof Rule ) {
- ((Rule) invoker).setConsequence( (Consequence) clazz.newInstance() );
- } else if ( invoker instanceof JavaAccumulatorFunctionExecutor ) {
- ((JavaAccumulatorFunctionExecutor) invoker).setExpression( (ReturnValueExpression) clazz.newInstance() );
- } else if ( invoker instanceof ActionNode ) {
- ((ActionNode) invoker).setAction( clazz.newInstance() );
- } else if ( invoker instanceof ReturnValueConstraintEvaluator ) {
- ((ReturnValueConstraintEvaluator) invoker).setEvaluator( (ReturnValueEvaluator) clazz.newInstance() );
+
+ if (clazz != null) {
+ if ( invoker instanceof ReturnValueRestriction ) {
+ ((ReturnValueRestriction) invoker).setReturnValueExpression( (ReturnValueExpression) clazz.newInstance() );
+ } else if ( invoker instanceof PredicateConstraint ) {
+ ((PredicateConstraint) invoker).setPredicateExpression( (PredicateExpression) clazz.newInstance() );
+ } else if ( invoker instanceof EvalCondition ) {
+ ((EvalCondition) invoker).setEvalExpression( (EvalExpression) clazz.newInstance() );
+ } else if ( invoker instanceof Accumulate ) {
+ ((Accumulate) invoker).setAccumulator( (Accumulator) clazz.newInstance() );
+ } else if ( invoker instanceof Rule ) {
+ ((Rule) invoker).setConsequence( (Consequence) clazz.newInstance() );
+ } else if ( invoker instanceof JavaAccumulatorFunctionExecutor ) {
+ ((JavaAccumulatorFunctionExecutor) invoker).setExpression( (ReturnValueExpression) clazz.newInstance() );
+ } else if ( invoker instanceof ActionNode ) {
+ ((ActionNode) invoker).setAction( clazz.newInstance() );
+ } else if ( invoker instanceof ReturnValueConstraintEvaluator ) {
+ ((ReturnValueConstraintEvaluator) invoker).setEvaluator( (ReturnValueEvaluator) clazz.newInstance() );
+ }
}
+ else {
+ throw new ClassNotFoundException(className);
+ }
}
public String toString() {
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/Package.java 2008-03-19 14:40:17 UTC (rev 19119)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/Package.java 2008-03-19 14:54:15 UTC (rev 19120)
@@ -160,6 +160,7 @@
out = new DroolsObjectOutputStream(bytes);
}
out.writeObject( this.dialectDatas );
+ out.writeObject( this.typeDeclarations );
out.writeObject( this.name );
out.writeObject( this.imports );
out.writeObject( this.staticImports );
@@ -169,7 +170,6 @@
out.writeObject( this.globals );
out.writeBoolean( this.valid );
out.writeObject( this.rules );
- out.writeObject( this.typeDeclarations);
// writing the whole stream as a byte array
if (!isDroolsStream) {
bytes.flush();
@@ -194,10 +194,7 @@
: new DroolsObjectInputStream(new ByteArrayInputStream((byte[])stream.readObject()));
this.dialectDatas = (DialectDatas)in.readObject();
- // Not sure needs to do this, everything is already at this time.
- if (!isDroolsStream)
- ((DroolsObjectInput)in).setClassLoader(this.dialectDatas.getClassLoader());
-
+ this.typeDeclarations = (Map)in.readObject();
this.name = (String) in.readObject();
this.imports = (Map<String, ImportDeclaration>) in.readObject();
this.staticImports = (Set) in.readObject();
@@ -207,7 +204,6 @@
this.globals = (Map) in.readObject();
this.valid = in.readBoolean();
this.rules = (Map) in.readObject();
- this.typeDeclarations = (Map<String, TypeDeclaration>) in.readObject();
if (!isDroolsStream) {
in.close();
@@ -513,11 +509,6 @@
}
}
- // if it is not resolved, try superclass
- if ( this.isEvent( clazz.getSuperclass() ) ) {
- return true;
- }
-
return false;
}
Modified: labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java
===================================================================
--- labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2008-03-19 14:40:17 UTC (rev 19119)
+++ labs/jbossrules/branches/fixing_bad_merge/drools-core/src/main/java/org/drools/rule/TypeDeclaration.java 2008-03-19 14:54:15 UTC (rev 19120)
@@ -20,18 +20,20 @@
import org.drools.facttemplates.FactTemplate;
+import java.io.Serializable;
+
/**
* The type declaration class stores all type's metadata
* declared in source files.
*
* @author etirelli
*/
-public class TypeDeclaration {
-
+public class TypeDeclaration implements Serializable {
+
public static enum Role {
FACT,
EVENT;
-
+
public static Role parseRole( String role ) {
if( "event".equalsIgnoreCase( role ) ) {
return EVENT;
@@ -41,9 +43,9 @@
return null;
}
}
-
+
public static enum Format {
- POJO,
+ POJO,
TEMPLATE;
public static Format parseFormat( String format ) {
@@ -55,14 +57,14 @@
return null;
}
}
-
+
public static enum ClockStrategy {
NONE,
- PSEUDO,
- SYSTEM,
- HEARTBEAT,
+ PSEUDO,
+ SYSTEM,
+ HEARTBEAT,
ATTRIBUTE;
-
+
public static ClockStrategy parseClockStrategy( String clockStrategy ) {
if( "none".equalsIgnoreCase( clockStrategy ) ) {
return NONE;
@@ -87,7 +89,7 @@
private String durationAttribute;
private Class<?> typeClass;
private FactTemplate typeTemplate;
-
+
public TypeDeclaration( String typeName ) {
this.typeName = typeName;
this.role = Role.FACT;
@@ -98,7 +100,7 @@
this.typeClass = null;
this.typeTemplate = null;
}
-
+
/**
* @return the type
*/
@@ -203,7 +205,7 @@
public void setTypeTemplate(FactTemplate typeTemplate) {
this.typeTemplate = typeTemplate;
}
-
+
/**
* Returns true if the given parameter matches this type declaration
*
@@ -219,6 +221,6 @@
}
return matches;
}
-
-
+
+
}
More information about the jboss-svn-commits
mailing list