[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