[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