X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fcodegen%2Fimpl%2FAbstractRuntimeCodeGenerator.java;h=1fa54be2005b06d0be70226ac4abd30625f8a8bb;hb=479196a23d56650ffbb9b6983a18cdc5d6b7ef94;hp=8fa88ead0797a69df10c65f63078bac05476b479;hpb=509f5cc79042593c7923cb7bb6fecebbd8b27605;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java index 8fa88ead07..1fa54be200 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java @@ -7,6 +7,8 @@ */ package org.opendaylight.controller.sal.binding.codegen.impl; +import com.google.common.base.Supplier; + import java.util.Map; import java.util.WeakHashMap; @@ -29,8 +31,6 @@ import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.binding.annotations.RoutingContext; import org.opendaylight.yangtools.yang.binding.util.ClassLoaderUtils; -import com.google.common.base.Supplier; - abstract class AbstractRuntimeCodeGenerator implements org.opendaylight.controller.sal.binding.codegen.RuntimeCodeGenerator, NotificationInvokerFactory { @GuardedBy("this") private final Map, RuntimeGeneratedInvokerPrototype> invokerClasses = new WeakHashMap<>(); @@ -136,20 +136,17 @@ abstract class AbstractRuntimeCodeGenerator implements org.opendaylight.controll return invoker; } - utils.getLock().lock(); - try { + synchronized (utils) { invoker = ClassLoaderUtils.withClassLoader(cls.getClassLoader(), new Supplier() { @Override public RuntimeGeneratedInvokerPrototype get() { return generateListenerInvoker(cls); } }); - - invokerClasses.put(cls, invoker); - return invoker; - } finally { - utils.getLock().unlock(); } + + invokerClasses.put(cls, invoker); + return invoker; } @Override @@ -159,11 +156,8 @@ abstract class AbstractRuntimeCodeGenerator implements org.opendaylight.controll @Override public final T getDirectProxyFor(final Class serviceType) { - utils.getLock().lock(); - try { + synchronized (utils) { return ClassLoaderUtils.withClassLoader(serviceType.getClassLoader(), directProxySupplier(serviceType)); - } finally { - utils.getLock().unlock(); } } @@ -180,12 +174,9 @@ abstract class AbstractRuntimeCodeGenerator implements org.opendaylight.controll } }); - utils.getLock().lock(); - try { + synchronized (utils) { final T instance = ClassLoaderUtils.withClassLoader(serviceType.getClassLoader(), routerSupplier(serviceType, metadata)); return new RpcRouterCodegenInstance(name, serviceType, instance, metadata.getContexts()); - } finally { - utils.getLock().unlock(); } }