[jboss-cvs] JBossAS SVN: r75388 - projects/jboss-reflect/trunk/src/main/org/jboss/reflect/spi.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 4 10:07:20 EDT 2008


Author: alesj
Date: 2008-07-04 10:07:20 -0400 (Fri, 04 Jul 2008)
New Revision: 75388

Modified:
   projects/jboss-reflect/trunk/src/main/org/jboss/reflect/spi/NumberInfo.java
Log:
Add synch code to NumberInfo.

Modified: projects/jboss-reflect/trunk/src/main/org/jboss/reflect/spi/NumberInfo.java
===================================================================
--- projects/jboss-reflect/trunk/src/main/org/jboss/reflect/spi/NumberInfo.java	2008-07-04 12:38:25 UTC (rev 75387)
+++ projects/jboss-reflect/trunk/src/main/org/jboss/reflect/spi/NumberInfo.java	2008-07-04 14:07:20 UTC (rev 75388)
@@ -26,6 +26,7 @@
 import java.util.HashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.jboss.util.JBossStringBuilder;
 
@@ -63,6 +64,9 @@
    /** The atomic long info */
    public static final NumberInfo ATOMIC_LONG = new NumberInfo(7, AtomicLong.class);
 
+   /** The lock */
+   private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
    /** The primitives */
    private static final NumberInfo[] values = {
          BYTE_OBJECT,
@@ -126,7 +130,18 @@
          throw new IllegalArgumentException("Null info");
       if (info instanceof ClassInfo == false)
          throw new IllegalArgumentException("Should be of ClassInfo instance: " + info.getClass().getName());
-      delegate = (ClassInfo) info;
+      if (info instanceof NumberInfo)
+         throw new IllegalArgumentException("Cannot be delegate to itself: " + info);
+
+      lock.writeLock().lock();
+      try
+      {
+         delegate = (ClassInfo) info;
+      }
+      finally
+      {
+         lock.writeLock().unlock();
+      }
    }
 
    /**
@@ -136,7 +151,15 @@
     */
    public boolean isInitialized()
    {
-      return (delegate != null);
+      lock.readLock().lock();
+      try
+      {
+         return (delegate != null);
+      }
+      finally
+      {
+         lock.readLock().unlock();
+      }
    }
 
    @Override




More information about the jboss-cvs-commits mailing list