From e5d4cf4db4634abaf4d9388bd3ef1036927122bd Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 20 Apr 2022 07:13:58 +0200 Subject: [PATCH] Convert mdsal-binding-dom-codec-osgi to a JPMS module This is a simple implementation, convert it to JPMS module, fixing up warnings in the process of doing so. JIRA: MDSAL-641 Change-Id: I03f71512580ae9c6b48d5acd0d0c6e77a02f3e82 Signed-off-by: Robert Varga --- binding/mdsal-binding-dom-codec-osgi/pom.xml | 25 ++++++++++++++++++- .../src/main/java/module-info.java | 25 +++++++++++++++++++ .../codec/osgi/impl/OSGiBindingDOMCodec.java | 21 ++++++++++------ 3 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 binding/mdsal-binding-dom-codec-osgi/src/main/java/module-info.java diff --git a/binding/mdsal-binding-dom-codec-osgi/pom.xml b/binding/mdsal-binding-dom-codec-osgi/pom.xml index 5f157eb291..abf540296a 100644 --- a/binding/mdsal-binding-dom-codec-osgi/pom.xml +++ b/binding/mdsal-binding-dom-codec-osgi/pom.xml @@ -20,14 +20,38 @@ bundle + + com.google.guava + guava + + + org.opendaylight.yangtools + yang-data-api + + + org.opendaylight.mdsal + mdsal-binding-dom-codec-api + org.opendaylight.mdsal mdsal-binding-dom-codec-spi + + org.opendaylight.mdsal + mdsal-binding-runtime-api + org.opendaylight.mdsal mdsal-binding-runtime-osgi + + org.opendaylight.mdsal + mdsal-dom-schema-osgi + + + org.opendaylight.mdsal + yang-binding + org.osgi org.osgi.framework @@ -63,7 +87,6 @@ maven-bundle-plugin - org.opendaylight.mdsal.binding.dom.codec.osgi <_dsannotations-options>norequirements diff --git a/binding/mdsal-binding-dom-codec-osgi/src/main/java/module-info.java b/binding/mdsal-binding-dom-codec-osgi/src/main/java/module-info.java new file mode 100644 index 0000000000..b30d3c947c --- /dev/null +++ b/binding/mdsal-binding-dom-codec-osgi/src/main/java/module-info.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2022 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 + */ +module org.opendaylight.mdsal.binding.dom.codec.osgi { + exports org.opendaylight.mdsal.binding.dom.codec.osgi; + + requires transitive org.opendaylight.mdsal.dom.schema.osgi; + requires org.opendaylight.mdsal.binding.dom.codec.api; + requires org.opendaylight.mdsal.binding.dom.codec.spi; + requires org.opendaylight.mdsal.binding.runtime.osgi; + requires org.opendaylight.yangtools.yang.binding; + requires org.opendaylight.yangtools.yang.data.api; + requires org.osgi.framework; + requires org.osgi.service.component; + requires org.slf4j; + + // Annotations + requires static org.checkerframework.checker.qual; + requires static org.gaul.modernizer_maven_annotations; + requires static org.osgi.service.component.annotations; +} diff --git a/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OSGiBindingDOMCodec.java b/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OSGiBindingDOMCodec.java index 7dbfacc19a..2c11ff7848 100644 --- a/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OSGiBindingDOMCodec.java +++ b/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OSGiBindingDOMCodec.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Set; import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.binding.dom.codec.osgi.OSGiBindingDOMCodecServices; import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory; import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext; import org.opendaylight.mdsal.binding.runtime.osgi.OSGiBindingRuntimeContext; @@ -40,7 +41,8 @@ public final class OSGiBindingDOMCodec { abstract void remove(OSGiBindingRuntimeContext runtimeContext); - abstract @NonNull AbstractInstances toActive(BindingDOMCodecFactory codecFactory, ComponentFactory factory); + abstract @NonNull AbstractInstances toActive(BindingDOMCodecFactory codecFactory, + ComponentFactory factory); abstract @NonNull AbstractInstances toInactive(); } @@ -67,7 +69,8 @@ public final class OSGiBindingDOMCodec { } @Override - AbstractInstances toActive(final BindingDOMCodecFactory codecFactory, final ComponentFactory factory) { + AbstractInstances toActive(final BindingDOMCodecFactory codecFactory, + final ComponentFactory factory) { final ActiveInstances active = new ActiveInstances(codecFactory, factory); instances.stream() .sorted(Comparator.comparing(OSGiBindingRuntimeContext::getGeneration).reversed()) @@ -82,11 +85,13 @@ public final class OSGiBindingDOMCodec { } private static final class ActiveInstances extends AbstractInstances { - private final Map instances = new IdentityHashMap<>(); + private final Map> instances = + new IdentityHashMap<>(); + private final ComponentFactory factory; private final BindingDOMCodecFactory codecFactory; - private final ComponentFactory factory; - ActiveInstances(final BindingDOMCodecFactory codecFactory, final ComponentFactory factory) { + ActiveInstances(final BindingDOMCodecFactory codecFactory, + final ComponentFactory factory) { this.codecFactory = requireNonNull(codecFactory); this.factory = requireNonNull(factory); } @@ -102,7 +107,7 @@ public final class OSGiBindingDOMCodec { @Override void remove(final OSGiBindingRuntimeContext runtimeContext) { - final ComponentInstance instance = instances.remove(runtimeContext); + final ComponentInstance instance = instances.remove(runtimeContext); if (instance != null) { instance.dispose(); } else { @@ -112,7 +117,7 @@ public final class OSGiBindingDOMCodec { @Override AbstractInstances toActive(final BindingDOMCodecFactory ignoreCodecFactory, - final ComponentFactory ignoreFactory) { + final ComponentFactory ignoreFactory) { throw new IllegalStateException("Attempted to activate active instances"); } @@ -130,7 +135,7 @@ public final class OSGiBindingDOMCodec { BindingDOMCodecFactory codecFactory = null; @Reference(target = "(component.factory=" + OSGiBindingDOMCodecServicesImpl.FACTORY_NAME + ")") - ComponentFactory contextFactory = null; + ComponentFactory contextFactory = null; @GuardedBy("this") private AbstractInstances instances = new InactiveInstances(); -- 2.36.6