[jboss-svn-commits] JBL Code SVN: r18974 - in labs/jbossrules/branches/ming-serialization: drools-compiler/src/test/java/org/drools and 15 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 14 10:36:10 EDT 2008


Author: mingjin
Date: 2008-03-14 10:36:09 -0400 (Fri, 14 Mar 2008)
New Revision: 18974

Modified:
   labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel
   labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
   labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/Primitives.java
   labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/FactHandle.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBase.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseEventManager.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/WorkingMemoryEventManager.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryConsoleLogger.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FieldFactory.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FireAllRulesRuleBaseUpdateListener.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorCache.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/BetaConstraints.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/NodeMemories.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObject.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObjects.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Command.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/FireAllRules.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Future.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/RetractObject.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/UpdateObject.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/DefaultRuleBaseEventListener.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactTemplate.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/rule/Function.java
   labs/jbossrules/branches/ming-serialization/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java
Log:
Making sure to to use ValueType.deternineValueType to restore staticreferences in readExternal

Modified: labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel	2008-03-14 14:36:09 UTC (rev 18974)
@@ -8,10 +8,16 @@
 import static @{importEntry};
 @end{}
 
-public class @{className} {
+public class @{className} implements java.io.Externalizable {
     private static final long serialVersionUID  = 400L;
         
     public static @{returnType} @{methodName}(@foreach{parameterTypes as type, parameterNames as name}@{type} @{name}@end{","}) throws Exception {
         @{text}
     }      
+
+    public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
+    }
+
+    public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel	2008-03-14 14:36:09 UTC (rev 18974)
@@ -371,7 +371,7 @@
 actionInvoker() ::=<<
 package @{package};
 
-public class @{invokerClassName} implements org.drools.spi.Action
+public class @{invokerClassName} implements org.drools.spi.Action, java.io.Externalizable
 {
     private static final long serialVersionUID  = 400L;
 
@@ -384,13 +384,19 @@
 	        @foreach{globals as identifier} @{identifier}
 	        @end{","} );
     }
+
+    public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
+    }
+
+    public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
+    }
 }
 >>=::
 
 returnValueEvaluatorInvoker() ::=<<
 package @{package};
 
-public class @{invokerClassName} implements org.drools.spi.ReturnValueEvaluator
+public class @{invokerClassName} implements org.drools.spi.ReturnValueEvaluator, java.io.Externalizable
 {
     private static final long serialVersionUID  = 400L;
 
@@ -403,5 +409,11 @@
 	        @foreach{globals as identifier} @{identifier}
 	        @end{","} );
     }
+
+    public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
+    }
+
+    public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException {
+    }
 }
 >>=::
\ No newline at end of file

Modified: labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/Primitives.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/Primitives.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/Primitives.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,10 +1,7 @@
 package org.drools;
 
-import java.util.Arrays;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-import java.io.IOException;
 import java.io.Serializable;
+import java.util.Arrays;
 
 /*
  * Copyright 2005 JBoss Inc

Modified: labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,22 +16,8 @@
  * limitations under the License.
  */
 
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import junit.framework.Assert;
 import junit.framework.TestCase;
-
 import org.acme.insurance.Driver;
 import org.acme.insurance.Policy;
 import org.drools.Address;
@@ -40,6 +26,7 @@
 import org.drools.Cheese;
 import org.drools.CheeseEqual;
 import org.drools.Cheesery;
+import org.drools.Cheesery.Maturity;
 import org.drools.Child;
 import org.drools.FactA;
 import org.drools.FactB;
@@ -73,8 +60,6 @@
 import org.drools.StatelessSession;
 import org.drools.TestParam;
 import org.drools.WorkingMemory;
-import org.drools.reteoo.ReteooRuleBase;
-import org.drools.Cheesery.Maturity;
 import org.drools.audit.WorkingMemoryFileLogger;
 import org.drools.base.ClassObjectFilter;
 import org.drools.common.AbstractWorkingMemory;
@@ -84,9 +69,9 @@
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
 import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilder.PackageMergeException;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.ParserError;
-import org.drools.compiler.PackageBuilder.PackageMergeException;
 import org.drools.event.ActivationCancelledEvent;
 import org.drools.event.ActivationCreatedEvent;
 import org.drools.event.AfterActivationFiredEvent;
@@ -105,15 +90,28 @@
 import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.PackageDescr;
 import org.drools.lang.descr.RuleDescr;
+import org.drools.reteoo.ReteooRuleBase;
 import org.drools.rule.InvalidRulePackage;
 import org.drools.rule.Package;
-import org.drools.rule.Rule;
 import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 import org.drools.spi.Activation;
 import org.drools.spi.ConsequenceExceptionHandler;
 import org.drools.spi.GlobalResolver;
 import org.drools.xml.XmlDumper;
 
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Reader;
+import java.io.StringReader;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 /** Run all the tests with the ReteOO engine implementation */
 public class MiscTest extends TestCase {
 
@@ -129,6 +127,104 @@
                                             config );
     }
 
+    public void testImportFunctions() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ImportFunctions.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
+        WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        final Cheese cheese = new Cheese( "stilton",
+                                          15 );
+        workingMemory.insert( cheese );
+        List list = new ArrayList();
+        workingMemory.setGlobal( "list",
+                                 list );
+//        workingMemory   = SerializationHelper.serializeObject(workingMemory);
+        workingMemory.fireAllRules();
+
+        list    = (List)workingMemory.getGlobal("list");
+        assertEquals( 4,
+                      list.size() );
+
+        assertEquals( "rule1",
+                      list.get( 0 ) );
+        assertEquals( "rule2",
+                      list.get( 1 ) );
+        assertEquals( "rule3",
+                      list.get( 2 ) );
+        assertEquals( "rule4",
+                      list.get( 3 ) );
+    }
+
+    public void testStaticFieldReference() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_StaticField.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+        final List list = new ArrayList();
+        workingMemory.setGlobal( "list",
+                                 list );
+
+        final Cheesery cheesery1 = new Cheesery();
+        cheesery1.setStatus( Cheesery.SELLING_CHEESE );
+        cheesery1.setMaturity( Maturity.OLD );
+        workingMemory.insert( cheesery1 );
+
+        final Cheesery cheesery2 = new Cheesery();
+        cheesery2.setStatus( Cheesery.MAKING_CHEESE );
+        cheesery2.setMaturity( Maturity.YOUNG );
+        workingMemory.insert( cheesery2 );
+
+        workingMemory.fireAllRules();
+
+        assertEquals( 2,
+                      list.size() );
+
+        assertEquals( cheesery1,
+                      list.get( 0 ) );
+        assertEquals( cheesery2,
+                      list.get( 1 ) );
+    }
+
+    public void testPrimitiveArray() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_primitiveArray.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+        final List result = new ArrayList();
+        workingMemory.setGlobal( "result",
+                                 result );
+
+        final Primitives p1 = new Primitives();
+        p1.setPrimitiveArrayAttribute( new int[]{1, 2, 3} );
+        p1.setArrayAttribute( new String[]{"a", "b"} );
+
+        workingMemory.insert( p1 );
+
+        workingMemory.fireAllRules();
+        assertEquals( 3,
+                      result.size() );
+        assertEquals( 3,
+                      ((Integer) result.get( 0 )).intValue() );
+        assertEquals( 2,
+                      ((Integer) result.get( 1 )).intValue() );
+        assertEquals( 3,
+                      ((Integer) result.get( 2 )).intValue() );
+
+    }
+
     public void testMVELSoundex() throws Exception {
 
         // read in the source
@@ -138,11 +234,11 @@
         ruleBase    = SerializationHelper.serializeObject(ruleBase);
         WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
+        workingMemory    = SerializationHelper.serializeObject(workingMemory);
         Cheese c = new Cheese( "fubar",
                                2 );
 
         workingMemory.insert( c );
-//        workingMemory    = SerializationHelper.serializeObject(workingMemory);
         workingMemory.fireAllRules();
         assertEquals( 42,
                       c.getPrice() );
@@ -170,11 +266,11 @@
                                            5 );
         workingMemory.insert( stilton );
 
