Author: ssmiweve
Date: 2007-05-30 22:24:10 +0200 (Wed, 30 May 2007)
New Revision: 5236

Modified:
   
branches/2.13/data-model-javabean-impl/src/main/java/no/schibstedsok/searchportal/datamodel/BeanDataObjectInvocationHandler.java
Log:
concurrency around dataObject properties. does not make datamodel synchronised 
but does ensure state safety across multiple-threads.

Modified: 
branches/2.13/data-model-javabean-impl/src/main/java/no/schibstedsok/searchportal/datamodel/BeanDataObjectInvocationHandler.java
===================================================================
--- 
branches/2.13/data-model-javabean-impl/src/main/java/no/schibstedsok/searchportal/datamodel/BeanDataObjectInvocationHandler.java
    2007-05-30 18:53:22 UTC (rev 5235)
+++ 
branches/2.13/data-model-javabean-impl/src/main/java/no/schibstedsok/searchportal/datamodel/BeanDataObjectInvocationHandler.java
    2007-05-30 20:24:10 UTC (rev 5236)
@@ -18,11 +18,12 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import 
no.schibstedsok.searchportal.datamodel.BeanDataModelInvocationHandler.DataModelBeanContextSupport;
 import no.schibstedsok.searchportal.datamodel.access.AccessAllow;
@@ -62,15 +63,13 @@
     private final boolean immutable;
 
     // properties: the only part of this class that be immutable and reused
-    protected final List<Property> properties = new ArrayList<Property>();
+    protected final List<Property> properties = new 
CopyOnWriteArrayList<Property>();
 
     protected final BeanContext context;
 
-    private final Map<Method, InvocationTarget> invocationTargetCache = new 
HashMap<Method, InvocationTarget>();
-    private final Map<Method, Method> supportMethodCache = new HashMap<Method, 
Method>();
+    private final Map<Method,InvocationTarget> invocationTargetCache = new 
ConcurrentHashMap<Method,InvocationTarget>();
+    private final Map<Method,Method> supportMethodCache = new 
ConcurrentHashMap<Method,Method>();
 
-    //private final ReentrantReadWriteLock invocationTargetCacheLock = new 
ReentrantReadWriteLock();
-
     // Static --------------------------------------------------------
 
     static <T> BeanDataObjectInvocationHandler<T> instanceOf(final Class<T> 
cls, final Property... properties)

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to