From f8901f0c3a0e26a8db914d2f91008ca478e27a97 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 1 Oct 2020 12:01:02 +0200 Subject: [PATCH] Eliminate SchemaPath references in codec infrastructure We have switched to SchemaNodeIdentifier across the board, this patch makes the finishing touches. JIRA: MDSAL-570 Change-Id: I8b54143e71ebbd4aef03cb00704e2b4f5311174f Signed-off-by: Robert Varga --- .../adapter/BindingDOMRpcProviderServiceAdapter.java | 2 +- .../binding/dom/adapter/CurrentAdapterSerializer.java | 2 +- .../dom/adapter/LazySerializedDOMNotification.java | 8 ++++---- .../mdsal/binding/dom/adapter/ActionLookupTest.java | 2 +- .../dom/adapter/BindingNormalizedCodecTest.java | 4 ++-- .../dom/codec/impl/SchemaRootCodecContext.java | 11 ++--------- 6 files changed, 11 insertions(+), 18 deletions(-) diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java index 91ff75fbeb..af2c44fe92 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java @@ -49,7 +49,7 @@ public class BindingDOMRpcProviderServiceAdapter extends AbstractBindingAdapter< private ObjectRegistration register(final Class type, final T implementation, final Collection rpcContextPaths) { - final Map rpcs = currentSerializer().getRpcMethodToSchemaPath(type).inverse(); + final Map rpcs = currentSerializer().getRpcMethodToQName(type).inverse(); final BindingDOMRpcImplementationAdapter adapter = new BindingDOMRpcImplementationAdapter(adapterContext(), type, rpcs, implementation); diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializer.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializer.java index 14b2fc278f..cea844371f 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializer.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializer.java @@ -103,7 +103,7 @@ public final class CurrentAdapterSerializer extends ForwardingBindingDOMCodecSer } // FIXME: This should be probably part of Binding Runtime context - ImmutableBiMap getRpcMethodToSchemaPath(final Class key) { + ImmutableBiMap getRpcMethodToQName(final Class key) { final Module module = getModule(key); final ImmutableBiMap.Builder ret = ImmutableBiMap.builder(); try { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedDOMNotification.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedDOMNotification.java index 4009845703..847e0eb6ce 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedDOMNotification.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedDOMNotification.java @@ -34,10 +34,10 @@ public final class LazySerializedDOMNotification implements DOMNotification, DOM .build(new CacheLoader, Absolute>() { @Override public Absolute load(final Class key) { - // TODO: for nested (YANG 1.1) notifications we will need the SchemaPath where the notification is - // being invoked and use that instead of ROOT. How Binding users will refer to it is TBD (but - // probably InstanceIdentifier, which means we will need to do some lifting to find the - // SchemaPath) + // TODO: for nested (YANG 1.1) notifications we will need the SchemaNodeIdentifier where the + // notification is being invoked and use that instead of ROOT. How Binding users will refer to + // it is TBD (but probably InstanceIdentifier, which means we will need to do some lifting to + // find the SchemaNodeIdentifier) return Absolute.of(BindingReflections.findQName(key)).intern(); } }); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionLookupTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionLookupTest.java index 597e4cef09..fd9c54c9fa 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionLookupTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/ActionLookupTest.java @@ -21,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absol public class ActionLookupTest { @Test - public void testActionSchemaPath() { + public void testActionPath() { CurrentAdapterSerializer codec = new CurrentAdapterSerializer(new BindingCodecContext( BindingRuntimeHelpers.createRuntimeContext())); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java index 8e223880e2..b74c659ac7 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java @@ -80,10 +80,10 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { } @Test - public void testGetRpcMethodToSchemaPath() { + public void testGetRpcMethodToQName() { codec.onModelContextUpdated(context); final List retMap = codec.currentSerializer() - .getRpcMethodToSchemaPath(OpendaylightTestRpcServiceService.class).keySet().stream() + .getRpcMethodToQName(OpendaylightTestRpcServiceService.class).keySet().stream() .map(Method::getName) .collect(Collectors.toList()); assertTrue(retMap.contains("rockTheHouse")); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java index e00999b726..8d10ff2948 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/SchemaRootCodecContext.java @@ -47,7 +47,6 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils; @@ -271,14 +270,8 @@ final class SchemaRootCodecContext extends DataContainerCo checkArgument(Notification.class.isAssignableFrom(notificationType)); checkArgument(notificationType.isInterface(), "Supplied class must be interface."); final QName qname = BindingReflections.findQName(notificationType); - /** - * FIXME: After Lithium cleanup of yang-model-api, use direct call on schema context - * to retrieve notification via index. - */ - final NotificationDefinition schema = SchemaContextUtil.getNotificationSchema(getSchema(), - SchemaPath.create(true, qname)); - checkArgument(schema != null, "Supplied %s is not valid notification", notificationType); - + final NotificationDefinition schema = getSchema().findNotification(qname).orElseThrow( + () -> new IllegalArgumentException("Supplied " + notificationType + " is not valid notification")); return new NotificationCodecContext<>(notificationType, schema, factory()); } -- 2.36.6