BUG-1381: remove getLock() and deprecated constructor 20/9320/4
authorRobert Varga <rovarga@cisco.com>
Fri, 25 Jul 2014 13:37:26 +0000 (15:37 +0200)
committerRobert Varga <rovarga@cisco.com>
Mon, 28 Jul 2014 15:08:23 +0000 (17:08 +0200)
All users have been updated to synchronize properly, now remove
getLock(). At the same time, shed the deprecated contructor, too.
Requires I3e962f284132b376f77e9e2665b3fbb47f246514 to go into controller
first.

Change-Id: Ic8b62468a4e829f035e45b3c715966315b3103a0
Signed-off-by: Robert Varga <rovarga@cisco.com>
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/AbstractTransformerGenerator.java
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/util/JavassistUtils.java

index 8fda4d19bcdb9f62d5c9b3ddefbe06170dba1282..bacff303f2ac28e5d6edddb6ed3abccb96a767d2 100644 (file)
@@ -73,16 +73,9 @@ abstract class AbstractTransformerGenerator {
     }
 
     protected final <V> V runOnClassLoader(final ClassLoader cls, final Callable<V> function) throws Exception {
-        final Lock lock = javAssist.getLock();
-
-        lock.lock();
-        try {
-            synchronized (javAssist) {
-                javAssist.appendClassLoaderIfMissing(cls);
-                return ClassLoaderUtils.withClassLoader(cls, function);
-            }
-        } finally {
-            lock.unlock();
+        synchronized (javAssist) {
+            javAssist.appendClassLoaderIfMissing(cls);
+            return ClassLoaderUtils.withClassLoader(cls, function);
         }
     }
 
index 4065992c1b92c308729ea4d3cad02386eb18d80d..3bb61900df69b6dfd128d36edf6563fe074994d9 100644 (file)
@@ -12,8 +12,6 @@ import com.google.common.base.Preconditions;
 import java.util.Collection;
 import java.util.Map;
 import java.util.WeakHashMap;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 import javassist.CannotCompileException;
 import javassist.ClassClassPath;
@@ -25,31 +23,22 @@ import javassist.CtMethod;
 import javassist.LoaderClassPath;
 import javassist.Modifier;
 import javassist.NotFoundException;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * Users of this utility class are expected to synchronize on this instance
+ * it they need to ensure atomic operations on it.
+ */
 public final class JavassistUtils {
     private static final Logger LOG = LoggerFactory.getLogger(JavassistUtils.class);
 
     private static final Map<ClassPool, JavassistUtils> INSTANCES = new WeakHashMap<>();
     private final Map<ClassLoader, ClassPath> loaderClassPaths = new WeakHashMap<>();
-    private final Lock lock = new ReentrantLock();
     private final ClassPool classPool;
 
-    /**
-     * @deprecated Use {@link #forClassPool(ClassPool)} instead.
-     *
-     * This class provides auto-loading into the classpool. Unfortunately reusing
-     * the same class pool with multiple instances can lead the same classpath
-     * being added multiple times, which lowers performance and leaks memory.
-     */
-    @Deprecated
-    public JavassistUtils(final ClassPool pool) {
-        this(pool, null);
-    }
-
-    private JavassistUtils(final ClassPool pool, final Object dummy) {
-        // FIXME: Remove 'dummy' once deprecated constructor is removed
+    private JavassistUtils(final ClassPool pool) {
         classPool = Preconditions.checkNotNull(pool);
     }
 
@@ -64,24 +53,12 @@ public final class JavassistUtils {
     public static synchronized JavassistUtils forClassPool(final ClassPool pool) {
         JavassistUtils ret = INSTANCES.get(Preconditions.checkNotNull(pool));
         if (ret == null) {
-            ret = new JavassistUtils(pool, null);
+            ret = new JavassistUtils(pool);
             INSTANCES.put(pool, ret);
         }
         return ret;
     }
 
-    /**
-     * Get reference to the internal lock.
-     *
-     * @return Lock object
-     *
-     * @deprecated Synchronize on an instance of this class instead.
-     */
-    @Deprecated
-    public Lock getLock() {
-        return lock;
-    }
-
     public void method(final CtClass it, final Class<? extends Object> returnType, final String name,
             final Class<? extends Object> parameter, final MethodGenerator function1) throws CannotCompileException {
         final CtClass[] pa = new CtClass[] { asCtClass(parameter) };
@@ -160,8 +137,8 @@ public final class JavassistUtils {
     }
 
     public CtField staticField(final CtClass it, final String name,
-                               final Class<? extends Object> returnValue,
-                               SourceCodeGenerator sourceGenerator) throws CannotCompileException {
+            final Class<? extends Object> returnValue,
+            final SourceCodeGenerator sourceGenerator) throws CannotCompileException {
         final CtField field = new CtField(asCtClass(returnValue), name, it);
         field.setModifiers(Modifier.PUBLIC + Modifier.STATIC);
         it.addField(field);