From: Samuel Schneider Date: Wed, 10 May 2023 15:25:26 +0000 (+0200) Subject: Convert mdsal-binding-dom-adapter to a JPMS module X-Git-Tag: v12.0.0~65 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=eab9b7696b3fc547652934bb927fe5c9b27e1857;p=mdsal.git Convert mdsal-binding-dom-adapter to a JPMS module Convert to a JPMS module to hide internals from the outside world. JIRA: MDSAL-750 Change-Id: Ibdc5ff8cd6ad4512865d3ffc58ebcc5ecd428aac Signed-off-by: Samuel Schneider Signed-off-by: Robert Varga --- diff --git a/binding/mdsal-binding-dom-adapter/pom.xml b/binding/mdsal-binding-dom-adapter/pom.xml index cf1bce35e8..cac4a185b5 100644 --- a/binding/mdsal-binding-dom-adapter/pom.xml +++ b/binding/mdsal-binding-dom-adapter/pom.xml @@ -112,18 +112,15 @@ org.opendaylight.mdsal mdsal-binding-test-model + + org.mockito + mockito-subclass + test + - - org.apache.felix - maven-bundle-plugin - true - - org.opendaylight.mdsal.binding.dom.adapter - - maven-jar-plugin diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/module-info.java b/binding/mdsal-binding-dom-adapter/src/main/java/module-info.java new file mode 100644 index 0000000000..e12bfd71a7 --- /dev/null +++ b/binding/mdsal-binding-dom-adapter/src/main/java/module-info.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2023 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +import org.opendaylight.mdsal.binding.dom.adapter.AdapterContext; +import org.opendaylight.mdsal.binding.dom.adapter.BindingAdapterFactory; +import org.opendaylight.mdsal.binding.dom.adapter.ConstantAdapterContext; +import org.opendaylight.mdsal.binding.dom.adapter.query.DefaultQueryFactory; +import org.opendaylight.mdsal.binding.dom.adapter.spi.AdapterFactory; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory; +import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory; +import org.opendaylight.mdsal.binding.api.query.QueryFactory; + +module org.opendaylight.mdsal.binding.dom.adapter { + exports org.opendaylight.mdsal.binding.dom.adapter; + exports org.opendaylight.mdsal.binding.dom.adapter.spi; + + provides AdapterFactory with BindingAdapterFactory; + provides AdapterContext with ConstantAdapterContext; + provides QueryFactory with DefaultQueryFactory; + + uses BindingCodecTreeFactory; + uses BindingDOMCodecFactory; + + requires transitive com.google.common; + requires transitive org.opendaylight.mdsal.binding.api; + requires transitive org.opendaylight.mdsal.binding.dom.codec.spi; + requires transitive org.opendaylight.mdsal.dom.api; + requires transitive org.opendaylight.yangtools.yang.data.impl; + requires org.opendaylight.mdsal.binding.dom.codec.api; + requires org.opendaylight.mdsal.binding.spec.util; + requires org.opendaylight.mdsal.dom.spi; + requires org.slf4j; + + // OSGi is optional + requires static org.osgi.framework; + requires static org.osgi.service.component; + requires static org.osgi.util.tracker; + + // Annotations + requires static javax.inject; + requires static org.kohsuke.metainf_services; + requires static org.eclipse.jdt.annotation; + requires static org.gaul.modernizer_maven_annotations; + requires static org.osgi.service.component.annotations; +} 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 97840294c6..2b08b4046d 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 @@ -9,9 +9,10 @@ package org.opendaylight.mdsal.binding.dom.adapter; import static org.junit.Assert.assertEquals; +import java.util.ServiceLoader; import org.junit.Test; import org.opendaylight.mdsal.binding.api.ActionSpec; -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext; +import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory; import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers; import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.Cont; import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.Grpcont; @@ -28,8 +29,8 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absol public class ActionLookupTest { @Test public void testActionPath() { - CurrentAdapterSerializer codec = new CurrentAdapterSerializer(new BindingCodecContext( - BindingRuntimeHelpers.createRuntimeContext())); + CurrentAdapterSerializer codec = new CurrentAdapterSerializer(ServiceLoader.load(BindingDOMCodecFactory.class) + .findFirst().orElseThrow().createBindingDOMCodec(BindingRuntimeHelpers.createRuntimeContext())); assertEquals(Absolute.of(Cont.QNAME, Foo.QNAME), codec.getActionPath( ActionSpec.builder(Cont.class).build(Foo.class))); 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 cf739f471f..82808c2a83 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 @@ -15,10 +15,11 @@ import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.SetMultimap; import java.lang.reflect.Method; import java.util.Map; +import java.util.ServiceLoader; import java.util.Set; import org.junit.Test; import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractSchemaAwareTest; -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext; +import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory; import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService; import org.opendaylight.yangtools.yang.common.QNameModule; @@ -34,7 +35,8 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { @Override protected void setupWithRuntimeContext(final BindingRuntimeContext runtimeContext) { - serializer = new CurrentAdapterSerializer(new BindingCodecContext(runtimeContext)); + serializer = new CurrentAdapterSerializer(ServiceLoader.load(BindingDOMCodecFactory.class) + .findFirst().orElseThrow().createBindingDOMCodec(runtimeContext)); } @Test diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializerTest.java index 7b9eafcc14..a2e8e9b8a8 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/CurrentAdapterSerializerTest.java @@ -18,8 +18,9 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Map.Entry; +import java.util.ServiceLoader; import org.junit.Test; -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext; +import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory; import org.opendaylight.mdsal.binding.generator.impl.DefaultBindingRuntimeGenerator; import org.opendaylight.mdsal.binding.runtime.api.DefaultBindingRuntimeContext; import org.opendaylight.mdsal.binding.runtime.api.ModuleInfoSnapshot; @@ -107,9 +108,10 @@ public class CurrentAdapterSerializerTest { private static Entry, DataObject> fromNormalizedNode(final NormalizedNode data, final EffectiveModelContext schemaCtx) { - final CurrentAdapterSerializer codec = new CurrentAdapterSerializer(new BindingCodecContext( - new DefaultBindingRuntimeContext(new DefaultBindingRuntimeGenerator().generateTypeMapping(schemaCtx), - TestingModuleInfoSnapshot.INSTANCE))); + final CurrentAdapterSerializer codec = new CurrentAdapterSerializer( + ServiceLoader.load(BindingDOMCodecFactory.class).findFirst().orElseThrow().createBindingDOMCodec( + new DefaultBindingRuntimeContext(new DefaultBindingRuntimeGenerator() + .generateTypeMapping(schemaCtx), TestingModuleInfoSnapshot.INSTANCE))); final YangInstanceIdentifier path = YangInstanceIdentifier.of(NodeIdentifier.create(QName.create( "urn:test", "2017-01-01", "cont"))); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvokerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvokerTest.java index bd3a0e2fb6..4d11ed0388 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvokerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvokerTest.java @@ -19,6 +19,7 @@ import com.google.common.util.concurrent.UncheckedExecutionException; import java.lang.invoke.MethodHandle; import java.lang.invoke.WrongMethodTypeException; import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.notification.rev150205.OpendaylightTestNotificationListener; import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.Notification; @@ -28,7 +29,7 @@ import org.opendaylight.yangtools.yang.common.QName; public class NotificationListenerInvokerTest { @Test public void fromTest() throws Exception { - assertNotNull(NotificationListenerInvoker.from(TestInterface.class)); + assertNotNull(NotificationListenerInvoker.from(OpendaylightTestNotificationListener.class)); } @Test @@ -53,12 +54,6 @@ public class NotificationListenerInvokerTest { assertEquals("expected null but found (NotificationListener,DataContainer)void", ex.getMessage()); } - public interface TestInterface extends NotificationListener, Augmentation { - QName QNAME = QName.create("test", "test"); - - void onTestNotificationInterface(TestNotificationInterface notif); - } - private interface TestPrivateInterface extends NotificationListener, Augmentation { QName QNAME = QName.create("test", "test"); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java index eda1dc56fe..33a054a8cc 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java @@ -14,9 +14,10 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableClassToInstanceMap; +import java.util.ServiceLoader; import org.opendaylight.mdsal.binding.dom.adapter.AdapterContext; import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer; -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext; +import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory; import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices; import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext; import org.opendaylight.mdsal.dom.api.DOMSchemaService; @@ -35,7 +36,8 @@ public final class MockSchemaService implements DOMSchemaService, EffectiveModel new CacheLoader() { @Override public BindingDOMCodecServices load(final BindingRuntimeContext key) { - return new BindingCodecContext(key); + return ServiceLoader.load(BindingDOMCodecFactory.class) + .findFirst().orElseThrow().createBindingDOMCodec(key); } });