[jboss-svn-commits] JBL Code SVN: r7422 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests drools-compiler/src/test/resources/org/drools/integrationtests drools-core/src/main/java/org/drools/base drools-core/src/main/java/org/drools/common drools-core/src/main/java/org/drools/reteoo drools-core/src/main/java/org/drools/rule drools-core/src/main/java/org/drools/spi drools-core/src/main/java/org/drools/util
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 7 08:43:49 EST 2006
Author: tirelli
Date: 2006-11-07 08:43:31 -0500 (Tue, 07 Nov 2006)
New Revision: 7422
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java
Log:
Fixing serialization issues
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -2168,7 +2168,8 @@
workingMemory.setGlobal( "list",
new ArrayList() );
- workingMemory.assertObject( new Person( "bob" ) );
+ Person bob = new Person( "bob" );
+ workingMemory.assertObject( bob );
final byte[] wm = serializeOut( workingMemory );
@@ -2176,26 +2177,27 @@
assertEquals( 1,
workingMemory.getObjects().size() );
- assertEquals( new Integer( 5 ),
+ assertEquals( bob,
workingMemory.getObjects().get( 0 ) );
- assertEquals( 1,
+ assertEquals( 2,
workingMemory.getAgenda().agendaSize() );
workingMemory.fireAllRules();
List list = (List) workingMemory.getGlobal( "list" );
- assertEquals( 1,
+ assertEquals( 3,
list.size() );
- assertEquals( new Integer( 4 ),
+ // because of agenda-groups
+ assertEquals( new Integer(4),
list.get( 0 ) );
assertEquals( 2,
workingMemory.getObjects().size() );
- assertEquals( new Integer( 5 ),
+ assertEquals( bob,
workingMemory.getObjects().get( 0 ) );
- assertEquals( "help",
+ assertEquals( new Person("help"),
workingMemory.getObjects().get( 1 ) );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl 2006-11-07 13:43:31 UTC (rev 7422)
@@ -18,10 +18,10 @@
rule "match Person 2"
agenda-group "xxx"
when
- $person : Person(name=="mark", $age1 : age )
- Cheesery( cheeses contains $person )
- Person( age < ( $age1 ) )
- Person( $age2 : age -> ( $age1 == $age2 ) )
+ $person : Person(name=="mark", $age1 : age )
+ Cheesery( cheeses contains $person )
+ Person( age < ( $age1 ) )
+ Person( $age2 : age -> ( $age1 == $age2 ) )
eval( $age1 == $age2 )
then
list.add( $person );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -33,6 +33,9 @@
public class DefaultKnowledgeHelper
implements
KnowledgeHelper {
+
+ private static final long serialVersionUID = 3692991484157215686L;
+
private Rule rule;
private Activation activation;
private Tuple tuple;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -7,9 +7,24 @@
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectStreamClass;
+import java.util.HashMap;
public class ObjectInputStreamWithLoader extends ObjectInputStream {
private final ClassLoader classLoader;
+
+ /** table mapping primitive type names to corresponding class objects */
+ private static final HashMap primClasses = new HashMap(8, 1.0F);
+ static {
+ primClasses.put("boolean", boolean.class);
+ primClasses.put("byte", byte.class);
+ primClasses.put("char", char.class);
+ primClasses.put("short", short.class);
+ primClasses.put("int", int.class);
+ primClasses.put("long", long.class);
+ primClasses.put("float", float.class);
+ primClasses.put("double", double.class);
+ primClasses.put("void", void.class);
+ }
public ObjectInputStreamWithLoader(final InputStream in,
final ClassLoader classLoader) throws IOException {
@@ -24,7 +39,11 @@
return super.resolveClass( desc );
} else {
final String name = desc.getName();
- return this.classLoader.loadClass( name );
+ Class clazz = (Class) primClasses.get( name );
+ if( clazz == null ) {
+ clazz = this.classLoader.loadClass( name );
+ }
+ return clazz;
}
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -1,9 +1,13 @@
package org.drools.reteoo;
+import java.io.Serializable;
+
import org.drools.util.ObjectHashMap;
-import org.drools.util.TupleHashTable;
-public class BetaMemory {
+public class BetaMemory implements Serializable {
+
+ private static final long serialVersionUID = -4648029105678562600L;
+
private TupleMemory tupleMemory;
private FactHandleMemory factHandleMemory;
private ObjectHashMap createdHandles;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -48,9 +48,9 @@
public class ReteooRuleBase extends AbstractRuleBase {
/**
* DO NOT CHANGE BELLOW SERIAL_VERSION_ID UNLESS YOU ARE CHANGING DROOLS VERSION
- * SERIAL_VERSION_ID=300 stands for version 3.0.0
+ * SERIAL_VERSION_ID=320 stands for version 3.2.0
*/
- private static final long serialVersionUID = 300;
+ private static final long serialVersionUID = 320;
/** The root Rete-OO for this <code>RuleBase</code>. */
private Rete rete;
@@ -220,8 +220,7 @@
super.addWorkingMemory( workingMemory,
keepReference );
- final InitialFactHandle handle = new InitialFactHandle( workingMemory.getFactHandleFactory().newFactHandle( new Serializable() {
- } ) );
+ final InitialFactHandle handle = new InitialFactHandle( workingMemory.getFactHandleFactory().newFactHandle( new InitialFactHandleDummyObject() ) );
workingMemory.queueWorkingMemoryAction( workingMemory.new WorkingMemoryReteAssertAction( handle,
false,
@@ -242,5 +241,9 @@
protected void removeRule(final Rule rule) {
this.reteooBuilder.removeRule( rule );
}
+
+ private static class InitialFactHandleDummyObject implements Serializable {
+ private static final long serialVersionUID = 1L;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -20,12 +20,9 @@
import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
import java.io.IOException;
-import java.io.InputStream;
import java.io.ObjectInput;
-import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
-import java.io.ObjectStreamClass;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -34,6 +31,7 @@
import java.util.List;
import java.util.Map;
+import org.drools.common.ObjectInputStreamWithLoader;
import org.drools.facttemplates.FactTemplate;
/**
@@ -174,27 +172,6 @@
this.rules = (Map) streamWithLoader.readObject();
}
- private static class ObjectInputStreamWithLoader extends ObjectInputStream {
- private final ClassLoader classLoader;
-
- public ObjectInputStreamWithLoader(final InputStream in,
- final ClassLoader classLoader) throws IOException {
- super( in );
- this.classLoader = classLoader;
- enableResolveObject( true );
- }
-
- protected Class resolveClass(final ObjectStreamClass desc) throws IOException,
- ClassNotFoundException {
- if ( this.classLoader == null ) {
- return super.resolveClass( desc );
- } else {
- final String name = desc.getName();
- return this.classLoader.loadClass( name );
- }
- }
- }
-
// ------------------------------------------------------------
// Instance methods
// ------------------------------------------------------------
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+import java.io.Serializable;
+
import org.drools.common.ActivationGroupNode;
import org.drools.common.LogicalDependency;
import org.drools.rule.Rule;
@@ -30,7 +32,7 @@
* @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
* @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
*/
-public interface Activation {
+public interface Activation extends Serializable {
/**
* Retrieve the <code>Rule</code> that was activated.
*
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.List;
import org.drools.FactException;
@@ -38,7 +39,7 @@
* @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
* @author <a href="mailto:mproctor at codehaus.org">mark proctor</a>
*/
-public interface KnowledgeHelper {
+public interface KnowledgeHelper extends Serializable {
/**
* Asserts an object, notice that it does not return the FactHandle
*
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+import java.io.Serializable;
+
import org.drools.common.InternalFactHandle;
import org.drools.rule.Declaration;
@@ -30,7 +32,7 @@
* @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
*
*/
-public interface Tuple {
+public interface Tuple extends Serializable {
/**
* Returns the <code>FactHandle</code> for the given column index. If the column is empty
* It returns null.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -198,6 +198,9 @@
public static class HashTableIterator
implements
Iterator {
+
+ private static final long serialVersionUID = -3058359667332106450L;
+
private AbstractHashTable hashTable;
private Entry[] table;
private int row;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java 2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java 2006-11-07 13:43:31 UTC (rev 7422)
@@ -1,5 +1,7 @@
package org.drools.util;
-public interface Iterator {
+import java.io.Serializable;
+
+public interface Iterator extends Serializable {
public Entry next();
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list