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%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMRpcProviderServiceAdapter.java;h=568c4bf916692d2098bfb2d39a46a121cd9699ae;hp=05f11943cdb59391817eb1479823dfd01cb02984;hb=3ec97cd0a86ad1b79f6854dc6924eb7b06e359a3;hpb=c2fbe8c5fa6d00473aa49b50b557ead738dc6a44 diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcProviderServiceAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcProviderServiceAdapter.java index 05f11943cd..568c4bf916 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcProviderServiceAdapter.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMRpcProviderServiceAdapter.java @@ -8,7 +8,11 @@ package org.opendaylight.controller.md.sal.binding.impl; import com.google.common.collect.ImmutableSet; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; +import java.util.Map; import java.util.Set; import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationRegistration; @@ -19,57 +23,56 @@ import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +@Deprecated public class BindingDOMRpcProviderServiceAdapter { - private static final Set GLOBAL = ImmutableSet.of(YangInstanceIdentifier.builder().build()); + private static final Set GLOBAL = ImmutableSet.of(YangInstanceIdentifier.EMPTY); private final BindingToNormalizedNodeCodec codec; private final DOMRpcProviderService domRpcRegistry; - public BindingDOMRpcProviderServiceAdapter(final DOMRpcProviderService domRpcRegistry, final BindingToNormalizedNodeCodec codec) { + public BindingDOMRpcProviderServiceAdapter(final DOMRpcProviderService domRpcRegistry, + final BindingToNormalizedNodeCodec codec) { this.codec = codec; this.domRpcRegistry = domRpcRegistry; } public ObjectRegistration registerRpcImplementation(final Class type, final T implementation) { - return register(type,implementation,createDomRpcIdentifiers(type,GLOBAL)); + return register(type, implementation, GLOBAL); } public ObjectRegistration registerRpcImplementation(final Class type, final T implementation, final Set> paths) { - return register(type,implementation,createDomRpcIdentifiers(type,toYangInstanceIdentifiers(paths))); + return register(type, implementation, toYangInstanceIdentifiers(paths)); } - private ObjectRegistration register(final Class type, final T implementation, final Set domRpcs) { - final BindingRpcImplementationAdapter adapter = new BindingRpcImplementationAdapter(codec.getCodecRegistry(), type, implementation); - + private ObjectRegistration register(final Class type, + final T implementation, final Collection rpcContextPaths) { + final Map rpcs = codec.getRpcMethodToSchemaPath(type).inverse(); + final BindingDOMRpcImplementationAdapter adapter = new BindingDOMRpcImplementationAdapter( + codec.getCodecRegistry(), type, rpcs, implementation); + final Set domRpcs = createDomRpcIdentifiers(rpcs.keySet(), rpcContextPaths); final DOMRpcImplementationRegistration domReg = domRpcRegistry.registerRpcImplementation(adapter, domRpcs); return new BindingRpcAdapterRegistration<>(implementation, domReg); } - private Set createDomRpcIdentifiers(final Class type, final Set paths) { - final Set rpcs = getRpcSchemaPaths(type); - + private static Set createDomRpcIdentifiers(final Set rpcs, + final Collection paths) { final Set ret = new HashSet<>(); - for(final YangInstanceIdentifier path : paths) { - for(final SchemaPath rpc : rpcs) { + for (final YangInstanceIdentifier path : paths) { + for (final SchemaPath rpc : rpcs) { ret.add(DOMRpcIdentifier.create(rpc, path)); } } return ret; } - private Set toYangInstanceIdentifiers(final Set> identifiers) { - final Set ret = new HashSet<>(); - for(final InstanceIdentifier binding: identifiers) { + private Collection toYangInstanceIdentifiers(final Set> identifiers) { + final Collection ret = new ArrayList<>(identifiers.size()); + for (final InstanceIdentifier binding : identifiers) { ret.add(codec.toYangInstanceIdentifierCached(binding)); } return ret; } - - private Set getRpcSchemaPaths(final Class type) { - return codec.getRpcMethodToSchemaPath(type).values(); - } - }