Merge "BUG-1381: guide users to use external synchronized block"
authorTony Tkacik <ttkacik@cisco.com>
Fri, 25 Jul 2014 11:17:10 +0000 (11:17 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 25 Jul 2014 11:17:10 +0000 (11:17 +0000)
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 373ea7df71f52854129213b62b02f1f67101dbb8..8fda4d19bcdb9f62d5c9b3ddefbe06170dba1282 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.sal.binding.generator.impl;
 
+import com.google.common.base.Preconditions;
+
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
@@ -24,8 +26,6 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
-import com.google.common.base.Preconditions;
-
 /**
  * Abstract base class which defines the baseline for the real {@link TransformerGenerator}.
  * This class exists to expose the basic interface and common interactions with the rest
@@ -39,8 +39,7 @@ abstract class AbstractTransformerGenerator {
      * will VerificationErrors.
      */
     @Extension
-    protected static final ClassLoadingStrategy CLASS_LOADING_STRATEGY =
-            GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy();
+    protected static final ClassLoadingStrategy CLASS_LOADING_STRATEGY = GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy();
     @Extension
     protected final TypeResolver typeResolver;
     @Extension
@@ -78,8 +77,10 @@ abstract class AbstractTransformerGenerator {
 
         lock.lock();
         try {
-            javAssist.appendClassLoaderIfMissing(cls);
-            return ClassLoaderUtils.withClassLoader(cls, function);
+            synchronized (javAssist) {
+                javAssist.appendClassLoaderIfMissing(cls);
+                return ClassLoaderUtils.withClassLoader(cls, function);
+            }
         } finally {
             lock.unlock();
         }
index 7f92e704ee08c2214530751cc54a0a26c5266e5a..4065992c1b92c308729ea4d3cad02386eb18d80d 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.sal.binding.generator.util;
 
+import com.google.common.base.Preconditions;
+
 import java.util.Collection;
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -26,8 +28,6 @@ import javassist.NotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Preconditions;
-
 public final class JavassistUtils {
     private static final Logger LOG = LoggerFactory.getLogger(JavassistUtils.class);
 
@@ -70,6 +70,14 @@ public final class JavassistUtils {
         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;
     }