Add ForwardingYangLibSupport 55/93055/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 14 Oct 2020 14:48:23 +0000 (16:48 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 15 Oct 2020 04:40:44 +0000 (06:40 +0200)
OSGi wiring for YangLibSupport is using forwarding in two
implementations. Simplify both by factoring out
ForwardingYangLibSupport.

Change-Id: I05a48ebd689a47c248d79f8bdb878994098ce63f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/spi/ForwardingYangLibSupport.java [new file with mode: 0644]
yanglib/mdsal-yanglib-rfc7895/src/main/java/org/opendaylight/mdsal/yanglib/rfc7895/OSGiYangModuleLibrarySupport.java
yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/OSGiYangLibrarySupport.java

diff --git a/yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/spi/ForwardingYangLibSupport.java b/yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/spi/ForwardingYangLibSupport.java
new file mode 100644 (file)
index 0000000..8296b7d
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020 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
+ */
+package org.opendaylight.mdsal.yanglib.spi;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ForwardingObject;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver;
+import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
+import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
+import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
+import org.opendaylight.yangtools.yang.common.Revision;
+
+@Beta
+public abstract class ForwardingYangLibSupport extends ForwardingObject implements YangLibSupport {
+    @Override
+    public MountPointContextFactory createMountPointContextFactory(final MountPointIdentifier mountId,
+            final SchemaContextResolver resolver) {
+        return delegate().createMountPointContextFactory(mountId, resolver);
+    }
+
+    @Override
+    public Revision implementedRevision() {
+        return delegate().implementedRevision();
+    }
+
+    @Override
+    protected abstract @NonNull YangLibSupport delegate();
+}
index 851ea7ef3c6a167af34925d56d34c52f4f6802f8..1d334f03cb9e364b335a97040d63eb6f5bdc4475 100644 (file)
@@ -7,15 +7,14 @@
  */
 package org.opendaylight.mdsal.yanglib.rfc7895;
 
+import static com.google.common.base.Verify.verifyNotNull;
+
 import com.google.common.annotations.Beta;
 import java.io.IOException;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeGenerator;
-import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver;
 import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.mdsal.yanglib.spi.ForwardingYangLibSupport;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory;
 import org.osgi.service.component.annotations.Activate;
@@ -26,8 +25,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Beta
-@Component(immediate = true)
-public final class OSGiYangModuleLibrarySupport implements YangLibSupport {
+@Component(immediate = true, service = YangLibSupport.class)
+// FIXME: merge with YangModuleLibrarySupport once we have constructor injection
+public final class OSGiYangModuleLibrarySupport extends ForwardingYangLibSupport {
     private static final Logger LOG = LoggerFactory.getLogger(OSGiYangModuleLibrarySupport.class);
 
     @Reference
@@ -40,14 +40,8 @@ public final class OSGiYangModuleLibrarySupport implements YangLibSupport {
     private YangModuleLibrarySupport delegate;
 
     @Override
-    public MountPointContextFactory createMountPointContextFactory(final MountPointIdentifier mountId,
-            final SchemaContextResolver resolver) {
-        return delegate.createMountPointContextFactory(mountId, resolver);
-    }
-
-    @Override
-    public Revision implementedRevision() {
-        return delegate.implementedRevision();
+    protected YangLibSupport delegate() {
+        return verifyNotNull(delegate);
     }
 
     @Activate
index ee9bcb4ae84a8d332df8c199dce2f0fe2f61aec5..ed81a74235de1ccdf9876fa53132c5c3e3322444 100644 (file)
@@ -7,15 +7,14 @@
  */
 package org.opendaylight.mdsal.yanglib.rfc8525;
 
+import static com.google.common.base.Verify.verifyNotNull;
+
 import com.google.common.annotations.Beta;
 import java.io.IOException;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeGenerator;
-import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver;
 import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.mdsal.yanglib.spi.ForwardingYangLibSupport;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory;
 import org.osgi.service.component.annotations.Activate;
@@ -26,8 +25,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Beta
-@Component(immediate = true)
-public final class OSGiYangLibrarySupport implements YangLibSupport {
+@Component(immediate = true, service = YangLibSupport.class)
+// FIXME: merge with YangLibrarySupport once we have constructor injection
+public final class OSGiYangLibrarySupport extends ForwardingYangLibSupport {
     private static final Logger LOG = LoggerFactory.getLogger(OSGiYangLibrarySupport.class);
 
     @Reference
@@ -40,14 +40,8 @@ public final class OSGiYangLibrarySupport implements YangLibSupport {
     private YangLibrarySupport delegate;
 
     @Override
-    public MountPointContextFactory createMountPointContextFactory(final MountPointIdentifier mountId,
-            final SchemaContextResolver resolver) {
-        return delegate.createMountPointContextFactory(mountId, resolver);
-    }
-
-    @Override
-    public Revision implementedRevision() {
-        return delegate.implementedRevision();
+    protected YangLibSupport delegate() {
+        return verifyNotNull(delegate);
     }
 
     @Activate