X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fcodegen%2Fimpl%2FRuntimeCodeGenerator.xtend;h=ac782051a85b708ad5d2d7ac1444b408753acef0;hp=eea9ad6b891803dcfbff60b28c8bc32800852448;hb=62a55c174776a51409c185d3eb9f0a5c2d59ab63;hpb=085b6e0c317cb5b9fc26abb308829d508973d051 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend index eea9ad6b89..ac782051a8 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RuntimeCodeGenerator.xtend @@ -13,20 +13,16 @@ import javassist.ClassPool import javassist.CtClass import javassist.CtMethod import javassist.LoaderClassPath -import org.opendaylight.controller.sal.binding.codegen.RuntimeCodeHelper import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory -import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory.NotificationInvoker -import org.opendaylight.yangtools.yang.binding.util.ClassLoaderUtils import org.opendaylight.yangtools.sal.binding.generator.util.JavassistUtils -import org.opendaylight.yangtools.yang.binding.BaseIdentity import org.opendaylight.yangtools.yang.binding.DataContainer import org.opendaylight.yangtools.yang.binding.InstanceIdentifier import org.opendaylight.yangtools.yang.binding.Notification import org.opendaylight.yangtools.yang.binding.NotificationListener import org.opendaylight.yangtools.yang.binding.RpcImplementation import org.opendaylight.yangtools.yang.binding.RpcService -import org.opendaylight.yangtools.yang.binding.annotations.QName import org.opendaylight.yangtools.yang.binding.annotations.RoutingContext +import org.opendaylight.yangtools.yang.binding.util.ClassLoaderUtils import static extension org.opendaylight.controller.sal.binding.codegen.RuntimeCodeSpecification.* import static extension org.opendaylight.controller.sal.binding.codegen.YangtoolsMappingHelper.* @@ -161,13 +157,13 @@ class RuntimeCodeGenerator implements org.opendaylight.controller.sal.binding.co return inputClass.rpcMethodMetadata(inputClass,method.name); } - private def RpcMetadata rpcMethodMetadata(CtClass dataClass,CtClass inputClass,String rpcMethod) { + private def RpcMetadata rpcMethodMetadata(CtClass dataClass, CtClass inputClass, String rpcMethod) { for (method : dataClass.methods) { if (method.name.startsWith("get") && method.parameterTypes.size === 0) { for (annotation : method.availableAnnotations) { if (annotation instanceof RoutingContext) { val encapsulated = !method.returnType.equals(InstanceIdentifier.asCtClass); - return new RpcMetadata(null,rpcMethod,(annotation as RoutingContext).value, method, encapsulated,inputClass); + return new RpcMetadata(rpcMethod,(annotation as RoutingContext).value, method, encapsulated,inputClass); } } } @@ -191,7 +187,7 @@ class RuntimeCodeGenerator implements org.opendaylight.controller.sal.binding.co val cls = instance.class val prototype = resolveInvokerClass(cls); - return new RuntimeGeneratedInvoker(instance, prototype) + return RuntimeGeneratedInvoker.create(instance, prototype) } protected def generateListenerInvoker(Class iface) { @@ -221,10 +217,6 @@ class RuntimeCodeGenerator implements org.opendaylight.controller.sal.binding.co finalClass as Class>); } - - - - protected def resolveInvokerClass(Class class1) { return ClassLoaderUtils.withClassLoaderAndLock(class1.classLoader,lock) [| val invoker = invokerClasses.get(class1); @@ -234,55 +226,6 @@ class RuntimeCodeGenerator implements org.opendaylight.controller.sal.binding.co val newInvoker = generateListenerInvoker(class1); invokerClasses.put(class1, newInvoker); return newInvoker - ] } } - -@Data -package class RuntimeGeneratedInvoker implements NotificationInvoker { - - @Property - val NotificationListener delegate; - - @Property - var org.opendaylight.controller.sal.binding.api.NotificationListener invocationProxy; - - @Property - var RuntimeGeneratedInvokerPrototype prototype; - - new(NotificationListener delegate, RuntimeGeneratedInvokerPrototype prototype) { - _delegate = delegate; - _prototype = prototype; - _invocationProxy = prototype.protoClass.newInstance as org.opendaylight.controller.sal.binding.api.NotificationListener; - RuntimeCodeHelper.setDelegate(_invocationProxy, delegate); - } - - override getSupportedNotifications() { - prototype.supportedNotifications; - } - - override close() { - } -} - -@Data -package class RpcMetadata { - - @Property - val QName qname; - - @Property - val String methodName; - - @Property - val Class context; - @Property - val CtMethod inputRouteGetter; - - @Property - val boolean routeEncapsulated; - - @Property - val CtClass inputType; -}