Merge "BUG-868: use a single version of ClassLoaderUtils"
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / codegen / RuntimeCodeGenerator.java
index c8d6bcf3b1b06d48d5b9bfddb68fb5b0ac267131..fb6f6ca1013b506eacf1f3b32ebdaf5d8aaf50ef 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.controller.sal.binding.codegen;
 
-import org.opendaylight.controller.sal.binding.spi.DelegateProxy;
-import org.opendaylight.controller.sal.binding.spi.RpcRouter;
+import org.opendaylight.controller.sal.binding.api.rpc.RpcRouter;
+import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.opendaylight.yangtools.yang.binding.annotations.RoutingContext;
@@ -18,7 +18,7 @@ public interface RuntimeCodeGenerator {
     /**
      * Returns an instance of provided RpcService type which delegates all calls
      * to the delegate.
-     * 
+     *
      * <p>
      * Returned instance:
      * <ul>
@@ -36,53 +36,57 @@ public interface RuntimeCodeGenerator {
      * all calls are delegated.
      * <li>{@link DelegateProxy#setDelegate(Object)} - sets the delegate for
      * particular instance
-     * 
+     *
      * </ul>
-     * 
+     *
      * @param serviceType
      *            - Subclass of RpcService for which direct proxy is to be
      *            generated.
      * @return Instance of RpcService of provided serviceType which implements
      *         and {@link DelegateProxy}
      * @throws IllegalArgumentException
-     * 
+     *
      */
     <T extends RpcService> T getDirectProxyFor(Class<T> serviceType) throws IllegalArgumentException;
 
     /**
      * Returns an instance of provided RpcService type which routes all calls to
      * other instances selected on particular input field.
-     * 
+     *
      * <p>
      * Returned instance:
-     * <ul><li>Implements:
-     *     <ul><li>{@link DelegateProxy}
-     *         <li>{@link RpcRouter}
-     *     </ul>
-     *     <li>
-     *     routes all invocations of methods, which are defined in RpcService
-     *     subtype based on method arguments and routing information defined in the
-     *     RpcRoutingTables for this instance
-     *     {@link RpcRouter#getRoutingTable(Class)}.
-     *     <ul>
-     *     <li>
-     *     Implementation uses
-     *     {@link RpcRouter#getService(Class, InstanceIdentifier)} method to
-     *     retrieve particular instance to which call will be routed.
-     *    <li>
-     *    Instance of {@link InstanceIdentifier} is determined by first argument of
-     *    method and is retrieved via method which is annotated with
-     *    {@link RoutingContext}. Class representing Routing Context Identifier is
-     *    retrieved by {@link RoutingContext}.
-     *    <li>If first argument is not defined / {@link RoutingContext} annotation
-     *    is not present on any field invocation will be delegated to default
-     *    service {@link RpcRouter#getDefaultService()}.
+     * <ul>
+     * <li>Implements:
+     * <ul>
+     * <li>{@link DelegateProxy}
+     * <li>{@link RpcRouter}
+     * </ul>
+     * <li>
+     * routes all invocations of methods, which are defined in RpcService
+     * subtype based on method arguments and routing information defined in the
+     * RpcRoutingTables for this instance
+     * {@link RpcRouter#getRoutingTable(Class)}.
+     * <ul>
+     * <li>
+     * Implementation uses
+     * {@link RpcRouter#getService(Class, InstanceIdentifier)} method to
+     * retrieve particular instance to which call will be routed.
+     * <li>
+     * Instance of {@link InstanceIdentifier} is determined by first argument of
+     * method and is retrieved via method which is annotated with
+     * {@link RoutingContext}. Class representing Routing Context Identifier is
+     * retrieved by {@link RoutingContext}.
+     * <li>If first argument is not defined / {@link RoutingContext} annotation
+     * is not present on any field invocation will be delegated to default
+     * service {@link RpcRouter#getDefaultService()}.
      * </ul>
-     * 
+     *
      * @param serviceType
      *            - Subclass of RpcService for which Router is to be generated.
      * @return Instance of RpcService of provided serviceType which implements
      *         also {@link RpcRouter}<T> and {@link DelegateProxy}
      */
-    <T extends RpcService> RpcRouter<T> getRouterFor(Class<T> serviceType) throws IllegalArgumentException;
+    <T extends RpcService> RpcRouter<T> getRouterFor(Class<T> serviceType,String name) throws IllegalArgumentException;
+
+    NotificationInvokerFactory getInvokerFactory();
 }