-//        workingMemory    = SerializationHelper.serializeObject(workingMemory);
+        workingMemory    = SerializationHelper.serializeObject(workingMemory);
         workingMemory.fireAllRules();
 
         assertEquals( new Integer( 5 ),
-                      list.get( 0 ) );
+                      ((List)workingMemory.getGlobal("list")).get( 0 ) );
     }
 
     public void testGlobals2() throws Exception {
@@ -202,23 +298,24 @@
                                            5 );
         workingMemory.insert( stilton );
 
+        workingMemory    = SerializationHelper.serializeObject(workingMemory);
         workingMemory.fireAllRules();
 
         assertEquals( 1,
-                      results.size() );
+                      ((List)workingMemory.getGlobal("results")).size() );
         assertEquals( "memberOf",
-                      results.get( 0 ) );
+                      ((List)workingMemory.getGlobal("results")).get( 0 ) );
 
         final Cheese brie = new Cheese( "brie",
                                         5 );
         workingMemory.insert( brie );
-//        workingMemory    = SerializationHelper.serializeObject(workingMemory);
+        workingMemory    = SerializationHelper.serializeObject(workingMemory);
         workingMemory.fireAllRules();
 
         assertEquals( 2,
-                      results.size() );
+                      ((List)workingMemory.getGlobal("results")).size() );
         assertEquals( "not memberOf",
-                      results.get( 1 ) );
+                      ((List)workingMemory.getGlobal("results")).get( 1 ) );
     }
 
     public void testCustomGlobalResolver() throws Exception {
@@ -1063,36 +1160,6 @@
 
     }
 
-    public void testImportFunctions() throws Exception {
-        final PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ImportFunctions.drl" ) ) );
-        final Package pkg = builder.getPackage();
-
-        RuleBase ruleBase = getRuleBase();
-        ruleBase.addPackage( pkg );
-//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
-        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-        final Cheese cheese = new Cheese( "stilton",
-                                          15 );
-        workingMemory.insert( cheese );
-        final List list = new ArrayList();
-        workingMemory.setGlobal( "list",
-                                 list );
-        workingMemory.fireAllRules();
-
-        assertEquals( 4,
-                      list.size() );
-
-        assertEquals( "rule1",
-                      list.get( 0 ) );
-        assertEquals( "rule2",
-                      list.get( 1 ) );
-        assertEquals( "rule3",
-                      list.get( 2 ) );
-        assertEquals( "rule4",
-                      list.get( 3 ) );
-    }
-
     public void testBasicFrom() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_From.drl" ) ) );
@@ -1745,41 +1812,6 @@
                       list.get( 1 ) );
     }
 
-    public void testStaticFieldReference() throws Exception {
-        final PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_StaticField.drl" ) ) );
-        final Package pkg = builder.getPackage();
-
-        RuleBase ruleBase = getRuleBase();
-        ruleBase.addPackage( pkg );
-//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
-        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
-        final List list = new ArrayList();
-        workingMemory.setGlobal( "list",
-                                 list );
-
-        final Cheesery cheesery1 = new Cheesery();
-        cheesery1.setStatus( Cheesery.SELLING_CHEESE );
-        cheesery1.setMaturity( Maturity.OLD );
-        workingMemory.insert( cheesery1 );
-
-        final Cheesery cheesery2 = new Cheesery();
-        cheesery2.setStatus( Cheesery.MAKING_CHEESE );
-        cheesery2.setMaturity( Maturity.YOUNG );
-        workingMemory.insert( cheesery2 );
-
-        workingMemory.fireAllRules();
-
-        assertEquals( 2,
-                      list.size() );
-
-        assertEquals( cheesery1,
-                      list.get( 0 ) );
-        assertEquals( cheesery2,
-                      list.get( 1 ) );
-    }
-
     public void testDuplicateRuleNames() throws Exception {
         PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DuplicateRuleName1.drl" ) ) );
@@ -2442,37 +2474,6 @@
         ruleBase    = SerializationHelper.serializeObject(ruleBase);
     }
 
-    public void testPrimitiveArray() throws Exception {
-        final PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_primitiveArray.drl" ) ) );
-        final Package pkg = builder.getPackage();
-
-        RuleBase ruleBase = getRuleBase();
-        ruleBase.addPackage( pkg );
-//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
-        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-        final List result = new ArrayList();
-        workingMemory.setGlobal( "result",
-                                 result );
-
-        final Primitives p1 = new Primitives();
-        p1.setPrimitiveArrayAttribute( new int[]{1, 2, 3} );
-        p1.setArrayAttribute( new String[]{"a", "b"} );
-
-        workingMemory.insert( p1 );
-
-        workingMemory.fireAllRules();
-        assertEquals( 3,
-                      result.size() );
-        assertEquals( 3,
-                      ((Integer) result.get( 0 )).intValue() );
-        assertEquals( 2,
-                      ((Integer) result.get( 1 )).intValue() );
-        assertEquals( 3,
-                      ((Integer) result.get( 2 )).intValue() );
-
-    }
-
     public void testEmptyIdentifier() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_emptyIdentifier.drl" ) ) );

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/FactHandle.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/FactHandle.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/FactHandle.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -24,7 +24,6 @@
  * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
  */
 
-import java.io.Serializable;
 import java.io.Externalizable;
 
 public interface FactHandle

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBase.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBase.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBase.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,7 +18,6 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.Serializable;
 import java.io.Externalizable;
 
 import org.drools.rule.Package;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,7 +16,6 @@
 
 package org.drools;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 import java.io.ObjectOutput;
 import java.io.IOException;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseEventManager.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseEventManager.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/RuleBaseEventManager.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
+import java.io.Externalizable;
 import java.util.List;
 
 import org.drools.event.RuleBaseEventListener;
@@ -27,7 +27,7 @@
  */
 public interface RuleBaseEventManager
     extends
