[jboss-svn-commits] JBL Code SVN: r17405 - in labs/jbossrules/branches/serialization: drools-compiler/src/test/java/org/drools/compiler and 14 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Dec 26 06:18:20 EST 2007
Author: haruki_zaemon
Date: 2007-12-26 06:18:20 -0500 (Wed, 26 Dec 2007)
New Revision: 17405
Removed:
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/Resolvable.java
Modified:
labs/jbossrules/branches/serialization/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java
labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java
labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassObjectType.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/SalienceInteger.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ValueType.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectOutputStream.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsSerializable.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Declaration.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/GroupElement.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Package.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Pattern.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Rule.java
labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/spi/PatternExtractor.java
labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/agent/FileScannerTest.java
labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/rule/LogicTransformerTest.java
labs/jbossrules/branches/serialization/drools-core/src/test/resources/correct_transform1.dat
labs/jbossrules/branches/serialization/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
labs/jbossrules/branches/serialization/drools-jbrms/src/test/java/org/drools/brms/server/PerfServiceTest.java
Log:
Fix some more tests (and some busted code in the process)
Modified: labs/jbossrules/branches/serialization/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-ant/src/main/java/org/drools/contrib/DroolsCompilerAntTask.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -1,12 +1,12 @@
/*
* Copyright 2006 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -25,6 +25,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.RuntimeDroolsException;
+import org.drools.common.DroolsObjectOutputStream;
import org.drools.brms.client.modeldriven.brl.RuleModel;
import org.drools.brms.server.util.BRDRLPersistence;
import org.drools.brms.server.util.BRXMLPersistence;
@@ -43,7 +44,7 @@
/**
* An ant task to allow rulebase compilation and serialization during a build.
- *
+ *
* @author etirelli
*/
public class DroolsCompilerAntTask extends MatchingTask {
@@ -58,10 +59,10 @@
private File toFile;
private Path classpath;
-
+
/**
* Source directory to read DRL files from
- *
+ *
* @param directory
*/
public void setSrcDir(File directory) {
@@ -70,7 +71,7 @@
/**
* File to serialize the rulebase to
- *
+ *
* @param toFile
*/
public void setToFile(File toFile) {
@@ -79,7 +80,7 @@
/**
* The classpath to use when compiling the rulebase
- *
+ *
* @param classpath
*/
public void setClasspath(Path classpath) {
@@ -88,7 +89,7 @@
/**
* Classpath to use, by reference, when compiling the rulebase
- *
+ *
* @param r
* a reference to an existing classpath
*/
@@ -98,7 +99,7 @@
/**
* Adds a path to the classpath.
- *
+ *
* @return created classpath
*/
public Path createClasspath() {
@@ -175,10 +176,10 @@
*/
private void serializeRulebase(RuleBase ruleBase)
throws FileNotFoundException, IOException {
- ObjectOutputStream outstream = null;
+ DroolsObjectOutputStream outstream = null;
try {
FileOutputStream fout = new FileOutputStream(toFile);
- outstream = new ObjectOutputStream(fout);
+ outstream = new DroolsObjectOutputStream(fout);
outstream.writeObject(ruleBase);
} finally {
if (outstream != null) {
@@ -218,7 +219,7 @@
} else {
instream = new InputStreamReader(new FileInputStream(file));
}
-
+
if (fileName.endsWith(DroolsCompilerAntTask.RULEFLOWFILEEXTENSION)) {
builder.addRuleFlow(instream);
} else if (fileName.endsWith(DroolsCompilerAntTask.XMLFILEEXTENSION)) {
@@ -355,7 +356,7 @@
/**
* Returns the list of files to be added into the rulebase
- *
+ *
* @return
*/
private String[] getFileList() {
Modified: labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -22,9 +22,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInput;
-import java.io.ObjectInputStream;
import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
import java.io.StringReader;
import java.lang.reflect.Field;
import java.util.HashMap;
@@ -46,6 +44,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.common.LogicalDependency;
import org.drools.common.RuleFlowGroupNode;
+import org.drools.common.DroolsObjectOutputStream;
import org.drools.commons.jci.compilers.EclipseJavaCompiler;
import org.drools.commons.jci.compilers.JaninoJavaCompiler;
import org.drools.commons.jci.compilers.JavaCompiler;
@@ -279,7 +278,7 @@
private byte[] serializeOut(final Object obj) throws IOException {
// Serialize to a byte array
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
- final ObjectOutput out = new ObjectOutputStream( bos );
+ final ObjectOutput out = new DroolsObjectOutputStream( bos );
out.writeObject( obj );
out.close();
@@ -1210,7 +1209,7 @@
//now serialization
ByteArrayOutputStream data = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream( data );
+ DroolsObjectOutputStream out = new DroolsObjectOutputStream( data );
out.writeObject( pkg );
DroolsObjectInputStream objIn = new DroolsObjectInputStream( new ByteArrayInputStream( data.toByteArray() ) );
Modified: labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -5,9 +5,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInput;
-import java.io.ObjectInputStream;
import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
import java.io.Reader;
import java.net.URL;
import java.net.URLClassLoader;
@@ -28,6 +26,8 @@
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.WorkingMemory;
+import org.drools.common.DroolsObjectOutputStream;
+import org.drools.common.DroolsObjectInputStream;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.rule.Package;
@@ -110,7 +110,7 @@
ruleBase.addPackage( pkg3 );
// Package 3 has a rule working on Person instances.
- // As we added person instance in advance, rule should fire now
+ // As we added person instance in advance, rule should fire now
Assert.assertEquals( "Rule from package 3 should have been fired",
"match Person ok",
@@ -196,7 +196,7 @@
"like cheese" );
// reteooRuleBase.removeRule( "org.drools.test",
- // "like cheese2" );
+ // "like cheese2" );
final Cheese muzzarela = new Cheese( "muzzarela",
5 );
@@ -257,7 +257,7 @@
public void testDynamicFunction() throws Exception {
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicFunction1.drl" ) ) );
-
+
//FIXME JBRULES-1258 serialising a package breaks function removal -- left the serialisation commented out for now
//final Package pkg = serialisePackage( builder.getPackage() );
final Package pkg = builder.getPackage();
@@ -527,7 +527,7 @@
return c;
}
}
-
+
protected Package serialisePackage(Package pkg) {
try {
byte[] bytes = serializeOut( pkg );
@@ -539,7 +539,7 @@
protected Object serializeIn(final byte[] bytes) throws IOException,
ClassNotFoundException {
- final ObjectInput in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
+ final ObjectInput in = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ) );
final Object obj = in.readObject();
in.close();
return obj;
@@ -548,7 +548,7 @@
protected byte[] serializeOut(final Object obj) throws IOException {
// Serialize to a byte array
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
- final ObjectOutput out = new ObjectOutputStream( bos );
+ final ObjectOutput out = new DroolsObjectOutputStream( bos );
out.writeObject( obj );
out.close();
Modified: labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -4,12 +4,12 @@
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.io.StringReader;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
+import org.drools.common.DroolsObjectOutputStream;
+import org.drools.common.DroolsObjectInputStream;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
@@ -80,7 +80,7 @@
f.delete();
time = System.currentTimeMillis();
- ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
+ DroolsObjectOutputStream out = new DroolsObjectOutputStream(new FileOutputStream(f));
out.writeObject(rb);
out.flush();
out.close();
@@ -88,7 +88,7 @@
+ (System.currentTimeMillis() - time));
time = System.currentTimeMillis();
- ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));
+ DroolsObjectInputStream in = new DroolsObjectInputStream(new FileInputStream(f));
RuleBase rb_ = (RuleBase) in.readObject();
System.err.println("Time taken de-serializing rulebase: "
+ (System.currentTimeMillis() - time));
Modified: labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -21,9 +21,7 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInput;
-import java.io.ObjectInputStream;
import java.io.ObjectOutput;
-import java.io.ObjectOutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.math.BigDecimal;
@@ -80,6 +78,8 @@
import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.base.ClassObjectFilter;
import org.drools.common.AbstractWorkingMemory;
+import org.drools.common.DroolsObjectOutputStream;
+import org.drools.common.DroolsObjectInputStream;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsError;
import org.drools.compiler.DroolsParserException;
@@ -1813,7 +1813,7 @@
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
}
-
+
public void testSerializeWorkingMemoryAndRuleBase1() throws Exception {
// has the first newStatefulSession before the ruleBase is serialised
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
@@ -1827,8 +1827,8 @@
RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
+ WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
Map map = new HashMap();
map.put( "x", ruleBase );
final byte[] ast = serializeOut( map );
@@ -1837,25 +1837,25 @@
-
+
final byte[] wm = serializeOut( workingMemory );
workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
ruleBase.addPackage( pkg );
- workingMemory.setGlobal( "list",
+ workingMemory.setGlobal( "list",
new ArrayList() );
-
+
final Person bob = new Person( "bob" );
workingMemory.insert( bob );
-
+
final Rule[] rules = ruleBase.getPackages()[0].getRules();
-
+
assertEquals( 4,
rules.length );
@@ -1868,8 +1868,8 @@
assertEquals( "match Integer",
rules[3].getName() );
-
+
assertEquals( 1,
IteratorToList.convert( workingMemory.iterateObjects() ).size() );
assertEquals( bob,
@@ -1893,7 +1893,7 @@
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
- }
+ }
public void testSerializeWorkingMemoryAndRuleBase2() throws Exception {
// has the first newStatefulSession after the ruleBase is serialised
@@ -1906,34 +1906,34 @@
assertEquals( 0,
builder.getErrors().getErrors().length );
- RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();
-
+ RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();
+
Map map = new HashMap();
map.put( "x", ruleBase );
final byte[] ast = serializeOut( map );
map = (Map) serializeIn( ast );
ruleBase = (RuleBase) map.get( "x" );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
+ WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
final byte[] wm = serializeOut( workingMemory );
workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
ruleBase.addPackage( pkg );
- workingMemory.setGlobal( "list",
+ workingMemory.setGlobal( "list",
new ArrayList() );
-
+
final Person bob = new Person( "bob" );
workingMemory.insert( bob );
-
+
final Rule[] rules = ruleBase.getPackages()[0].getRules();
-
+
assertEquals( 4,
rules.length );
@@ -1946,8 +1946,8 @@
assertEquals( "match Integer",
rules[3].getName() );
-
+
assertEquals( 1,
IteratorToList.convert( workingMemory.iterateObjects() ).size() );
assertEquals( bob,
@@ -1971,10 +1971,10 @@
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
- }
-
-
-
+ }
+
+
+
public void testEmptyRule() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_EmptyRule.drl" ) ) );
@@ -2046,7 +2046,7 @@
protected Object serializeIn(final byte[] bytes) throws IOException,
ClassNotFoundException {
- final ObjectInput in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
+ final ObjectInput in = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ) );
final Object obj = in.readObject();
in.close();
return obj;
@@ -2055,7 +2055,7 @@
protected byte[] serializeOut(final Object obj) throws IOException {
// Serialize to a byte array
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
- final ObjectOutput out = new ObjectOutputStream( bos );
+ final ObjectOutput out = new DroolsObjectOutputStream( bos );
out.writeObject( obj );
out.close();
@@ -4553,10 +4553,10 @@
public void testConsequenceBuilderException() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ConsequenceBuilderException.drl" ) ) );
-
+
assertTrue( builder.hasErrors() );
}
-
+
public void testRuntimeTypeCoercion() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_RuntimeTypeCoercion.drl" ) ) );
@@ -4569,22 +4569,22 @@
final List list = new ArrayList();
workingMemory.setGlobal( "results",
list );
-
+
final PolymorphicFact fact = new PolymorphicFact( new Integer( 10 ) );
final FactHandle handle = workingMemory.insert( fact );
-
+
workingMemory.fireAllRules();
-
+
assertEquals( 1, list.size() );
assertEquals( fact.getData(), list.get( 0 ) );
-
+
fact.setData( "10" );
workingMemory.update( handle, fact );
workingMemory.fireAllRules();
-
+
assertEquals( 2, list.size() );
assertEquals( fact.getData(), list.get( 1 ) );
-
+
try {
fact.setData( new Boolean(true) );
workingMemory.update( handle, fact );
@@ -4592,7 +4592,7 @@
} catch( ClassCastException cce ) {
// success, as can't use "<" to compare to a boolean
}
-
+
}
public void testRuntimeTypeCoercion2() throws Exception {
@@ -4607,23 +4607,23 @@
final List list = new ArrayList();
workingMemory.setGlobal( "results",
list );
-
+
final Primitives fact = new Primitives( );
fact.setBooleanPrimitive( true );
fact.setBooleanWrapper( new Boolean(true) );
fact.setObject( new Boolean(true) );
fact.setCharPrimitive( 'X' );
final FactHandle handle = workingMemory.insert( fact );
-
+
workingMemory.fireAllRules();
-
+
int index = 0;
assertEquals( list.toString(), 4, list.size() );
assertEquals( "boolean", list.get( index++ ));
assertEquals( "boolean wrapper", list.get( index++ ));
assertEquals( "boolean object", list.get( index++ ));
assertEquals( "char", list.get( index++ ));
-
+
fact.setBooleanPrimitive( false );
fact.setBooleanWrapper( null );
fact.setCharPrimitive( '\0' );
@@ -4632,13 +4632,13 @@
workingMemory.fireAllRules();
assertEquals( 5, list.size() );
assertEquals( "char object", list.get( index++ ) );
-
+
fact.setObject( null );
workingMemory.update( handle, fact );
workingMemory.fireAllRules();
assertEquals( 6, list.size() );
assertEquals( "null object", list.get( index++ ) );
-
+
}
public void testAlphaEvalWithOrCE() throws Exception {
@@ -4653,7 +4653,7 @@
final List list = new ArrayList();
workingMemory.setGlobal( "results",
list );
-
+
FactA a = new FactA();
a.setField1( "a value" );
@@ -4663,7 +4663,7 @@
workingMemory.fireAllRules();
- assertEquals( "should not have fired",
+ assertEquals( "should not have fired",
0,
list.size() );
}
@@ -4689,11 +4689,11 @@
workingMemory.fireAllRules( 2 );
- assertEquals( "should have fired only once",
+ assertEquals( "should have fired only once",
1,
list.size() );
}
-
+
// this test requires mvel 1.2.19. Leaving it commented until mvel is released.
public void FIXME_testJavaModifyBlock() throws Exception {
final PackageBuilder builder = new PackageBuilder();
@@ -4716,11 +4716,11 @@
workingMemory.fireAllRules( 2 );
- assertEquals( "should have fired only once",
+ assertEquals( "should have fired only once",
1,
list.size() );
assertEquals( "full", bob.getStatus() );
assertEquals( 31, bob.getAge() );
}
-
+
}
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryFileLogger.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -2,13 +2,13 @@
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -24,12 +24,6 @@
import org.drools.WorkingMemoryEventManager;
import org.drools.audit.event.LogEvent;
-import org.drools.event.AfterFunctionRemovedEvent;
-import org.drools.event.AfterRuleBaseLockedEvent;
-import org.drools.event.AfterRuleBaseUnlockedEvent;
-import org.drools.event.BeforeFunctionRemovedEvent;
-import org.drools.event.BeforeRuleBaseLockedEvent;
-import org.drools.event.BeforeRuleBaseUnlockedEvent;
import com.thoughtworks.xstream.XStream;
@@ -41,12 +35,12 @@
* the events logged serialized to XML using XStream.
* Every time a new logger is created, the old event log will
* be overwritten.
- *
+ *
* TODO: make this class more scalable, for example
* - logging to several files if log becomes too large
* - automatically write updates to file at certain time intervals
* - ...
- *
+ *
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen </a>
*/
public class WorkingMemoryFileLogger extends WorkingMemoryLogger {
@@ -70,9 +64,9 @@
* to the file name.
* The default is an event.log file in the current working directory.
* This can be a path relative to the current working directory
- * (e.g. "mydir/subDir/myLogFile"), or an absolute path
+ * (e.g. "mydir/subDir/myLogFile"), or an absolute path
* (e.g. "C:/myLogFile").
- *
+ *
* @param fileName The name of the file the events should be logged in.
*/
public void setFileName(final String fileName) {
@@ -110,7 +104,7 @@
* Sets the maximum number of log events that are allowed in memory.
* If this number is reached, all events are written to file.
* The default is 1000.
- *
+ *
* @param maxEventsInMemory The maximum number of events in memory.
*/
public void setMaxEventsInMemory(final int maxEventsInMemory) {
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/audit/WorkingMemoryInMemoryLogger.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -2,13 +2,13 @@
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -23,21 +23,13 @@
import org.drools.WorkingMemory;
import org.drools.audit.event.LogEvent;
-import org.drools.event.AfterPackageAddedEvent;
-import org.drools.event.AfterPackageRemovedEvent;
-import org.drools.event.AfterRuleAddedEvent;
-import org.drools.event.AfterRuleRemovedEvent;
-import org.drools.event.BeforePackageAddedEvent;
-import org.drools.event.BeforePackageRemovedEvent;
-import org.drools.event.BeforeRuleAddedEvent;
-import org.drools.event.BeforeRuleRemovedEvent;
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.
- *
+ *
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen </a>
*/
public class WorkingMemoryInMemoryLogger extends WorkingMemoryLogger {
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/BaseEvaluator.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -39,6 +39,7 @@
private Operator operator;
private ValueType type;
+ public static final long serialVersionUID = 400;
public BaseEvaluator(final ValueType type,
final Operator operator) {
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -44,6 +44,7 @@
private String fieldName;
private Class clazz;
private transient FieldExtractor extractor;
+ public static final long serialVersionUID = 400;
public ClassFieldExtractor(final Class clazz,
final String fieldName) {
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassObjectType.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassObjectType.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ClassObjectType.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -41,6 +41,7 @@
protected ValueType valueType;
private boolean isEvent;
+ public static final long serialVersionUID = 400;
// ------------------------------------------------------------
// Constructors
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/SalienceInteger.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/SalienceInteger.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/SalienceInteger.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -18,6 +18,7 @@
public static final Salience DEFAULT_SALIENCE = new SalienceInteger(DEFAULT_VALUE);
private int value;
+ public static final long serialVersionUID = 400;
public SalienceInteger(int value) {
this.value = value;
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ValueType.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ValueType.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/ValueType.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -94,6 +94,7 @@
private String name;
private Class classType;
private int simpleType;
+ public static final long serialVersionUID = 400;
private ValueType(final String name,
final Class classType,
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/evaluators/Operator.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -33,6 +33,7 @@
false );
public static final Operator GREATER_OR_EQUAL = addOperatorToRegistry( ">=",
false );
+ public static final long serialVersionUID = 400;
/**
* Creates a new Operator instance for the given parameters,
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -37,6 +37,7 @@
private boolean isBoolean;
private boolean isCharacter;
private boolean isString;
+ public static final long serialVersionUID = 400;
public ObjectFieldImpl(final Object value) {
setValue(value);
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -16,14 +16,8 @@
* limitations under the License.
*/
-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.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
@@ -45,7 +39,6 @@
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.rule.CompositePackageClassLoader;
@@ -71,7 +64,7 @@
abstract public class AbstractRuleBase
implements
InternalRuleBase,
- Externalizable {
+ DroolsSerializable {
// ------------------------------------------------------------
// Instance members
// ------------------------------------------------------------
@@ -119,15 +112,8 @@
private int additionsSinceLock;
private int removalsSinceLock;
+ public static final long serialVersionUID = 400;
- /**
- * Default constructor - for Externalizable. This should never be used by a user, as it
- * will result in an invalid state for the instance.
- */
- public AbstractRuleBase() {
-
- }
-
public synchronized int nextWorkingMemoryCounter() {
return this.workingMemoryCounter++;
}
@@ -173,13 +159,9 @@
* The Package uses PackageCompilationData to hold a reference to the generated bytecode. The generated bytecode must be restored before any Rules.
*
*/
- public void doWriteExternal(final ObjectOutput stream) throws IOException {
- stream.writeObject( this.pkgs );
+ public void droolsWriteObject(DroolsObjectOutputStream out) throws IOException {
+ out.writeObject( this.pkgs );
- // Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
- // a byte[]
- final ByteArrayOutputStream bos = new ByteArrayOutputStream();
- final ObjectOutput out = new ObjectOutputStream( bos );
out.writeObject( this.id );
out.writeObject( this.processes );
out.writeObject( this.agendaGroupRuleTotals );
@@ -189,8 +171,6 @@
this.eventSupport.removeEventListener( RuleBaseEventListener.class );
out.writeObject( this.eventSupport );
-
- stream.writeObject( bos.toByteArray() );
}
/**
@@ -199,20 +179,13 @@
* A custom ObjectInputStream, able to resolve classes against the bytecode in the PackageCompilationData, is used to restore the Rules.
*
*/
- public void doReadExternal(final ObjectInput stream) throws IOException,
- ClassNotFoundException {
+ public Object droolsReadObject(DroolsObjectInputStream in) throws IOException, ClassNotFoundException {
// PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
- this.pkgs = (Map) stream.readObject();
+ this.pkgs = (Map) in.readObject();
- if ( stream instanceof DroolsObjectInputStream ) {
- final DroolsObjectInputStream parentStream = (DroolsObjectInputStream) stream;
- parentStream.setRuleBase( this );
- this.packageClassLoader = new CompositePackageClassLoader( parentStream.getClassLoader() );
- this.classLoader = new MapBackedClassLoader( parentStream.getClassLoader() );
- } else {
- this.packageClassLoader = new CompositePackageClassLoader( Thread.currentThread().getContextClassLoader() );
- this.classLoader = new MapBackedClassLoader( Thread.currentThread().getContextClassLoader() );
- }
+ in.setRuleBase( this );
+ this.packageClassLoader = new CompositePackageClassLoader( in.getClassLoader() );
+ this.classLoader = new MapBackedClassLoader( in.getClassLoader() );
this.packageClassLoader.addClassLoader( this.classLoader );
this.objenesis = createObjenesis();
@@ -221,18 +194,19 @@
this.packageClassLoader.addClassLoader( ((Package) it.next()).getPackageCompilationData().getClassLoader() );
}
- this.id = (String) stream.readObject();
- this.processes = (Map) stream.readObject();
- this.agendaGroupRuleTotals = (Map) stream.readObject();
- this.factHandleFactory = (FactHandleFactory) stream.readObject();
- this.globals = (Map) stream.readObject();
+ this.id = (String) in.readObject();
+ this.processes = (Map) in.readObject();
+ this.agendaGroupRuleTotals = (Map) in.readObject();
+ this.factHandleFactory = (FactHandleFactory) in.readObject();
+ this.globals = (Map) in.readObject();
- this.config = (RuleBaseConfiguration) stream.readObject();
+ this.config = (RuleBaseConfiguration) in.readObject();
this.config.setClassLoader(this.packageClassLoader );
- this.eventSupport = (RuleBaseEventSupport) stream.readObject();
+ this.eventSupport = (RuleBaseEventSupport) in.readObject();
this.eventSupport.setRuleBase( this );
this.statefulSessions = new ObjectHashSet();
+ return this;
}
/**
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -98,25 +98,25 @@
switch (type) {
case RT_SERIALIZABLE:
- object = readSerializable();
+ object = readSerializable(handle);
break;
case RT_EXTERNALIZABLE:
- object = readExternalizable();
+ object = readExternalizable(handle);
break;
case RT_STRING:
- object = readString();
+ object = readString(handle);
break;
case RT_MAP:
- object = readMap();
+ object = readMap(handle);
break;
case RT_COLLECTION:
- object = readCollection();
+ object = readCollection(handle);
break;
case RT_ARRAY:
- object = readArray();
+ object = readArray(handle);
break;
case RT_CLASS:
- object = readClass();
+ object = readClass(handle);
break;
case RT_REFERENCE:
return readReference(handle);
@@ -124,15 +124,15 @@
throw new StreamCorruptedException("Unsupported object type: " + type);
}
- registerObject(handle, object);
return object;
}
- private Object readArray() throws IOException, ClassNotFoundException {
+ private Object readArray(int handle) throws IOException, ClassNotFoundException {
Class clazz = (Class) readObject();
int length = readInt();
Class componentType = clazz.getComponentType();
Object array = Array.newInstance(componentType, length);
+ registerObject(handle, array);
if (componentType.isPrimitive()) {
readPrimitiveArray(array, length, componentType);
} else {
@@ -231,39 +231,44 @@
return Collections.EMPTY_MAP;
}
- private Object readSerializable() throws ClassNotFoundException, IOException {
+ private Object readSerializable(int handle) throws ClassNotFoundException, IOException {
Class clazz = (Class) readObject();
ObjectInstantiator instantiator = OBJENESIS.getInstantiatorOf(clazz);
DroolsSerializable serializable = (DroolsSerializable) instantiator.newInstance();
- return serializable.droolsReadObject(this);
+ registerObject(handle, serializable);
+ Object replacement = serializable.droolsReadObject(this);
+ if (replacement != null) {
+ serializable = (DroolsSerializable) replacement;
+ registerObject(handle, serializable);
+ }
+ return serializable;
}
- private Object readExternalizable() throws ClassNotFoundException, IOException {
+ private Object readExternalizable(int handle) throws ClassNotFoundException, IOException {
Class clazz = (Class) readObject();
Externalizable externalizable;
try {
externalizable = (Externalizable) clazz.newInstance();
} catch (InstantiationException e) {
- InvalidClassException exception = new InvalidClassException(clazz.getName());
- exception.initCause(e);
- throw exception;
+ throw newInvalidClassException(clazz, e);
} catch (IllegalAccessException e) {
- InvalidClassException exception = new InvalidClassException(clazz.getName());
- exception.initCause(e);
- throw exception;
+ throw newInvalidClassException(clazz, e);
}
+ registerObject(handle, externalizable);
externalizable.readExternal(this);
return externalizable;
}
- private String readString() throws IOException {
- return readUTF();
+ private String readString(int handle) throws IOException {
+ String string = readUTF();
+ registerObject(handle, string);
+ return string;
}
- private Map readMap() throws IOException, ClassNotFoundException {
+ private Map readMap(int handle) throws IOException, ClassNotFoundException {
Class clazz = (Class) readObject();
int size = readInt();
- Map map = (Map) createCollection(clazz, size);
+ Map map = (Map) newCollection(handle, clazz, size);
for (int i = 0; i < size; ++i) {
Object key = readObject();
Object value = readObject();
@@ -272,38 +277,43 @@
return map;
}
- private Collection readCollection() throws IOException, ClassNotFoundException {
+ private Collection readCollection(int handle) throws IOException, ClassNotFoundException {
Class clazz = (Class) readObject();
int size = readInt();
- Collection collection = (Collection) createCollection(clazz, size);
+ Collection collection = (Collection) newCollection(handle, clazz, size);
for (int i = 0; i < size; ++i) {
collection.add(readObject());
}
return collection;
}
- private Object createCollection(Class clazz, int size) throws ClassNotFoundException, IOException {
+ private Object newCollection(int handle, Class clazz, int size) throws ClassNotFoundException, IOException {
+ Object collection;
try {
Constructor constructor = clazz.getConstructor(Integer.TYPE);
- return constructor.newInstance(size);
+ collection = constructor.newInstance(size);
} catch (InstantiationException e) {
- throw new IllegalStateException(e);
+ throw newInvalidClassException(clazz, e);
} catch (IllegalAccessException e) {
- throw new IllegalStateException(e);
+ throw newInvalidClassException(clazz, e);
} catch (InvocationTargetException e) {
- throw new IllegalStateException(e);
+ throw newInvalidClassException(clazz, e);
} catch (NoSuchMethodException e) {
- throw new IllegalStateException(e);
+ throw newInvalidClassException(clazz, e);
}
+ registerObject(handle, collection);
+ return collection;
}
private int readHandle() throws IOException {
return readInt();
}
- private Class readClass() throws IOException, ClassNotFoundException {
+ private Class readClass(int handle) throws IOException, ClassNotFoundException {
String className = (String) readObject();
- return this.classLoader.loadClass(className);
+ Class clazz = classLoader.loadClass(className);
+ registerObject(handle, clazz);
+ return clazz;
}
private byte readRecordType() throws IOException {
@@ -323,4 +333,10 @@
private void registerObject(int handle, Object object) {
objectsByHandle.put(handle, object);
}
+
+ private InvalidClassException newInvalidClassException(Class clazz, Throwable cause) {
+ InvalidClassException exception = new InvalidClassException(clazz.getName());
+ exception.initCause(cause);
+ return exception;
+ }
}
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectOutputStream.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectOutputStream.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsObjectOutputStream.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -20,7 +20,6 @@
private static final Class EMPTY_LIST_CLASS = Collections.EMPTY_LIST.getClass();
private final Map handlesByObject = new IdentityHashMap();
- private int handleCount = 0;
public DroolsObjectOutputStream(OutputStream stream) throws IOException {
super(stream);
@@ -273,7 +272,7 @@
private int registerObject(Object object) {
Integer handle = (Integer) handlesByObject.get(object);
if (handle == null) {
- handle = ++handleCount;
+ handle = handlesByObject.size() + 1;
handlesByObject.put(object, handle);
handle = -handle;
}
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsSerializable.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsSerializable.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/DroolsSerializable.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -1,8 +1,9 @@
package org.drools.common;
import java.io.IOException;
+import java.io.Serializable;
-public interface DroolsSerializable {
+public interface DroolsSerializable extends Serializable {
void droolsWriteObject(DroolsObjectOutputStream out) throws IOException;
Object droolsReadObject(DroolsObjectInputStream in) throws IOException, ClassNotFoundException;
Deleted: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/Resolvable.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/Resolvable.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/common/Resolvable.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -1,7 +0,0 @@
-package org.drools.common;
-
-import java.io.Externalizable;
-
-public interface Resolvable extends Externalizable {
- public Object readResolve();
-}
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -2,13 +2,13 @@
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,8 +17,6 @@
*/
import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
import java.io.Serializable;
import java.util.Iterator;
@@ -34,6 +32,7 @@
import org.drools.common.DefaultFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
+import org.drools.common.DroolsObjectInputStream;
import org.drools.concurrent.CommandExecutor;
import org.drools.concurrent.ExecutorService;
import org.drools.event.RuleBaseEventListener;
@@ -47,39 +46,25 @@
/**
* Implementation of <code>RuleBase</code>.
- *
+ *
* @author <a href="mailto:bob at werken.com">bob mcwhirter</a>
- * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
- *
+ * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
+ *
* @version $Id: RuleBaseImpl.java,v 1.5 2005/08/14 22:44:12 mproctor Exp $
*/
public class ReteooRuleBase extends AbstractRuleBase {
- /**
- * DO NOT CHANGE BELLOW SERIAL_VERSION_ID UNLESS YOU ARE CHANGING DROOLS VERSION
- * SERIAL_VERSION_ID=320 stands for version 3.2.0
- */
- private static final long serialVersionUID = 400L;
-
/** The root Rete-OO for this <code>RuleBase</code>. */
private transient Rete rete;
private ReteooBuilder reteooBuilder;
-
+
// ------------------------------------------------------------
// Constructors
// ------------------------------------------------------------
/**
- * Default constructor - for Externalizable. This should never be used by a user, as it
- * will result in an invalid state for the instance.
- */
- public ReteooRuleBase() {
-
- }
-
- /**
* Construct.
- *
+ *
* @param rete
* The rete network.
*/
@@ -117,7 +102,7 @@
/**
* Construct.
- *
+ *
* @param rete
* The rete network.
*/
@@ -132,34 +117,27 @@
}
/**
- * Handles the write serialization of the Package. Patterns in Rules may reference generated data which cannot be serialized by default methods.
- * The Package uses PackageCompilationData to hold a reference to the generated bytecode. The generated bytecode must be restored before any Rules.
- *
- */
- public void writeExternal(final ObjectOutput stream) throws IOException {
- doWriteExternal( stream );
- }
-
- /**
* Handles the read serialization of the Package. Patterns in Rules may reference generated data which cannot be serialized by default methods.
* The Package uses PackageCompilationData to hold a reference to the generated bytecode; which must be restored before any Rules.
* A custom ObjectInputStream, able to resolve classes against the bytecode in the PackageCompilationData, is used to restore the Rules.
- *
+ *
*/
- public void readExternal(final ObjectInput stream) throws IOException,
+ public Object droolsReadObject(DroolsObjectInputStream in) throws IOException,
ClassNotFoundException {
- doReadExternal( stream );
-
+ super.droolsReadObject( in );
+
// rebuild the Rete network from the pkg information
this.reteooBuilder = new ReteooBuilder( this );
- this.rete = new Rete( this );
- synchronized ( this.pkgs ) {
+ this.rete = new Rete( this );
+ synchronized ( this.pkgs ) {
for (Package pkg : this.pkgs.values() ) {
for ( Rule rule : pkg.getRules() ) {
addRule( rule );
}
}
}
+
+ return this;
}
// ------------------------------------------------------------
@@ -168,27 +146,27 @@
/**
* Retrieve the Rete-OO network for this <code>RuleBase</code>.
- *
+ *
* @return The RETE-OO network.
*/
public Rete getRete() {
return this.rete;
}
-
+
public ReteooBuilder getReteooBuilder() {
return this.reteooBuilder;
}
/**
* Assert a fact object.
- *
+ *
* @param handle
* The handle.
* @param object
* The fact.
* @param workingMemory
* The working-memory.
- *
+ *
* @throws FactException
* If an error occurs while performing the assertion.
*/
@@ -203,12 +181,12 @@
/**
* Retract a fact object.
- *
+ *
* @param handle
* The handle.
* @param workingMemory
* The working-memory.
- *
+ *
* @throws FactException
* If an error occurs while performing the retraction.
*/
@@ -223,15 +201,15 @@
public synchronized StatefulSession newStatefulSession( final boolean keepReference ) {
return newStatefulSession( keepReference, null );
}
-
+
public synchronized TemporalSession newTemporalSession( final ClockType clockType ) {
return (TemporalSession) newStatefulSession( true, clockType);
}
-
+
public synchronized TemporalSession newTemporalSession( final boolean keepReference, final ClockType clockType ) {
return (TemporalSession) newStatefulSession( keepReference, clockType );
}
-
+
/**
* @see RuleBase
*/
@@ -259,7 +237,7 @@
if ( keepReference ) {
super.addStatefulSession( session );
for( Iterator it = session.getRuleBaseUpdateListeners().iterator(); it.hasNext(); ) {
- addEventListener( (RuleBaseEventListener) it.next() );
+ addEventListener( (RuleBaseEventListener) it.next() );
}
}
@@ -271,10 +249,10 @@
null,
null ) );
}
-
+
return session;
}
-
+
public StatelessSession newStatelessSession() {
//orders the rules
@@ -301,5 +279,5 @@
Serializable {
private static final long serialVersionUID = 400L;
}
-
+
}
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Declaration.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Declaration.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Declaration.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -92,6 +92,7 @@
private Pattern pattern;
private boolean internalFact;
+ public static final long serialVersionUID = 400;
// ------------------------------------------------------------
// Constructors
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/GroupElement.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/GroupElement.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/GroupElement.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -30,7 +30,6 @@
import org.drools.common.DroolsObjectInputStream;
public class GroupElement extends ConditionalElement implements DroolsSerializable {
-
public static final Type AND = new AndType();
public static final Type OR = new OrType();
public static final Type EXISTS = new ExistsType();
@@ -38,6 +37,7 @@
private Type type;
private List children;
+ public static final long serialVersionUID = 400;
public GroupElement() {
this( AND );
@@ -353,7 +353,8 @@
private static abstract class AbstractType
implements
Type,
- DroolsSerializable {
+ DroolsSerializable {
+ private static final long serialVersionUID = 400;
/**
* @inheritDoc
@@ -403,6 +404,7 @@
* An AND CE type
*/
private static class AndType extends AbstractType {
+ private static final long serialVersionUID = 400;
AndType() {
}
@@ -447,6 +449,7 @@
* An OR CE type
*/
private static class OrType extends AbstractType {
+ private static final long serialVersionUID = 400;
OrType() {
}
@@ -491,6 +494,7 @@
* A NOT CE type
*/
private static class NotType extends AbstractType {
+ private static final long serialVersionUID = 400;
NotType() {
}
@@ -542,6 +546,7 @@
* An EXISTS CE type
*/
private static class ExistsType extends AbstractType {
+ private static final long serialVersionUID = 400;
ExistsType() {
}
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/ImportDeclaration.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -33,6 +33,7 @@
public class ImportDeclaration implements DroolsSerializable {
private String target;
private boolean isEvent;
+ public static final long serialVersionUID = 400;
/**
* Creates an import declaration for the given target.
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -36,6 +36,7 @@
private FieldExtractor extractor;
private LiteralRestriction restriction;
+ public static final long serialVersionUID = 400;
public LiteralConstraint(final FieldExtractor extractor,
final Evaluator evaluator,
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -42,6 +42,7 @@
private Evaluator evaluator;
private LiteralContextEntry contextEntry;
+ public static final long serialVersionUID = 400;
public LiteralRestriction(final FieldValue field,
final Evaluator evaluator,
@@ -152,6 +153,7 @@
public FieldExtractor extractor;
public Object object;
public ContextEntry next;
+ public static final long serialVersionUID = 400;
public LiteralContextEntry(final FieldExtractor extractor) {
this.extractor = extractor;
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Package.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Package.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -79,6 +79,7 @@
/** This will keep a summary error message as to why this package is not valid */
private String errorSummary;
+ public static final long serialVersionUID = 400;
// ------------------------------------------------------------
// Constructors
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -63,6 +63,7 @@
private transient ClassLoader parentClassLoader;
private boolean dirty;
+ public static final long serialVersionUID = 400;
static {
PROTECTION_DOMAIN = (ProtectionDomain) AccessController.doPrivileged( new PrivilegedAction() {
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Pattern.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Pattern.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Pattern.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -47,6 +47,7 @@
// this is the offset of the related fact inside a tuple. i.e:
// the position of the related fact inside the tuple;
private int offset;
+ public static final long serialVersionUID = 400;
public Pattern(final int index,
final ObjectType objectType) {
@@ -277,6 +278,7 @@
out.writeObject(declarations);
out.writeInt(index);
out.writeObject(source);
+ out.writeInt(offset);
}
public Object droolsReadObject(DroolsObjectInputStream in) throws IOException, ClassNotFoundException {
@@ -286,6 +288,7 @@
declarations = (Map) in.readObject();
index = in.readInt();
source = (PatternSource) in.readObject();
+ offset = in.readInt();
return this;
}
}
\ No newline at end of file
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Rule.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/rule/Rule.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -102,6 +102,7 @@
private Calendar dateExpires;
private boolean enabled;
+ public static final long serialVersionUID = 400;
// ------------------------------------------------------------
// Constructors
Modified: labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/spi/PatternExtractor.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/spi/PatternExtractor.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/main/java/org/drools/spi/PatternExtractor.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -36,6 +36,7 @@
DroolsSerializable {
private ObjectType objectType;
+ public static final long serialVersionUID = 400;
public PatternExtractor(final ObjectType objectType) {
this.objectType = objectType;
Modified: labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/agent/FileScannerTest.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/agent/FileScannerTest.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/agent/FileScannerTest.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -1,10 +1,6 @@
package org.drools.agent;
import java.io.File;
-import java.io.FileOutputStream;
-import java.io.ObjectOutputStream;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -19,7 +15,7 @@
public void testHasChanged() {
Map lastMod = new HashMap();
-
+
FileScanner scan = new FileScanner();
assertTrue(scan.hasChanged( "/goo/ber", lastMod, 42 ));
@@ -29,33 +25,33 @@
assertFalse(scan.hasChanged( "/goo/baaaa", lastMod, 42 ));
assertFalse(scan.hasChanged( "/goo/ber", lastMod, 42 ));
-
+
assertTrue(scan.hasChanged( "/goo/ber", lastMod, 400 ));
assertFalse(scan.hasChanged( "/goo/baaaa", lastMod, 42 ));
assertTrue(scan.hasChanged( "/goo/baaaa", lastMod, 69 ));
}
-
+
public void testScanAndLoad() throws Exception {
Package p1 = new Package("p1");
Package p2 = new Package("p2");
-
+
File dir = RuleBaseAssemblerTest.getTempDirectory();
File p1f = new File(dir, "p1.pkg");
File p2f = new File(dir, "p2.pkg");
-
+
RuleBaseAssemblerTest.writePackage( p1, p1f );
RuleBaseAssemblerTest.writePackage( p2, p2f);
-
+
FileScanner scan = new FileScanner();
Properties props = new Properties();
props.setProperty( RuleAgent.FILES, p1f.getPath() + " " + p2f.getPath() );
scan.configure( props );
-
+
RuleBase rb = RuleBaseFactory.newRuleBase();
PackageProvider.applyChanges( rb, true, scan.loadPackageChanges(), new MockListener() );
-
-
-
+
+
+
assertEquals(2, rb.getPackages().length);
assertTrue("p1".equals(rb.getPackages()[0].getName()) || "p1".equals(rb.getPackages()[1].getName()));
assertTrue("p2".equals(rb.getPackages()[0].getName()) || "p2".equals(rb.getPackages()[1].getName()));
@@ -72,32 +68,32 @@
assertEquals(2, rb.getPackages().length);
assertTrue("p1".equals(rb.getPackages()[0].getName()) || "p1".equals(rb.getPackages()[1].getName()));
assertTrue("p2".equals(rb.getPackages()[0].getName()) || "p2".equals(rb.getPackages()[1].getName()));
-
+
}
-
+
public void testEmptyList() throws Exception {
FileScanner scan = new FileScanner();
RuleBase rb = RuleBaseFactory.newRuleBase();
-
+
PackageProvider.applyChanges( rb, true, scan.loadPackageChanges(), new MockListener() );
assertEquals(0, rb.getPackages().length);
}
-
+
public void testFileChanges() throws Exception {
File dir = RuleBaseAssemblerTest.getTempDirectory();
File t = new File(dir, "x.bar");
-
+
Package x = new Package("x");
RuleBaseAssemblerTest.writePackage( x, t );
-
+
FileScanner scan = new FileScanner();
Map updates = new HashMap();
assertTrue(scan.hasChanged( "x", updates, t.lastModified() ));
assertFalse(scan.hasChanged( "x", updates, t.lastModified() ));
-
+
}
-
-
+
+
}
Modified: labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/rule/LogicTransformerTest.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/rule/LogicTransformerTest.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-core/src/test/java/org/drools/rule/LogicTransformerTest.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -2,13 +2,13 @@
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,33 +20,36 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
+import java.net.URL;
+import java.net.URISyntaxException;
import org.drools.DroolsTestCase;
+import org.drools.common.DroolsObjectOutputStream;
+import org.drools.common.DroolsObjectInputStream;
import org.drools.base.ClassObjectType;
import org.drools.spi.ObjectType;
public class LogicTransformerTest extends DroolsTestCase {
/**
* (a||b)&&c
- *
+ *
* <pre>
* and
* / \
- * or c
+ * or c
* / \
* a b
* </pre>
- *
+ *
* Should become (a&&c)||(b&&c)
- *
+ *
* <pre>
- *
+ *
* or
- * / \
- * / \
- * / \
- * and and
+ * / \
+ * / \
+ * / \
+ * and and
* / \ / \
* a c b c
* </pre>
@@ -99,19 +102,19 @@
/**
* (a||b)&&c
- *
+ *
* <pre>
* And
* /|\ \__
* _/ | \_ \_
- * / | \ \
+ * / | \ \
* or | or not
* / \ | / \ |
* a b c d e f
* </pre>
- *
+ *
* Should become (a&&c)||(b&&c)
- *
+ *
* <pre>
* /\
* _/ \_
@@ -237,28 +240,28 @@
/**
* This data structure is now valid
- *
+ *
* (Not (OR (A B) ) )
- *
+ *
* <pre>
* Not
- * |
- * or
+ * |
+ * or
* / \
* a b
* </pre>
- *
+ *
* Should become:
- *
+ *
* <pre>
* And
- * / \
- * Not Not
+ * / \
+ * Not Not
* | |
* a b
* </pre>
- *
- *
+ *
+ *
*/
public void testNotOrTransformation() throws InvalidPatternException {
final ObjectType type = new ClassObjectType( String.class );
@@ -301,21 +304,21 @@
/**
* This data structure is now valid (Exists (OR (A B) ) )
- *
+ *
* <pre>
* Exists
- * |
- * or
+ * |
+ * or
* / \
* a b
* </pre>
- *
+ *
* Should become:
- *
+ *
* <pre>
* Or
- * / \
- * Exists Exists
+ * / \
+ * Exists Exists
* | |
* a b
* </pre>
@@ -410,25 +413,25 @@
* <pre>
* _/|\_
* __/ | \__
- * / | \
+ * / | \
* __/ | \__
* / | \
* And and Not
* / | \ / \ |
* a And d e Or i
- * / \ / \
- * b Not h Exists
- * | |
- * Not g
- * |
- * c
+ * / \ / \
+ * b Not h Exists
+ * | |
+ * Not g
+ * |
+ * c
* </pre>
- *
+ *
* It is important to ensure that the order of
* the elements is not changed after transformation
- *
+ *
* <pre>
- * Or
+ * Or
* _/ \__
* __/ \___
* / \__
@@ -444,12 +447,12 @@
* | |
* c c
* </pre>
- *
+ *
* @throws IOException
* @throws ClassNotFoundException
- *
- *
- *
+ *
+ *
+ *
*/
public void testProcessTree() throws IOException,
ClassNotFoundException,
@@ -523,7 +526,7 @@
// result
// writeTree( result,
// "correct_processTree1.dat" );
- final ObjectInputStream ois = new ObjectInputStream( this.getClass().getResourceAsStream( "/correct_processTree1.dat" ) );
+ final DroolsObjectInputStream ois = new DroolsObjectInputStream( this.getClass().getResourceAsStream( "/correct_processTree1.dat" ) );
final GroupElement[] correctResultRoot = (GroupElement[]) ois.readObject();
@@ -590,51 +593,51 @@
}
/**
- *
- *
+ *
+ *
* /**
- *
+ *
* <pre>
* _/|\_
* __/ | \__
- * / | \
+ * / | \
* __/ | \__
* / | \
* And or And
* / \ / \ / \
* a Or d e Not OR
- * / \ | / |
+ * / \ | / |
* b c f g Not
* |
* h
- *
- *
- *
+ *
+ *
+ *
* </pre>
- *
+ *
* Each And is a Rete sub rule
- *
+ *
* <pre>
- *
- *
- * And___ And___ And___ And___ And__ And___ And___ And___
- * ||| | \ ||| | \ ||| | \ ||| | \ ||| | \ ||| | \ ||| | \ ||| | \
+ *
+ *
+ * And___ And___ And___ And___ And__ And___ And___ And___
+ * ||| | \ ||| | \ ||| | \ ||| | \ ||| | \ ||| | \ ||| | \ ||| | \
* abd Not g abd Not Not abe Not g abe Not Not acd Not g acd Not Not ace Not g ace Not Not
- * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
* f f h f f h f f h f f h
- *
- *
+ *
+ *
* </pre>
- *
+ *
* @throws IOException
* @throws ClassNotFoundException
- *
- *
- *
- *
+ *
+ *
+ *
+ *
* @throws IOException
* @throws ClassNotFoundException
- *
+ *
*/
public void testTransform() throws IOException,
ClassNotFoundException,
@@ -705,7 +708,8 @@
// Get known correct tree
// The binary stream was created from a handchecked correct output
- final ObjectInputStream ois = new ObjectInputStream( this.getClass().getResourceAsStream( "/correct_transform1.dat" ) );
+ final DroolsObjectInputStream ois = new DroolsObjectInputStream( this.getClass().getResourceAsStream( "/correct_transform1.dat" ) );
+
final GroupElement[] correctResultAnds = (GroupElement[]) ois.readObject();
for ( int j = 0; j < ands.length; j++ ) {
@@ -716,14 +720,18 @@
private void writeTree(final Object object,
final String fileName) throws IOException {
- final String className = this.getClass().getName();
- File file = new File( this.getClass().getResource( className.substring( className.lastIndexOf( '.' ) + 1 ) + ".class" ).getFile() );
+ URL resource = this.getClass().getResource("/correct_transform1.dat");
+ String path;
+ try {
+ path = resource.toURI().getRawPath();
+ } catch (URISyntaxException e) {
+ throw new IOException(e.getMessage());
+ }
- file = new File( file.getParent(),
- fileName );
-
- new ObjectOutputStream( new FileOutputStream( file ) ).writeObject( object );
+ DroolsObjectOutputStream out = new DroolsObjectOutputStream(new FileOutputStream(path));
+ out.writeObject( object );
+ out.close();
}
}
\ No newline at end of file
Modified: labs/jbossrules/branches/serialization/drools-core/src/test/resources/correct_transform1.dat
===================================================================
(Binary files differ)
Modified: labs/jbossrules/branches/serialization/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -19,7 +19,6 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.ObjectOutputStream;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -74,6 +73,7 @@
import org.drools.common.AbstractRuleBase;
import org.drools.common.DroolsObjectInputStream;
import org.drools.common.InternalWorkingMemory;
+import org.drools.common.DroolsObjectOutputStream;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -853,7 +853,7 @@
} else {
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bout);
+ DroolsObjectOutputStream out = new DroolsObjectOutputStream(bout);
out.writeObject( asm.getBinaryPackage() );
item.updateCompiledPackage( new ByteArrayInputStream( bout.toByteArray()) );
Modified: labs/jbossrules/branches/serialization/drools-jbrms/src/test/java/org/drools/brms/server/PerfServiceTest.java
===================================================================
--- labs/jbossrules/branches/serialization/drools-jbrms/src/test/java/org/drools/brms/server/PerfServiceTest.java 2007-12-26 11:05:31 UTC (rev 17404)
+++ labs/jbossrules/branches/serialization/drools-jbrms/src/test/java/org/drools/brms/server/PerfServiceTest.java 2007-12-26 11:18:20 UTC (rev 17405)
@@ -18,7 +18,6 @@
import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
import java.util.Calendar;
import javax.jcr.Node;
@@ -33,6 +32,7 @@
import org.drools.repository.RulesRepository;
import org.drools.repository.VersionableItem;
import org.drools.rule.Package;
+import org.drools.common.DroolsObjectInputStream;
/**
* A playground for performance analysing.
@@ -130,7 +130,7 @@
assertNotNull(binPackage);
ByteArrayInputStream bin = new ByteArrayInputStream(binPackage);
- ObjectInputStream in = new ObjectInputStream(bin);
+ DroolsObjectInputStream in = new DroolsObjectInputStream(bin);
Package binPkg = (Package) in.readObject();
assertNotNull(binPkg);
More information about the jboss-svn-commits
mailing list