X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yanglib%2Fmdsal-yanglib-rfc8525%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fyanglib%2Frfc8525%2FYangLibrarySupport.java;h=f1b6b7127fc803c91aa54a85263b1b6737816b86;hb=c49d3af1e3c3886521af28d7a53593e22220887a;hp=4da1e6b377da7f162704fd95f48f53e156441000;hpb=11db4e7ea702ac79a4320e42fccb6d0175ef524a;p=mdsal.git diff --git a/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/YangLibrarySupport.java b/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/YangLibrarySupport.java index 4da1e6b377..f1b6b7127f 100644 --- a/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/YangLibrarySupport.java +++ b/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/YangLibrarySupport.java @@ -10,8 +10,6 @@ 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 java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -25,40 +23,52 @@ import org.opendaylight.mdsal.binding.runtime.api.ModuleInfoSnapshot; import org.opendaylight.mdsal.binding.runtime.spi.ModuleInfoSnapshotBuilder; import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver; import org.opendaylight.mdsal.yanglib.api.YangLibSupport; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.$YangModuleInfoImpl; +import org.opendaylight.mdsal.yanglib.api.YangLibraryContentBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.ModulesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibrary; import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory; import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.parser.api.YangParserException; -import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory; +import org.opendaylight.yangtools.yang.parser.api.YangParserException; +import org.opendaylight.yangtools.yang.parser.api.YangParserFactory; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.RequireServiceComponentRuntime; @Beta @NonNullByDefault @Singleton +@Component +@RequireServiceComponentRuntime public final class YangLibrarySupport implements YangLibSupport { + private static final Revision REVISION = YangLibrary.QNAME.getRevision().orElseThrow(); + private final BindingDataObjectCodecTreeNode codec; @SuppressWarnings("deprecation") private final BindingDataObjectCodecTreeNode legacyCodec; private final BindingIdentityCodec identityCodec; private final EffectiveModelContext context; + private final BindingCodecTree codecTree; @Inject - public YangLibrarySupport(final YangParserFactory parserFactory, final BindingRuntimeGenerator generator, - final BindingCodecTreeFactory codecFactory) throws YangParserException, IOException { - final ModuleInfoSnapshotBuilder builder = new ModuleInfoSnapshotBuilder("yanglib", parserFactory); - builder.registerModuleInfos(List.of($YangModuleInfoImpl.getInstance())); - final ModuleInfoSnapshot snapshot = builder.build(); + @Activate + public YangLibrarySupport(@Reference final YangParserFactory parserFactory, + @Reference final BindingRuntimeGenerator generator, @Reference final BindingCodecTreeFactory codecFactory) + throws YangParserException { + final ModuleInfoSnapshot snapshot = new ModuleInfoSnapshotBuilder(parserFactory) + .add(YangLibrary.class) + .build(); context = snapshot.getEffectiveModelContext(); - final BindingCodecTree codecTree = codecFactory.create(new DefaultBindingRuntimeContext( + codecTree = codecFactory.create(new DefaultBindingRuntimeContext( generator.generateTypeMapping(context), snapshot)); - this.identityCodec = codecTree.getIdentityCodec(); - this.codec = verifyNotNull(codecTree.getSubtreeCodec(InstanceIdentifier.create(YangLibrary.class))); - this.legacyCodec = verifyNotNull(codecTree.getSubtreeCodec(InstanceIdentifier.create(ModulesState.class))); + identityCodec = codecTree.getIdentityCodec(); + codec = verifyNotNull(codecTree.getSubtreeCodec(InstanceIdentifier.create(YangLibrary.class))); + legacyCodec = verifyNotNull(codecTree.getSubtreeCodec(InstanceIdentifier.create(ModulesState.class))); } @Override @@ -66,4 +76,14 @@ public final class YangLibrarySupport implements YangLibSupport { final SchemaContextResolver resolver) { return new MountPointContextFactoryImpl(mountId, resolver, context, identityCodec, codec, legacyCodec); } + + @Override + public Revision implementedRevision() { + return REVISION; + } + + @Override + public YangLibraryContentBuilder newContentBuilder() { + return new YangLibraryContentBuilderImpl(codecTree); + } }