-    Serializable {
+    Externalizable {
     /**
      * Add an event listener.
      * 

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/WorkingMemoryEventManager.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/WorkingMemoryEventManager.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/WorkingMemoryEventManager.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
+import java.io.Externalizable;
 import java.util.List;
 
 import org.drools.event.AgendaEventListener;
@@ -30,7 +30,7 @@
 public interface WorkingMemoryEventManager
     extends
     RuleBaseEventManager,
-    Serializable {
+    Externalizable {
     /**
      * Add an event listener.
      * 

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryConsoleLogger.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryConsoleLogger.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryConsoleLogger.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,14 +3,26 @@
 import org.drools.WorkingMemory;
 import org.drools.audit.event.LogEvent;
 
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
+
 public class WorkingMemoryConsoleLogger extends WorkingMemoryLogger {
 
-	public WorkingMemoryConsoleLogger(WorkingMemory workingMemory) {
-		super(workingMemory);
-	}
-	
-	public void logEventCreated(LogEvent logEvent) {
-		System.out.println(logEvent);
-	}
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        super.readExternal(in);
+    }
 
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal(out);
+    }
+
+    public WorkingMemoryConsoleLogger(WorkingMemory workingMemory) {
+        super(workingMemory);
+    }
+
+    public void logEventCreated(LogEvent logEvent) {
+        System.out.println(logEvent);
+    }
+
 }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,16 +16,18 @@
  * limitations under the License.
  */
 
+import com.thoughtworks.xstream.XStream;
+import org.drools.WorkingMemoryEventManager;
+import org.drools.audit.event.LogEvent;
+
 import java.io.FileNotFoundException;
 import java.io.FileWriter;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.drools.WorkingMemoryEventManager;
-import org.drools.audit.event.LogEvent;
-
-import com.thoughtworks.xstream.XStream;
-
 /**
  * A logger of events generated by a working memory.
  * It stores its information in a file that can be specified.
@@ -44,21 +46,44 @@
  */
 public class WorkingMemoryFileLogger extends WorkingMemoryLogger {
 
-    private final List<LogEvent> events  = new ArrayList<LogEvent>();
+    private List<LogEvent> events  = new ArrayList<LogEvent>();
     private String     fileName          = "event";
     private int        maxEventsInMemory = 1000;
     private int        nbOfFile          = 0;
     private boolean    split             = true;
     private boolean    initialized       = false;
 
+    public WorkingMemoryFileLogger() {
+    }
+
     /**
      * Creates a new WorkingMemoryFileLogger for the given working memory.
-     * @param workingMemory
+     * @param workingMemoryEventManager
      */
     public WorkingMemoryFileLogger(final WorkingMemoryEventManager workingMemoryEventManager) {
         super( workingMemoryEventManager );
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        super.readExternal(in);
+        events  = (List<LogEvent>)in.readObject();
+        fileName    = (String)in.readObject();
+        maxEventsInMemory   = in.readInt();
+        nbOfFile            = in.readInt();
+        split               = in.readBoolean();
+        initialized         = in.readBoolean();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal(out);
+        out.writeObject(events);
+        out.writeObject(fileName);
+        out.writeInt(maxEventsInMemory);
+        out.writeInt(nbOfFile);
+        out.writeBoolean(split);
+        out.writeBoolean(initialized);
+    }
+
     /**
      * Sets the name of the file the events are logged in.
      * No extensions should be given since .log is automatically appended

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,16 +16,18 @@
  * limitations under the License.
  */
 
+import com.thoughtworks.xstream.XStream;
+import org.drools.WorkingMemory;
+import org.drools.audit.event.LogEvent;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.drools.WorkingMemory;
-import org.drools.audit.event.LogEvent;
-
-import com.thoughtworks.xstream.XStream;
-
 /**
  * A logger of events generated by a working memory.
  * It stores its information in memory, so it can be retrieved later.
@@ -34,8 +36,11 @@
  */
 public class WorkingMemoryInMemoryLogger extends WorkingMemoryLogger {
 
-    private final List events            = new ArrayList();
+    private List events            = new ArrayList();
 
+    public WorkingMemoryInMemoryLogger() {
+    }
+
     /**
      * Creates a new WorkingMemoryInMemoryLogger for the given working memory.
      * @param workingMemory
@@ -44,6 +49,16 @@
         super( workingMemory );
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        super.readExternal(in);
+        events  = (List)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal(out);
+        out.writeObject(events);
+    }
+
     public String getEvents() {
         final XStream xstream = new XStream();
         StringWriter writer = new StringWriter();

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -20,6 +20,9 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 
 import org.drools.WorkingMemoryEventManager;
 import org.drools.FactHandle;
@@ -91,8 +94,11 @@
     RuleFlowEventListener,
     RuleBaseEventListener {
 
-    private final List    filters = new ArrayList();
+    private List    filters = new ArrayList();
 
+    public WorkingMemoryLogger() {
+    }
+
     /**
      * Creates a new working memory logger for the given working memory.
      * 
@@ -105,6 +111,14 @@
         workingMemoryEventManager.addEventListener( (RuleBaseEventListener) this );
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        filters = (List)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(filters);
+    }
+
     /**
      * This method is invoked every time a new log event is created.
      * Subclasses should implement this method and store the event,

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -51,6 +51,8 @@
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
         operator    = (Operator)in.readObject();
         type        = (ValueType)in.readObject();
+        if (type != null)
+            type   = ValueType.determineValueType(type.getClassType());
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,9 @@
 package org.drools.base;
 
-import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.IOException;
+import java.io.ObjectOutput;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -53,13 +56,16 @@
 
     private static class ExtractorKey
         implements
-        Serializable {
+        Externalizable {
         private static final long serialVersionUID = 400;
 
-        private final Class       clazz;
-        private final String      fieldName;
-        private final int         hashCode;
+        private Class       clazz;
+        private String      fieldName;
+        private int         hashCode;
 
+        public ExtractorKey() {
+        }
+
         public ExtractorKey(Class clazz,
                             String fieldName) {
             super();
@@ -73,6 +79,18 @@
             this.hashCode = result;
         }
 
+        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+            clazz   = (Class)in.readObject();
+            fieldName   = (String)in.readObject();
+            hashCode    = in.readInt();
+        }
+
+        public void writeExternal(ObjectOutput out) throws IOException {
+            out.writeObject(clazz);
+            out.writeObject(fieldName);
+            out.writeInt(hashCode);
+        }
+
         public Class getClazz() {
             return clazz;
         }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FieldFactory.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FieldFactory.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FieldFactory.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,15 +16,15 @@
  * limitations under the License.
  */
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
 import org.drools.base.field.BooleanFieldImpl;
 import org.drools.base.field.DoubleFieldImpl;
 import org.drools.base.field.LongFieldImpl;
 import org.drools.base.field.ObjectFieldImpl;
 import org.drools.spi.FieldValue;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 public class FieldFactory {
     private static final FieldFactory INSTANCE = new FieldFactory();
 
@@ -33,7 +33,6 @@
     }
 
     private FieldFactory() {
-
     }
 
     public static FieldValue getFieldValue(final String value,
@@ -43,53 +42,53 @@
             valueType = ValueType.NULL_TYPE;
         }
 
-        if ( ValueType.NULL_TYPE.equals(valueType) ) {
+        if ( valueType == ValueType.NULL_TYPE ) {
             field = new ObjectFieldImpl( null );
-        } else if ( ValueType.PCHAR_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PCHAR_TYPE ) {
             field = new LongFieldImpl( value.charAt( 0 ) );
-        } else if ( ValueType.PBYTE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PBYTE_TYPE ) {
             field = new LongFieldImpl( Long.parseLong( value ) );
-        } else if ( ValueType.PSHORT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PSHORT_TYPE ) {
             field = new LongFieldImpl( Long.parseLong( value ) );
-        } else if ( ValueType.PINTEGER_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PINTEGER_TYPE ) {
             field = new LongFieldImpl( Long.parseLong( stripNumericType( value ) ) );
-        } else if ( ValueType.PLONG_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PLONG_TYPE ) {
             field = new LongFieldImpl( Long.parseLong( stripNumericType( value ) ) );
-        } else if ( ValueType.PFLOAT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PFLOAT_TYPE ) {
             field = new DoubleFieldImpl( Float.parseFloat( stripNumericType( value ) ) );
-        } else if ( ValueType.PDOUBLE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PDOUBLE_TYPE ) {
             field = new DoubleFieldImpl( Double.parseDouble( stripNumericType( value ) ) );
-        } else if ( ValueType.PBOOLEAN_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PBOOLEAN_TYPE ) {
             field = new BooleanFieldImpl( Boolean.valueOf( value ).booleanValue() );
-        } else if ( ValueType.CHAR_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.CHAR_TYPE ) {
             field = new ObjectFieldImpl( new Character( value.charAt( 0 ) ) );
-        } else if ( ValueType.BYTE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BYTE_TYPE ) {
             field = new ObjectFieldImpl( new Byte( value ) );
-        } else if ( ValueType.SHORT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.SHORT_TYPE ) {
             field = new ObjectFieldImpl( new Short( value ) );
-        } else if ( ValueType.INTEGER_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.INTEGER_TYPE ) {
             field = new ObjectFieldImpl( new Integer( stripNumericType( value ) ) );
-        } else if ( ValueType.LONG_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.LONG_TYPE ) {
             field = new ObjectFieldImpl( new Long( stripNumericType( value ) ) );
-        } else if ( ValueType.FLOAT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.FLOAT_TYPE ) {
             field = new ObjectFieldImpl( new Float( stripNumericType( value ) ) );
-        } else if ( ValueType.DOUBLE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.DOUBLE_TYPE ) {
             field = new ObjectFieldImpl( new Double( stripNumericType( value ) ) );
-        } else if ( ValueType.BOOLEAN_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BOOLEAN_TYPE ) {
             field = new ObjectFieldImpl( Boolean.valueOf( value ) );
-        } else if ( ValueType.STRING_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.STRING_TYPE ) {
             field = new ObjectFieldImpl( value.intern() );
-        } else if ( ValueType.DATE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.DATE_TYPE ) {
             //MN: I think its fine like this, seems to work !
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.ARRAY_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.ARRAY_TYPE ) {
             //MN: I think its fine like this.
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.OBJECT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.OBJECT_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.BIG_DECIMAL_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BIG_DECIMAL_TYPE ) {
             field = new ObjectFieldImpl( new BigDecimal( value ) );
-        } else if ( ValueType.BIG_INTEGER_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BIG_INTEGER_TYPE ) {
             field = new ObjectFieldImpl( new BigInteger( value ) );
         }
 
@@ -103,85 +102,85 @@
             valueType = ValueType.NULL_TYPE;
         }
 
-        if ( ValueType.NULL_TYPE.equals(valueType) ) {
+        if ( valueType == ValueType.NULL_TYPE ) {
             field = new ObjectFieldImpl( null );
-        } else if ( ValueType.PCHAR_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.PCHAR_TYPE ) {
             if( value instanceof String && ((String)value).length() == 1 ) {
                 field = new LongFieldImpl( ((String) value).charAt(0) );
             } else {
                 field = new LongFieldImpl( ((Character) value).charValue() );
-            } 
-        } else if ( ValueType.PBYTE_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PBYTE_TYPE ) {
             if( value instanceof String ) {
                 field = new LongFieldImpl( Byte.parseByte( (String) value) );
             } else {
                 field = new LongFieldImpl( ((Number) value).byteValue() );
-            } 
-        } else if ( ValueType.PSHORT_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PSHORT_TYPE ) {
             if( value instanceof String ) {
                 field = new LongFieldImpl( Short.parseShort( (String) value) );
             } else {
                 field = new LongFieldImpl( ((Number) value).shortValue() );
-            } 
-        } else if ( ValueType.PINTEGER_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PINTEGER_TYPE ) {
             if( value instanceof String ) {
                 field = new LongFieldImpl( Integer.parseInt( stripNumericType( (String) value ) ) );
             } else {
                 field = new LongFieldImpl( ((Number) value).intValue() );
-            } 
-        } else if ( ValueType.PLONG_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PLONG_TYPE ) {
             if( value instanceof String ) {
                 field = new LongFieldImpl( Long.parseLong( stripNumericType( (String) value ) ) );
             } else {
                 field = new LongFieldImpl( ((Number) value).longValue() );
-            } 
-        } else if ( ValueType.PFLOAT_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PFLOAT_TYPE ) {
             if( value instanceof String ) {
                 field = new DoubleFieldImpl( Float.parseFloat( stripNumericType( (String) value ) ) );
             } else {
                 field = new DoubleFieldImpl( ((Number) value).floatValue() );
-            } 
-        } else if ( ValueType.PDOUBLE_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PDOUBLE_TYPE ) {
             if( value instanceof String ) {
                 field = new DoubleFieldImpl( Double.parseDouble( stripNumericType( (String) value ) ) );
             } else {
                 field = new DoubleFieldImpl( ((Number) value).doubleValue() );
-            } 
-        } else if ( ValueType.PBOOLEAN_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.PBOOLEAN_TYPE ) {
             if( value instanceof String ) {
                 field = new BooleanFieldImpl( Boolean.valueOf( (String) value).booleanValue() );
             } else {
                 field = new BooleanFieldImpl( ((Boolean) value).booleanValue() );
-            } 
-        } else if ( ValueType.CHAR_TYPE.equals(valueType) ) {
+            }
+        } else if ( valueType == ValueType.CHAR_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.BYTE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BYTE_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.SHORT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.SHORT_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.INTEGER_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.INTEGER_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.LONG_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.LONG_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.FLOAT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.FLOAT_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.DOUBLE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.DOUBLE_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.BOOLEAN_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BOOLEAN_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.STRING_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.STRING_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.DATE_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.DATE_TYPE ) {
             //MN: I think its fine like this, seems to work !
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.ARRAY_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.ARRAY_TYPE ) {
             //MN: I think its fine like this.
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.OBJECT_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.OBJECT_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.BIG_DECIMAL_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BIG_DECIMAL_TYPE ) {
             field = new ObjectFieldImpl( value );
-        } else if ( ValueType.BIG_INTEGER_TYPE.equals(valueType) ) {
+        } else if ( valueType == ValueType.BIG_INTEGER_TYPE ) {
             field = new ObjectFieldImpl( value );
         }
 

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FireAllRulesRuleBaseUpdateListener.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FireAllRulesRuleBaseUpdateListener.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/FireAllRulesRuleBaseUpdateListener.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,7 +3,10 @@
  */
 package org.drools.base;
 
-import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
 
 import org.drools.StatefulSession;
 import org.drools.event.BeforeRuleBaseUnlockedEvent;
@@ -13,13 +16,22 @@
 public class FireAllRulesRuleBaseUpdateListener extends DefaultRuleBaseEventListener
     implements
     RuleBaseUpdateListener,
-    Serializable {
+    Externalizable {
     private StatefulSession session;
 
     public FireAllRulesRuleBaseUpdateListener() {
+    }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        super.readExternal(in);
+        session = (StatefulSession)in.readObject();
     }
 
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal(out);
+        out.writeObject(session);
+    }
+
     public void setSession(StatefulSession session) {
         this.session = session;
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/ModifyInterceptor.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,10 @@
 package org.drools.base;
 
 import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 
 import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
 import org.drools.spi.KnowledgeHelper;
@@ -12,9 +16,15 @@
 public class ModifyInterceptor
     implements
     Interceptor,
-    Serializable {
+    Externalizable {
     private static final long serialVersionUID = 400L;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public int doBefore(ASTNode node,
                         VariableResolverFactory factory) {
         Object object = ((WithNode) node).getNestedStatement().getValue( null,

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/accumulators/AccumulateFunction.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -17,7 +17,6 @@
  */
 package org.drools.base.accumulators;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 
 /**

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorCache.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorCache.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorCache.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -17,17 +17,16 @@
  */
 package org.drools.base.evaluators;
 
-import java.io.Serializable;
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
 import java.io.Externalizable;
+import java.io.IOException;
 import java.io.ObjectInput;
-import java.io.IOException;
 import java.io.ObjectOutput;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.drools.base.ValueType;
-import org.drools.spi.Evaluator;
-
 /**
  * A simple helper class to store Evaluators for a given set of
  * value types and operators
@@ -36,7 +35,6 @@
  */
 public class EvaluatorCache implements Externalizable {
 
-
     private static final long serialVersionUID = 5643974484372543392L;
     private Map<ValueType, Map<Operator, Evaluator>> evaluators = new HashMap<ValueType, Map<Operator, Evaluator>>();
 
@@ -44,7 +42,12 @@
     }
 
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        evaluators  = (Map<ValueType, Map<Operator, Evaluator>>)in.readObject();
+        Map<ValueType, Map<Operator, Evaluator>>    temp = (Map<ValueType, Map<Operator, Evaluator>>)in.readObject();
+
+        for (Map.Entry<ValueType, Map<Operator, Evaluator>> entry : temp.entrySet()) {
+            evaluators.put(ValueType.determineValueType(entry.getKey().getClassType()),
+                           entry.getValue());
+        }
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/EvaluatorRegistry.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -17,7 +17,6 @@
  */
 package org.drools.base.evaluators;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 import java.io.ObjectInput;
 import java.io.IOException;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,5 @@
 package org.drools.base.evaluators;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,5 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,13 +1,17 @@
 package org.drools.base.mvel;
 
 import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 
 import org.mvel.integration.VariableResolver;
 
 public class DroolsMVELGlobalVariable
     implements
     VariableResolver,
-    Serializable {
+    Externalizable {
 
     private static final long serialVersionUID = -2480015657934353449L;
     
@@ -15,6 +19,9 @@
     private Class             knownType;
     private DroolsMVELFactory factory;
 
+    public DroolsMVELGlobalVariable() {
+    }
+
     public DroolsMVELGlobalVariable(final String identifier,
                                     final Class knownType,
                                     final DroolsMVELFactory factory) {
@@ -23,6 +30,18 @@
         this.knownType = knownType;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        name    = (String)in.readObject();
+        knownType   = (Class)in.readObject();
+        factory     = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(name);
+        out.writeObject(knownType);
+        out.writeObject(factory);
+    }
+
     public String getName() {
         return this.name;
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,10 @@
 package org.drools.base.mvel;
 
 import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 
 import org.drools.spi.KnowledgeHelper;
 import org.mvel.integration.VariableResolver;
@@ -8,17 +12,28 @@
 public class DroolsMVELKnowledgeHelper
     implements
     VariableResolver,
-    Serializable  {
+    Externalizable  {
 
     private static final long serialVersionUID = 9175428283083361478L;
     
     private DroolsMVELFactory factory;
     public static final String DROOLS = "drools";
 
+    public DroolsMVELKnowledgeHelper() {
+    }
+
     public DroolsMVELKnowledgeHelper(final DroolsMVELFactory factory) {
         this.factory = factory;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        factory = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(factory);
+    }
+
     public String getName() {
         return DROOLS;
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,9 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 
 import org.drools.common.InternalWorkingMemory;
 import org.drools.rule.Declaration;
@@ -9,19 +12,32 @@
 public class DroolsMVELLocalDeclarationVariable
     implements
     VariableResolver,
-    Serializable  {
+    Externalizable  {
 
     private static final long serialVersionUID = -8081447010148362496L;
     
     private Declaration       declaration;
     private DroolsMVELFactory factory;
 
+    public DroolsMVELLocalDeclarationVariable() {
+    }
+
     public DroolsMVELLocalDeclarationVariable(final Declaration declaration,
                                               final DroolsMVELFactory factory) {
         this.declaration = declaration;
         this.factory = factory;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        declaration = (Declaration)in.readObject();
+        factory     = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(declaration);
+        out.writeObject(factory);
+    }
+
     public String getName() {
         return this.declaration.getIdentifier();
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,9 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.io.IOException;
 
 import org.drools.common.InternalWorkingMemory;
 import org.drools.rule.Declaration;
@@ -9,17 +12,30 @@
 public class DroolsMVELPreviousDeclarationVariable
     implements
     VariableResolver,
-    Serializable  {
+    Externalizable  {
 
     private Declaration       declaration;
     private DroolsMVELFactory factory;
 
+    public DroolsMVELPreviousDeclarationVariable() {
+    }
+
     public DroolsMVELPreviousDeclarationVariable(final Declaration declaration,
                                                  final DroolsMVELFactory factory) {
         this.declaration = declaration;
         this.factory = factory;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        declaration = (Declaration)in.readObject();
+        factory     = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(declaration);
+        out.writeObject(factory);
+    }
+
     public String getName() {
         return this.declaration.getIdentifier();
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,30 +1,47 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
-
 import org.drools.WorkingMemory;
 import org.drools.rule.MVELDialectData;
 import org.drools.rule.Package;
 import org.drools.spi.Action;
+import org.mvel.MVEL;
 import org.mvel.compiler.CompiledExpression;
-import org.mvel.MVEL;
 import org.mvel.debug.DebugTools;
 
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
 public class MVELAction
     implements
     Action,
-    Serializable {
+    Externalizable {
     private static final long       serialVersionUID = 400L;
 
-    private final Serializable      expr;
-    private final DroolsMVELFactory prototype;
+    private Serializable      expr;
+    private DroolsMVELFactory prototype;
 
+    public MVELAction() {
+    }
+
     public MVELAction(final Serializable expr,
                       final DroolsMVELFactory factory) {
         this.expr = expr;
         this.prototype = factory;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        expr    = (Serializable)in.readObject();
+        prototype   = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(expr);
+        out.writeObject(prototype);
+    }
+
     public String getDialect() {
         return "mvel";
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,21 +1,20 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-
 import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
 import org.drools.rule.MVELDialectData;
 import org.drools.rule.Package;
 import org.drools.spi.Consequence;
 import org.drools.spi.KnowledgeHelper;
-import org.mvel.compiler.CompiledExpression;
 import org.mvel.MVEL;
+import org.mvel.compiler.CompiledExpression;
 import org.mvel.debug.DebugTools;
 
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
 public class MVELConsequence
     implements
     Consequence,
@@ -26,7 +25,6 @@
     private DroolsMVELFactory prototype;
 
     public MVELConsequence() {
-
     }
 
     public MVELConsequence(final Serializable expr,

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,11 +1,5 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
-
 import org.drools.WorkingMemory;
 import org.drools.rule.Declaration;
 import org.drools.rule.MVELDialectData;
@@ -14,6 +8,11 @@
 import org.drools.spi.Tuple;
 import org.mvel.MVEL;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
 public class MVELPredicateExpression
     implements
     PredicateExpression {
@@ -23,7 +22,6 @@
     private DroolsMVELFactory prototype;
 
     public MVELPredicateExpression() {
-
     }
 
     public MVELPredicateExpression(final Serializable expr,

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,30 +1,47 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
-
 import org.drools.WorkingMemory;
 import org.drools.rule.MVELDialectData;
 import org.drools.rule.Package;
 import org.drools.spi.ReturnValueEvaluator;
+import org.mvel.MVEL;
 import org.mvel.compiler.CompiledExpression;
-import org.mvel.MVEL;
 import org.mvel.debug.DebugTools;
 
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
 public class MVELReturnValueEvaluator
     implements
     ReturnValueEvaluator,
-    Serializable {
+    Externalizable {
     private static final long       serialVersionUID = 400L;
 
-    private final Serializable      expr;
-    private final DroolsMVELFactory prototype;
+    private Serializable      expr;
+    private DroolsMVELFactory prototype;
 
+    public MVELReturnValueEvaluator() {
+    }
+
     public MVELReturnValueEvaluator(final Serializable expr,
                                     final DroolsMVELFactory factory) {
         this.expr = expr;
         this.prototype = factory;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        expr    = (Serializable)in.readObject();
+        prototype   = (DroolsMVELFactory)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(expr);
+        out.writeObject(prototype);
+    }
+
     public String getDialect() {
         return "mvel";
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,11 +1,5 @@
 package org.drools.base.mvel;
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.ObjectInput;
-import java.io.IOException;
-import java.io.ObjectOutput;
-
 import org.drools.WorkingMemory;
 import org.drools.rule.Declaration;
 import org.drools.rule.MVELDialectData;
@@ -15,6 +9,12 @@
 import org.drools.spi.Tuple;
 import org.mvel.MVEL;
 
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
 public class MVELReturnValueExpression
     implements
     ReturnValueExpression,
@@ -25,7 +25,6 @@
     private DroolsMVELFactory prototype;
 
     public MVELReturnValueExpression() {
-
     }
 
     public MVELReturnValueExpression(final Serializable expr,

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,36 +16,14 @@
  * limitations under the License.
  */
 
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ByteArrayInputStream;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.drools.FactException;
 import org.drools.PackageIntegrationException;
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
-import org.drools.RuleIntegrationException;
 import org.drools.StatefulSession;
 import org.drools.concurrent.CommandExecutor;
 import org.drools.concurrent.ExecutorService;
 import org.drools.event.RuleBaseEventListener;
 import org.drools.event.RuleBaseEventSupport;
-import org.drools.reteoo.ReteooStatefulSession;
 import org.drools.objenesis.Objenesis;
 import org.drools.objenesis.ObjenesisStd;
 import org.drools.process.core.Process;
@@ -55,13 +33,28 @@
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.MapBackedClassLoader;
 import org.drools.rule.Package;
-import org.drools.rule.JavaDialectData;
 import org.drools.rule.Rule;
-import org.drools.rule.DroolsClassLoader;
 import org.drools.spi.ExecutorServiceFactory;
 import org.drools.spi.FactHandleFactory;
 import org.drools.util.ObjectHashSet;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.locks.ReentrantLock;
+
 /**
  * Implementation of <code>RuleBase</code>.
  *

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -85,7 +85,6 @@
 import org.drools.spi.FactHandleFactory;
 import org.drools.spi.GlobalResolver;
 import org.drools.spi.PropagationContext;
-import org.drools.temporal.SessionClock;
 
 /**
  * Implementation of <code>WorkingMemory</code>.

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/BetaConstraints.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/BetaConstraints.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/BetaConstraints.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,14 +1,13 @@
 package org.drools.common;
 
-import java.io.Serializable;
-import java.io.Externalizable;
-
 import org.drools.RuleBaseConfiguration;
 import org.drools.reteoo.BetaMemory;
 import org.drools.reteoo.ReteTuple;
 import org.drools.rule.ContextEntry;
 import org.drools.util.LinkedList;
 
+import java.io.Externalizable;
+
 public interface BetaConstraints
     extends
     Externalizable {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultAgenda.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultAgenda.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -43,7 +43,6 @@
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.RuleFlowGroup;
 import org.drools.util.LinkedListNode;
-import org.drools.util.Queueable;
 
 /**
  * Rule-firing Agenda.

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,14 +16,6 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.drools.RuleBaseConfiguration;
 import org.drools.base.evaluators.Operator;
 import org.drools.reteoo.BetaMemory;
@@ -34,6 +26,7 @@
 import org.drools.rule.VariableConstraint;
 import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Constraint;
+import org.drools.util.AbstractHashTable.FieldIndex;
 import org.drools.util.FactHandleIndexHashTable;
 import org.drools.util.FactHashTable;
 import org.drools.util.FactList;
@@ -41,8 +34,13 @@
 import org.drools.util.LinkedListEntry;
 import org.drools.util.TupleHashTable;
 import org.drools.util.TupleIndexHashTable;
-import org.drools.util.AbstractHashTable.FieldIndex;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
 public class DefaultBetaConstraints
     implements
     BetaConstraints {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,14 +16,6 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.drools.RuleBaseConfiguration;
 import org.drools.base.evaluators.Operator;
 import org.drools.reteoo.BetaMemory;
@@ -33,6 +25,7 @@
 import org.drools.rule.ContextEntry;
 import org.drools.rule.VariableConstraint;
 import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.util.AbstractHashTable.FieldIndex;
 import org.drools.util.FactHandleIndexHashTable;
 import org.drools.util.FactHashTable;
 import org.drools.util.FactList;
@@ -40,8 +33,13 @@
 import org.drools.util.LinkedListEntry;
 import org.drools.util.TupleHashTable;
 import org.drools.util.TupleIndexHashTable;
-import org.drools.util.AbstractHashTable.FieldIndex;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
 public class DoubleBetaConstraints
     implements
     BetaConstraints {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,12 +16,6 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.ObjectInput;
-import java.io.IOException;
-
 import org.drools.RuleBaseConfiguration;
 import org.drools.reteoo.BetaMemory;
 import org.drools.reteoo.FactHandleMemory;
@@ -32,6 +26,10 @@
 import org.drools.util.LinkedList;
 import org.drools.util.TupleHashTable;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 public class EmptyBetaConstraints
     implements
     BetaConstraints {
@@ -52,11 +50,9 @@
     }
 
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {
-
     }
     /* (non-Javadoc)
      * @see org.drools.common.BetaNodeConstraints#updateFromTuple(org.drools.reteoo.ReteTuple)

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/NodeMemories.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/NodeMemories.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/NodeMemories.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,7 +18,6 @@
 
 package org.drools.common;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 
 /**

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,14 +16,6 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
-import java.io.Externalizable;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.drools.RuleBaseConfiguration;
 import org.drools.base.evaluators.Operator;
 import org.drools.reteoo.BetaMemory;
@@ -33,6 +25,7 @@
 import org.drools.rule.ContextEntry;
 import org.drools.rule.VariableConstraint;
 import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.util.AbstractHashTable.FieldIndex;
 import org.drools.util.FactHandleIndexHashTable;
 import org.drools.util.FactHashTable;
 import org.drools.util.FactList;
@@ -40,8 +33,13 @@
 import org.drools.util.LinkedListEntry;
 import org.drools.util.TupleHashTable;
 import org.drools.util.TupleIndexHashTable;
-import org.drools.util.AbstractHashTable.FieldIndex;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
 public class QuadroupleBetaConstraints
     implements
     BetaConstraints {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObject.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObject.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObject.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -5,6 +5,10 @@
 
 import org.drools.WorkingMemory;
 
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
+
 public class AssertObject
     implements
     Command,
@@ -13,10 +17,25 @@
     private volatile Object result;
     private Exception       e;
 
+    public AssertObject() {
+    }
+
     public AssertObject(final Object object) {
         this.object = object;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        object  = in.readObject();
+        result  = in.readObject();
+        e       = (Exception)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(object);
+        out.writeObject(result);
+        out.writeObject(e);
+    }
+
     public void execute(final WorkingMemory workingMemory) {
         try {
             this.result = workingMemory.insert( this.object );
@@ -27,16 +46,16 @@
 
     public Object getObject() {
         return this.result;
-    }    
+    }
 
     public boolean isDone() {
         return this.result != null;
     }
-    
+
     public boolean exceptionThrown() {
         return e != null;
     }
-    
+
     public Exception getException() {
         return this.e;
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObjects.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObjects.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/AssertObjects.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,12 +3,15 @@
  */
 package org.drools.concurrent;
 
+import org.drools.WorkingMemory;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.drools.WorkingMemory;
-
 public class AssertObjects
     implements
     Command,
@@ -17,10 +20,25 @@
     private volatile List results;
     private Exception     e;
 
+    public AssertObjects() {
+    }
+
     public AssertObjects(final Object object) {
         this.object = object;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        object  = in.readObject();
+        results = (List)in.readObject();
+        e       = (Exception)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(object);
+        out.writeObject(results);
+        out.writeObject(e);
+    }
+
     public void execute(final WorkingMemory workingMemory) {
         try {
             if ( this.object instanceof Object[] ) {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Command.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Command.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Command.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,10 +3,10 @@
  */
 package org.drools.concurrent;
 
-import java.io.Serializable;
-
 import org.drools.WorkingMemory;
 
-public interface Command extends Serializable {
+import java.io.Externalizable;
+
+public interface Command extends Externalizable {
     void execute(WorkingMemory workingMemory);
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/CommandExecutor.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,19 +3,22 @@
  */
 package org.drools.concurrent;
 
-import java.io.Serializable;
+import org.drools.WorkingMemory;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import org.drools.WorkingMemory;
-
 /**
  * The CommandExecutor is a Producer/Consumer style classes that provides a queue of Commands
  * in a LinkedBlockingQueue. This the run() method loops for continously until shutdown() is 
  * called.
  *
  */
-public class CommandExecutor implements Runnable, Serializable {
+public class CommandExecutor implements Runnable, Externalizable {
 
     private static final long serialVersionUID = 5924295088331461167L;
     
@@ -24,12 +27,27 @@
     
     private volatile boolean run;
     
-    
+
+    public CommandExecutor() {
+    }
+
     public CommandExecutor(WorkingMemory workingMemory) {
         this.workingMemory = workingMemory;            
         this.queue = new LinkedBlockingQueue();
     }        
     
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        workingMemory   = (WorkingMemory)in.readObject();
+        queue           = (BlockingQueue)in.readObject();
+        run             = in.readBoolean();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(workingMemory);
+        out.writeObject(queue);
+        out.writeBoolean(run);
+    }
+
     /**
      * Allows the looping run() method to execute. 
      *

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/DefaultExecutorService.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,34 +3,48 @@
  */
 package org.drools.concurrent;
 
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 
-public class DefaultExecutorService implements ExecutorService {   
+public class DefaultExecutorService implements ExecutorService {
 
     private static final long serialVersionUID = 7860812696865293690L;
     private Thread thread;
     private CommandExecutor executor;
     private boolean running;
-    
+
     public DefaultExecutorService() {
-        
     }
-    
+
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        thread  = (Thread)in.readObject();
+        executor    = (CommandExecutor)in.readObject();
+        running     = in.readBoolean();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(thread);
+        out.writeObject(executor);
+        out.writeBoolean(running);
+    }
+
     public void setCommandExecutor(CommandExecutor executor) {
         this.executor = executor;
     }
-    
+
     public void startUp() {
         this.thread = new Thread( executor );
         this.thread.start();
         this.running = true;
     }
-    
+
     public void shutDown() {
         this.executor.shutdown();
         this.running = false;
         this.thread = null;
-    }             
-    
+    }
+
     public Future submit(Command command) {
         if (!this.running) {
             startUp();

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/ExecutorService.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -3,36 +3,35 @@
  */
 package org.drools.concurrent;
 
-import java.io.Serializable;
+import java.io.Externalizable;
 
-
 /**
  * This class instance is configed by the RuleBaseConfiguration and is responsible for thread management
  * of the async services.
  *
  */
-public interface ExecutorService extends Serializable {
-    
+public interface ExecutorService extends Externalizable {
+
     /**
      * The CommandExecutor is a producer/consumer style class that handles the queue and execution
      * of the async actions
      * @param executor
      */
     public void setCommandExecutor(CommandExecutor executor);
-    
+
     /**
      * Submit a command for execution, adds it ot the commandExecutor's queue
      * @param command
      * @return
      */
     Future submit(Command command);
-    
+
     /**
      * Shutdown this ExecutorService
      *
      */
     void shutDown();
-    
+
     /**
      * Startup this ExecutorService, typically called on first submit for lazy startup.
      *

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/FireAllRules.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/FireAllRules.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/FireAllRules.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -6,6 +6,10 @@
 import org.drools.WorkingMemory;
 import org.drools.spi.AgendaFilter;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 public class FireAllRules
     implements
     Command,
@@ -14,10 +18,25 @@
     private volatile boolean done;
     private Exception     e;
 
+    public FireAllRules() {
+    }
+
     public FireAllRules(final AgendaFilter agendaFilter) {
         this.agendaFilter = agendaFilter;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        agendaFilter    = (AgendaFilter)in.readObject();
+        done            = in.readBoolean();
+        e               = (Exception)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(agendaFilter);
+        out.writeBoolean(done);
+        out.writeObject(e);
+    }
+
     public void execute(final WorkingMemory workingMemory) {
         try {
             workingMemory.fireAllRules( this.agendaFilter );
@@ -34,12 +53,12 @@
     public boolean isDone() {
         return this.done;
     }
-    
+
     public boolean exceptionThrown() {
         return e != null;
     }
-    
+
     public Exception getException() {
         return this.e;
-    }      
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Future.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Future.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/Future.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,12 +1,12 @@
 package org.drools.concurrent;
 
-import java.io.Serializable;
+import java.io.Externalizable;
 
-public interface Future extends Serializable  {
+public interface Future extends Externalizable  {
     boolean isDone();
-    
+
     Object getObject();
-    
+
     boolean exceptionThrown();
     Exception getException();
 }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/RetractObject.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/RetractObject.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/RetractObject.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -6,6 +6,10 @@
 import org.drools.FactHandle;
 import org.drools.WorkingMemory;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 public class RetractObject
     implements
     Command,
@@ -14,6 +18,9 @@
     private volatile boolean done;
     private Exception     e;
 
+    public RetractObject() {
+    }
+
     public RetractObject(final FactHandle factHandle) {
         this.factHandle = factHandle;
     }
@@ -24,6 +31,18 @@
 
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        factHandle  = (FactHandle)in.readObject();
+        done        = in.readBoolean();
+        e           = (Exception)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(factHandle);
+        out.writeBoolean(done);
+        out.writeObject(e);
+    }
+
     public Object getObject() {
         return null;
     }
@@ -31,12 +50,12 @@
     public boolean isDone() {
         return this.done;
     }
-    
+
     public boolean exceptionThrown() {
         return e != null;
     }
-    
+
     public Exception getException() {
         return this.e;
-    }    
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/UpdateObject.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/UpdateObject.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/concurrent/UpdateObject.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -6,6 +6,10 @@
 import org.drools.FactHandle;
 import org.drools.WorkingMemory;
 
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
+
 public class UpdateObject
     implements
     Command,
@@ -15,15 +19,32 @@
     private volatile boolean done;
     private Exception     e;
 
+    public UpdateObject() {
+    }
+
     public UpdateObject(final FactHandle factHandle,
                         final Object object) {
         this.factHandle = factHandle;
         this.object = object;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        factHandle  = (FactHandle)in.readObject();
+        object      = in.readObject();
+        done        = in.readBoolean();
+        e           = (Exception)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(factHandle);
+        out.writeObject(object);
+        out.writeBoolean(done);
+        out.writeObject(e);
+    }
+
     public void execute(final WorkingMemory workingMemory) {
         workingMemory.update( this.factHandle,
-                                    this.object );
+                              this.object );
         this.done = true;
     }
 
@@ -34,12 +55,12 @@
     public boolean isDone() {
         return this.done == true;
     }
-    
+
     public boolean exceptionThrown() {
         return e != null;
     }
-    
+
     public Exception getException() {
         return this.e;
-    }    
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/DefaultRuleBaseEventListener.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/DefaultRuleBaseEventListener.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/DefaultRuleBaseEventListener.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,4 +1,8 @@
 package org.drools.event;
+
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 /*
  * Copyright 2005 JBoss Inc
  * 
@@ -20,6 +24,12 @@
     implements
     RuleBaseEventListener {
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public void afterFunctionRemoved(AfterFunctionRemovedEvent event) {
         // intentionally left blank
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/event/RuleBaseEventListener.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,10 +1,11 @@
 package org.drools.event;
 
 import java.util.EventListener;
+import java.io.Externalizable;
 
 public interface RuleBaseEventListener
     extends
-    EventListener {
+    EventListener, Externalizable {
 
     /**
      * Method called before a new package is added to the rule base

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -17,6 +17,10 @@
 package org.drools.facttemplates;
 
 import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
 import java.util.Arrays;
 
 //import woolfel.engine.rule.Rule;
@@ -30,7 +34,7 @@
 public class FactImpl
     implements
     Fact,
-    Serializable {
+    Externalizable {
 
     private static int hashCode(final Object[] array) {
         final int PRIME = 31;
@@ -53,6 +57,9 @@
      */
     private long         id;
 
+    public FactImpl() {
+    }
+
     /**
      * this is the default constructor
      * @param instance
@@ -73,6 +80,20 @@
         this.id = id;
     }
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        factTemplate    = (FactTemplate)in.readObject();
+        values          = (Object[])in.readObject();
+        hashCode        = in.readInt();
+        id              = in.readLong();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(factTemplate);
+        out.writeObject(values);
+        out.writeInt(hashCode);
+        out.writeLong(id);
+    }
+
     /**
      * Method returns the value of the given slot at the
      * id.

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactTemplate.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactTemplate.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FactTemplate.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,7 +16,6 @@
  */
 package org.drools.facttemplates;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 
 import org.drools.rule.Package;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -33,6 +33,8 @@
         name    = (String)in.readObject();
         index   = in.readInt();
         valueType   = (ValueType)in.readObject();
+        if (valueType != null)
+            valueType   = ValueType.determineValueType(valueType.getClassType());
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/DataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,14 +16,14 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
+import java.io.Externalizable;
 
 /**
  * Abstract representation of a datatype.
  * 
  * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
  */
-public interface DataType extends Serializable {
+public interface DataType extends Externalizable {
 
     /**
      * Returns true if the given value is a valid value of this data type.

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/BooleanDataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,6 +18,10 @@
 
 import org.drools.process.core.datatype.DataType;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 /**
  * Representation of a boolean datatype.
  * 
@@ -29,6 +33,12 @@
 
     private static final long serialVersionUID = 400L;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public boolean verifyDataType(final Object value) {
         if ( value instanceof Boolean ) {
             return true;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/FloatDataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,6 +18,10 @@
 
 import org.drools.process.core.datatype.DataType;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 /**
  * Representation of a float datatype.
  * 
@@ -29,6 +33,12 @@
 
     private static final long serialVersionUID = 400L;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public boolean verifyDataType(final Object value) {
         if ( value instanceof Float ) {
             return true;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/IntegerDataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,6 +18,10 @@
 
 import org.drools.process.core.datatype.DataType;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 /**
  * Representation of an integer datatype.
  * 
@@ -29,6 +33,12 @@
 
     private static final long serialVersionUID = 400L;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public boolean verifyDataType(final Object value) {
         if ( value instanceof Integer ) {
             return true;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/ListDataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -16,24 +16,34 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
+import org.drools.process.core.datatype.DataType;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.util.Iterator;
 import java.util.List;
 
-import org.drools.process.core.datatype.DataType;
-
 /**
  * Representation of a list datatype.
  * All elements in the list must have the same datatype.
  * 
  * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
  */
-public class ListDataType implements DataType, Serializable {
+public class ListDataType implements DataType {
 
     private static final long serialVersionUID = 400L;
 
     private DataType dataType;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        dataType    = (DataType)in.readObject();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject(dataType);
+    }
+
     public void setDataType(final DataType dataType) {
         this.dataType = dataType;
     }

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/StringDataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,6 +18,10 @@
 
 import org.drools.process.core.datatype.DataType;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
 /**
  * Representation of a string datatype.
  * 
@@ -29,6 +33,12 @@
 
     private static final long serialVersionUID = 400L;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public boolean verifyDataType(final Object value) {
         if ( value instanceof String ) {
             return true;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/process/core/datatype/impl/type/UndefinedDataType.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -18,6 +18,10 @@
 
 import org.drools.process.core.datatype.DataType;
 
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.io.ObjectInput;
+
 /**
  * Representation of an undefined datatype.
  * 
@@ -28,6 +32,12 @@
     private static final long serialVersionUID = 400L;
     private static UndefinedDataType instance;
 
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
     public static UndefinedDataType getInstance() {
         if (instance == null) {
             instance = new UndefinedDataType();

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/rule/Function.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/rule/Function.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/main/java/org/drools/rule/Function.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -1,6 +1,5 @@
 package org.drools.rule;
 
-import java.io.Serializable;
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;

Modified: labs/jbossrules/branches/ming-serialization/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java	2008-03-14 14:31:32 UTC (rev 18973)
+++ labs/jbossrules/branches/ming-serialization/drools-core/src/test/java/org/drools/event/RuleBaseEventListenerTest.java	2008-03-14 14:36:09 UTC (rev 18974)
@@ -234,11 +234,38 @@
         private int    beforeRuleRemoved    = 0;
         private int    afterRuleRemoved     = 0;
 
+        public TestRuleBaseListener() {
+        }
+
         public TestRuleBaseListener(String id) {
             super();
             this.id = id;
         }
 
+        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+            id  = (String)in.readObject();
+            beforePackageAdded  = in.readInt();
+            afterPackageAdded  = in.readInt();
+            beforePackageRemoved  = in.readInt();
+            afterPackageRemoved  = in.readInt();
+            beforeRuleAdded  = in.readInt();
+            afterRuleAdded  = in.readInt();
+            beforeRuleRemoved  = in.readInt();
+            afterRuleRemoved  = in.readInt();
+        }
+
+        public void writeExternal(ObjectOutput out) throws IOException {
+            out.writeObject(id);
+            out.writeInt(beforePackageAdded);
+            out.writeInt(afterPackageAdded);
+            out.writeInt(beforePackageRemoved);
+            out.writeInt(afterPackageRemoved);
+            out.writeInt(beforeRuleAdded);
+            out.writeInt(afterRuleAdded);
+            out.writeInt(beforeRuleRemoved);
+            out.writeInt(afterRuleRemoved);
+        }
+
         public void afterPackageAdded(AfterPackageAddedEvent event) {
             //            System.out.println( this.id + event );
             this.afterPackageAdded++;




More information about the jboss-svn-commits mailing list