[jboss-svn-commits] JBL Code SVN: r29102 - in labs/jbosstm/trunk: ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 28 04:19:04 EDT 2009


Author: jhalliday
Date: 2009-08-28 04:19:03 -0400 (Fri, 28 Aug 2009)
New Revision: 29102

Modified:
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java
   labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/opPropertyManager.java
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/commonPropertyManager.java
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java
Log:
Convert module PropertyManagers to hold bean instances centrally rather than cache them locally. JBTM-596


Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -56,59 +56,16 @@
 
     public static CoreEnvironmentBean getCoreEnvironmentBean()
     {
-        synchronized (coreEnvironmentBeanInit) {
-            if(!coreEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(coreEnvironmentBean,  getPropertyManager());
-                    coreEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return coreEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(CoreEnvironmentBean.class, getPropertyManager());
     }
 
-    private static final AtomicBoolean coreEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final CoreEnvironmentBean coreEnvironmentBean = new CoreEnvironmentBean();
-
     public static CoordinatorEnvironmentBean getCoordinatorEnvironmentBean()
     {
-        synchronized (coordinatorEnvironmentBeanInit) {
-            if(!coordinatorEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(coordinatorEnvironmentBean,  getPropertyManager());
-                    coordinatorEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return coordinatorEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(CoordinatorEnvironmentBean.class, getPropertyManager());
     }
 
-    private static final AtomicBoolean coordinatorEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final CoordinatorEnvironmentBean coordinatorEnvironmentBean = new CoordinatorEnvironmentBean();
-
     public static ObjectStoreEnvironmentBean getObjectStoreEnvironmentBean()
     {
-        synchronized (objectStoreEnvironmentBeanInit) {
-            if(!objectStoreEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(objectStoreEnvironmentBean, getPropertyManager());
-                    objectStoreEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return objectStoreEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(ObjectStoreEnvironmentBean.class, getPropertyManager());
     }
-
-    private static final AtomicBoolean objectStoreEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final ObjectStoreEnvironmentBean objectStoreEnvironmentBean = new ObjectStoreEnvironmentBean();
-
 }

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -32,9 +32,6 @@
  */
 public class recoveryPropertyManager
 {
-    private static final AtomicBoolean recoveryEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final RecoveryEnvironmentBean recoveryEnvironmentBean = new RecoveryEnvironmentBean();
-
     /**
      * @deprecated use RecoveryEnvironmentBean instead
      * @return
@@ -47,17 +44,6 @@
 
     public static RecoveryEnvironmentBean getRecoveryEnvironmentBean()
     {
-        synchronized (recoveryEnvironmentBeanInit) {
-            if(!recoveryEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(recoveryEnvironmentBean, arjPropertyManager.getPropertyManager());
-                    recoveryEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return recoveryEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(RecoveryEnvironmentBean.class, getPropertyManager());
     }
 }
\ No newline at end of file

Modified: labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -54,21 +54,8 @@
         return PropertyManagerFactory.getPropertyManagerForModule("txoj", Environment.PROPERTIES_FILE);
     }
 
-    private static final AtomicBoolean txojEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final TxojEnvironmentBean txojEnvironmentBean = new TxojEnvironmentBean();
-
     public static TxojEnvironmentBean getTxojEnvironmentBean()
     {
-        synchronized (txojEnvironmentBeanInit) {
-            if(!txojEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(txojEnvironmentBean, getPropertyManager());
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return txojEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(TxojEnvironmentBean.class, getPropertyManager());
     }
 }
\ No newline at end of file

Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -53,21 +53,6 @@
 
     public static JDBCEnvironmentBean getJDBCEnvironmentBean()
     {
-        synchronized (jdbcEnvironmentBeanInit) {
-            if(!jdbcEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(jdbcEnvironmentBean,  getPropertyManager());
-                    jdbcEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return jdbcEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(JDBCEnvironmentBean.class, getPropertyManager());
     }
-
-    private static final AtomicBoolean jdbcEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final JDBCEnvironmentBean jdbcEnvironmentBean = new JDBCEnvironmentBean();
-
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -54,21 +54,6 @@
 
     public static JTAEnvironmentBean getJTAEnvironmentBean()
     {
-        synchronized (jtaEnvironmentBeanInit) {
-            if(!jtaEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(jtaEnvironmentBean,  getPropertyManager());
-                    jtaEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return jtaEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(JTAEnvironmentBean.class, getPropertyManager());
     }
-
-    private static final AtomicBoolean jtaEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final JTAEnvironmentBean jtaEnvironmentBean = new JTAEnvironmentBean();
-
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -53,23 +53,8 @@
         return PropertyManagerFactory.getPropertyManagerForModule("jts", Environment.PROPERTIES_FILE);
     }
 
-
     public static JTSEnvironmentBean getJTSEnvironmentBean()
     {
-        synchronized (jtsEnvironmentBeanInit) {
-            if(!jtsEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(jtsEnvironmentBean,  getPropertyManager());
-                    jtsEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return jtsEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(JTSEnvironmentBean.class, getPropertyManager());
     }
-
-    private static final AtomicBoolean jtsEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final JTSEnvironmentBean jtsEnvironmentBean = new JTSEnvironmentBean();
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/opPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/opPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/opPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -51,21 +51,6 @@
 
     public static OrbPortabilityEnvironmentBean getOrbPortabilityEnvironmentBean()
     {
-        synchronized (opEnvironmentBeanInit) {
-            if(!opEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(opEnvironmentBean,  getPropertyManager());
-                    opEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return opEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(OrbPortabilityEnvironmentBean.class, getPropertyManager());
     }
-
-    private static final AtomicBoolean opEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final OrbPortabilityEnvironmentBean opEnvironmentBean = new OrbPortabilityEnvironmentBean();
-
 }

Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/commonPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/commonPropertyManager.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/logging/commonPropertyManager.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -53,40 +53,11 @@
 
     public static LoggingEnvironmentBean getLoggingEnvironmentBean()
     {
-        synchronized (loggingEnvironmentBeanInit) {
-            if(!loggingEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(loggingEnvironmentBean,  getPropertyManager());
-                    loggingEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return loggingEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(LoggingEnvironmentBean.class, getPropertyManager());
     }
 
-    private static final AtomicBoolean loggingEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final LoggingEnvironmentBean loggingEnvironmentBean = new LoggingEnvironmentBean();
-
-
     public static DefaultLogEnvironmentBean getDefaultLogEnvironmentBean()
     {
-        synchronized (defaultLogEnvironmentBeanInit) {
-            if(!defaultLogEnvironmentBeanInit.get()) {
-                try {
-                    BeanPopulator.configureFromPropertyManager(defaultLogEnvironmentBean,  getPropertyManager());
-                    defaultLogEnvironmentBeanInit.set(true);
-                } catch(Exception e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-
-        return defaultLogEnvironmentBean;
+        return BeanPopulator.getSingletonInstance(DefaultLogEnvironmentBean.class, getPropertyManager());
     }
-
-    private static final AtomicBoolean defaultLogEnvironmentBeanInit = new AtomicBoolean(false);
-    private static final DefaultLogEnvironmentBean defaultLogEnvironmentBean = new DefaultLogEnvironmentBean();
 }

Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java	2009-08-28 06:28:17 UTC (rev 29101)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java	2009-08-28 08:19:03 UTC (rev 29102)
@@ -22,10 +22,9 @@
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Enumeration;
-import java.util.Collections;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import com.arjuna.common.util.propertyservice.PropertyManager;
 
@@ -37,6 +36,26 @@
  */
 public class BeanPopulator
 {
+    private static final ConcurrentMap<Class, Object> singletonBeanInstances = new ConcurrentHashMap<Class, Object>();
+
+    public static <T> T getSingletonInstance(Class<T> beanClass, PropertyManager propertyManager) throws RuntimeException {
+
+        // we don't mind sometimes instantiating the bean multiple times,
+        // as long as the duplicates never escape into the outside world.
+        if(!singletonBeanInstances.containsKey(beanClass)) {
+            T bean = null;
+            try {
+                bean = beanClass.newInstance();
+                configureFromPropertyManager(bean, propertyManager);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            singletonBeanInstances.put(beanClass, bean);
+        }
+
+        return (T)singletonBeanInstances.get(beanClass);
+    }
+
     /**
      * Examine the properties of the provided bean and update them to match the values of the corresponding
      * properties in the PropertyManager.



More information about the jboss-svn-commits mailing list