[jboss-svn-commits] JBL Code SVN: r18869 - in labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools: rule and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 12 00:00:26 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-03-12 00:00:26 -0400 (Wed, 12 Mar 2008)
New Revision: 18869
Modified:
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java
Log:
JBRULES-1487 access to store property in MapBackedClassLoader should be synchronized
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-03-12 03:38:48 UTC (rev 18868)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2008-03-12 04:00:26 UTC (rev 18869)
@@ -175,7 +175,10 @@
public void doWriteExternal(final ObjectOutput stream,
final Object[] objects) throws IOException {
stream.writeObject( this.pkgs );
- stream.writeObject( this.classLoader.getStore() );
+
+ synchronized ( this.classLoader.getStore() ) {
+ stream.writeObject( this.classLoader.getStore() );
+ }
// Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
// a byte[]
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java 2008-03-12 03:38:48 UTC (rev 18868)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java 2008-03-12 04:00:26 UTC (rev 18869)
@@ -51,16 +51,22 @@
public void addClass(final String className,
byte[] bytes) {
-
- this.store.put( convertResourcePathToClassName(className),
- bytes );
+ synchronized ( this.store ) {
+ this.store.put( convertResourcePathToClassName(className),
+ bytes );
+ }
}
public Class fastFindClass(final String name) {
final Class clazz = findLoadedClass( name );
if ( clazz == null ) {
- final byte[] clazzBytes = (byte[]) this.store.get( name );
+
+ byte[] clazzBytes = null;
+ synchronized ( this.store ) {
+ clazzBytes = (byte[]) this.store.get( name );
+ }
+
if ( clazzBytes != null ) {
return defineClass( name,
clazzBytes,
@@ -108,7 +114,11 @@
}
public InputStream getResourceAsStream(final String name) {
- final byte[] bytes = (byte[]) this.store.get( name );
+ byte[] bytes = null;
+ synchronized ( this.store ) {
+ bytes = (byte[]) this.store.get( name );
+ }
+
if ( bytes != null ) {
return new ByteArrayInputStream( bytes );
} else {
More information about the jboss-svn-commits
mailing list