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