Remove RpcMethodInvoker specializations
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / BindingDOMRpcProviderServiceAdapter.java
index dbb1881f1a49edb4a95c838df731acca7c69a664..af2c44fe92f441601b0b0e162fd12cccd72d2c4f 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.mdsal.binding.dom.adapter;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableSet;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -21,19 +22,17 @@ import org.opendaylight.mdsal.dom.api.DOMRpcProviderService;
 import org.opendaylight.yangtools.concepts.ObjectRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.RpcService;
+import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
-public class BindingDOMRpcProviderServiceAdapter implements RpcProviderService {
-    private static final Set<YangInstanceIdentifier> GLOBAL = ImmutableSet.of(YangInstanceIdentifier.builder().build());
+@VisibleForTesting
+public class BindingDOMRpcProviderServiceAdapter extends AbstractBindingAdapter<DOMRpcProviderService>
+        implements RpcProviderService {
+    private static final ImmutableSet<YangInstanceIdentifier> GLOBAL = ImmutableSet.of(YangInstanceIdentifier.empty());
 
-    private final BindingToNormalizedNodeCodec codec;
-    private final DOMRpcProviderService domRpcRegistry;
-
-    public BindingDOMRpcProviderServiceAdapter(final DOMRpcProviderService domRpcRegistry,
-            final BindingToNormalizedNodeCodec codec) {
-        this.codec = codec;
-        this.domRpcRegistry = domRpcRegistry;
+    public BindingDOMRpcProviderServiceAdapter(final AdapterContext adapterContext,
+            final DOMRpcProviderService domRpcRegistry) {
+        super(adapterContext, domRpcRegistry);
     }
 
     @Override
@@ -50,20 +49,20 @@ public class BindingDOMRpcProviderServiceAdapter implements RpcProviderService {
 
     private <S extends RpcService, T extends S> ObjectRegistration<T> register(final Class<S> type,
             final T implementation, final Collection<YangInstanceIdentifier> rpcContextPaths) {
-        final Map<SchemaPath, Method> rpcs = codec.getRpcMethodToSchemaPath(type).inverse();
+        final Map<QName, Method> rpcs = currentSerializer().getRpcMethodToQName(type).inverse();
 
-        final BindingDOMRpcImplementationAdapter adapter = new BindingDOMRpcImplementationAdapter(
-                codec.getCodecRegistry(), type, rpcs, implementation);
+        final BindingDOMRpcImplementationAdapter adapter = new BindingDOMRpcImplementationAdapter(adapterContext(),
+            type, rpcs, implementation);
         final Set<DOMRpcIdentifier> domRpcs = createDomRpcIdentifiers(rpcs.keySet(), rpcContextPaths);
-        final DOMRpcImplementationRegistration<?> domReg = domRpcRegistry.registerRpcImplementation(adapter, domRpcs);
+        final DOMRpcImplementationRegistration<?> domReg = getDelegate().registerRpcImplementation(adapter, domRpcs);
         return new BindingRpcAdapterRegistration<>(implementation, domReg);
     }
 
-    private static Set<DOMRpcIdentifier> createDomRpcIdentifiers(final Set<SchemaPath> rpcs,
+    private static Set<DOMRpcIdentifier> createDomRpcIdentifiers(final Set<QName> rpcs,
             final Collection<YangInstanceIdentifier> paths) {
         final Set<DOMRpcIdentifier> ret = new HashSet<>();
         for (final YangInstanceIdentifier path : paths) {
-            for (final SchemaPath rpc : rpcs) {
+            for (final QName rpc : rpcs) {
                 ret.add(DOMRpcIdentifier.create(rpc, path));
             }
         }
@@ -72,8 +71,9 @@ public class BindingDOMRpcProviderServiceAdapter implements RpcProviderService {
 
     private Collection<YangInstanceIdentifier> toYangInstanceIdentifiers(final Set<InstanceIdentifier<?>> identifiers) {
         final Collection<YangInstanceIdentifier> ret = new ArrayList<>(identifiers.size());
+        final CurrentAdapterSerializer serializer = currentSerializer();
         for (final InstanceIdentifier<?> binding : identifiers) {
-            ret.add(codec.toYangInstanceIdentifierCached(binding));
+            ret.add(serializer.toCachedYangInstanceIdentifier(binding));
         }
         return ret;
     }