import org.slf4j.LoggerFactory
import org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcRegistration
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration
+import org.opendaylight.controller.sal.binding.api.data.DataProviderService
+import org.opendaylight.controller.sal.binding.api.data.DataBrokerService
class BindingAwareBrokerImpl implements BindingAwareBroker {
private static val log = LoggerFactory.getLogger(BindingAwareBrokerImpl)
-
+
private val clsPool = ClassPool.getDefault()
private var RuntimeCodeGenerator generator;
private Map<Class<? extends RpcService>, RpcProxyContext> managedProxies = new HashMap();
private var NotificationBrokerImpl notifyBroker
+ private var DataBrokerImpl dataBroker
private var ServiceRegistration<NotificationProviderService> notifyBrokerRegistration
-
+
@Property
var BundleContext brokerBundleContext
// Initialization of notificationBroker
notifyBroker = new NotificationBrokerImpl(null);
+ dataBroker = new DataBrokerImpl();
val brokerProperties = newProperties();
notifyBrokerRegistration = brokerBundleContext.registerService(NotificationProviderService, notifyBroker,
brokerProperties)
brokerBundleContext.registerService(NotificationService, notifyBroker, brokerProperties)
+ brokerBundleContext.registerService(DataProviderService,dataBroker,brokerProperties)
+ brokerBundleContext.registerService(DataBrokerService,dataBroker,brokerProperties)
+
}
def initGenerator() {
* If proxy class does not exist for supplied service class it will be generated automatically.
*/
def <T extends RpcService> getManagedDirectProxy(Class<T> service) {
-
+
var RpcProxyContext existing = null
- if ((existing = managedProxies.get(service)) != null) {
+ if((existing = managedProxies.get(service)) != null) {
return existing.proxy
}
val proxyClass = generator.generateDirectProxy(service)
managedProxies.put(service, rpcProxyCtx)
return rpcProxyCtx.proxy
}
+
/**
* Registers RPC Implementation
*
proxy.delegate = service;
return new RpcServiceRegistrationImpl<T>(type, service, osgiReg);
}
+
+ def <T extends RpcService> RpcRegistration<T> registerMountedRpcImplementation(Class<T> tyoe, T service, InstanceIdentifier<?> identifier,
+ OsgiProviderContext context, Hashtable<String, String> properties) {
+ throw new UnsupportedOperationException("TODO: auto-generated method stub")
+ }
+
+ def <T extends RpcService> RoutedRpcRegistration<T> registerRoutedRpcImplementation(Class<T> type, T service, OsgiProviderContext context,
+ Hashtable<String, String> properties) {
+ throw new UnsupportedOperationException("TODO: auto-generated method stub")
+ }
+
}