[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