From 48000bfc57f2f974d0114df51e444f9b731b9f0f Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 14 Oct 2020 16:48:23 +0200 Subject: [PATCH] Add ForwardingYangLibSupport OSGi wiring for YangLibSupport is using forwarding in two implementations. Simplify both by factoring out ForwardingYangLibSupport. Change-Id: I05a48ebd689a47c248d79f8bdb878994098ce63f Signed-off-by: Robert Varga --- .../yanglib/spi/ForwardingYangLibSupport.java | 34 +++++++++++++++++++ .../rfc7895/OSGiYangModuleLibrarySupport.java | 22 +++++------- .../rfc8525/OSGiYangLibrarySupport.java | 22 +++++------- 3 files changed, 50 insertions(+), 28 deletions(-) create mode 100644 yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/spi/ForwardingYangLibSupport.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 index 0000000000..8296b7d2b3 --- /dev/null +++ b/yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/spi/ForwardingYangLibSupport.java @@ -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(); +} diff --git a/yanglib/mdsal-yanglib-rfc7895/src/main/java/org/opendaylight/mdsal/yanglib/rfc7895/OSGiYangModuleLibrarySupport.java b/yanglib/mdsal-yanglib-rfc7895/src/main/java/org/opendaylight/mdsal/yanglib/rfc7895/OSGiYangModuleLibrarySupport.java index 851ea7ef3c..1d334f03cb 100644 --- a/yanglib/mdsal-yanglib-rfc7895/src/main/java/org/opendaylight/mdsal/yanglib/rfc7895/OSGiYangModuleLibrarySupport.java +++ b/yanglib/mdsal-yanglib-rfc7895/src/main/java/org/opendaylight/mdsal/yanglib/rfc7895/OSGiYangModuleLibrarySupport.java @@ -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 diff --git a/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/OSGiYangLibrarySupport.java b/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/OSGiYangLibrarySupport.java index ee9bcb4ae8..ed81a74235 100644 --- a/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/OSGiYangLibrarySupport.java +++ b/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/OSGiYangLibrarySupport.java @@ -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 -- 2.36.6