From 8b6075992f1e18eb678ee4e50e13b3d2d1397a85 Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Sun, 20 Oct 2013 18:57:33 +0200 Subject: [PATCH] Refactored implementation of Notification Invoker sal-binding-broker: Refactored implementation of listener invoker to be avoid reflection when invoking notification callbacks to avoid reflection. sal-binding-it: Added integration test which tests basic notification scenarios such as publishing and receiving notifications using generated interfaces. Change-Id: I7afcf25e6f29608d76143058f2eb6aec12a7ccd2 Signed-off-by: Tony Tkacik --- .../binding/codegen/RuntimeCodeGenerator.java | 49 +++-- .../binding/codegen/RuntimeCodeHelper.xtend | 17 ++ .../codegen/RuntimeCodeSpecification.xtend | 6 +- .../impl/RpcRouterCodegenInstance.xtend | 32 ++- .../codegen/impl/RuntimeCodeGenerator.xtend | 110 ++++++++-- .../binding/impl/BindingAwareBrokerImpl.xtend | 5 +- .../binding/impl/NotificationBrokerImpl.xtend | 129 +++++++++--- .../spi/NotificationInvokerFactory.java | 23 +++ .../test/RuntimeCodeGeneratorTest.java | 188 +++++++++++++----- .../sal/binding/test/mock/BarListener.java | 11 + .../sal/binding/test/mock/BarUpdate.java | 2 + .../binding/test/mock/CompositeListener.java | 5 + .../sal/binding/test/mock/FlowDelete.java | 7 + .../sal/binding/test/mock/FooListener.java | 1 - .../test/sal/binding/it/NoficationTest.java | 176 ++++++++++++++++ 15 files changed, 633 insertions(+), 128 deletions(-) create mode 100644 opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/spi/NotificationInvokerFactory.java create mode 100644 opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/mock/BarListener.java create mode 100644 opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/mock/CompositeListener.java create mode 100644 opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/mock/FlowDelete.java create mode 100644 opendaylight/md-sal/sal-binding-it/src/test/java/org/opendaylight/controller/test/sal/binding/it/NoficationTest.java diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/RuntimeCodeGenerator.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/RuntimeCodeGenerator.java index c8d6bcf3b1..f94be9c6a6 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/RuntimeCodeGenerator.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/RuntimeCodeGenerator.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.sal.binding.codegen; import org.opendaylight.controller.sal.binding.spi.DelegateProxy; +import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory; import org.opendaylight.controller.sal.binding.spi.RpcRouter; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.RpcService; @@ -55,28 +56,30 @@ public interface RuntimeCodeGenerator { * *

* Returned instance: - *