--- /dev/null
+/*
+ * 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();
+}
*/
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;
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
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
*/
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;
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
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