You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2012/07/11 14:18:01 UTC

svn commit: r1360140 - /commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/introspection/Uberspect.java

Author: henrib
Date: Wed Jul 11 12:18:00 2012
New Revision: 1360140

URL: http://svn.apache.org/viewvc?rev=1360140&view=rev
Log:
Changed 'version' class member from volatile int to AtomicInteger for clarity 

Modified:
    commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/introspection/Uberspect.java

Modified: commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/introspection/Uberspect.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/introspection/Uberspect.java?rev=1360140&r1=1360139&r2=1360140&view=diff
==============================================================================
--- commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/introspection/Uberspect.java (original)
+++ commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/introspection/Uberspect.java Wed Jul 11 12:18:00 2012
@@ -16,15 +16,6 @@
  */
 package org.apache.commons.jexl3.internal.introspection;
 
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.lang.reflect.Field;
-
-import java.lang.reflect.Method;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Map;
-
 import org.apache.commons.jexl3.introspection.JexlMethod;
 import org.apache.commons.jexl3.introspection.JexlPropertyGet;
 import org.apache.commons.jexl3.introspection.JexlPropertySet;
@@ -32,6 +23,17 @@ import org.apache.commons.jexl3.introspe
 
 import org.apache.commons.logging.Log;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
+
 /**
  * Implementation of Uberspect to provide the default introspective
  * functionality of JEXL.
@@ -46,10 +48,10 @@ public class Uberspect implements JexlUb
     public static final Object TRY_FAILED = AbstractExecutor.TRY_FAILED;
     /** The logger to use for all warnings & errors. */
     protected final Log rlog;
+    /** The introspector version. */
+    private final AtomicInteger version;
     /** The soft reference to the introspector currently in use. */
     private volatile Reference<Introspector> ref;
-    /** The introspector version. */
-    private volatile int version;
     /** The class loader reference; used to recreate the Introspector when necessary. */
     private volatile Reference<ClassLoader> loader;
 
@@ -61,7 +63,7 @@ public class Uberspect implements JexlUb
         rlog = runtimeLogger;
         ref = new SoftReference<Introspector>(null);
         loader = new SoftReference<ClassLoader>(getClass().getClassLoader());
-        version = 0;
+        version = new AtomicInteger(0);
     }
 
     /**
@@ -80,7 +82,7 @@ public class Uberspect implements JexlUb
                     intro = new Introspector(rlog, loader.get());
                     ref = new SoftReference<Introspector>(intro);
                     loader = new SoftReference<ClassLoader>(intro.getLoader());
-                    version += 1;
+                    version.incrementAndGet();
                 }
             }
         }
@@ -99,15 +101,13 @@ public class Uberspect implements JexlUb
                 ref = new SoftReference<Introspector>(intro);
             }
             loader = new SoftReference<ClassLoader>(intro.getLoader());
-            version += 1;
+            version.incrementAndGet();
         }
     }
 
     @Override
     public int getVersion() {
-        synchronized(this) {
-            return version;
-        }
+        return version.intValue();
     }
 
     /**