<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
<artifactId>rfc7895</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-parser-api</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-dom-codec</artifactId>
+ <artifactId>mdsal-binding-runtime-api</artifactId>
</dependency>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-parser-api</artifactId>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec-api</artifactId>
</dependency>
<dependency>
<groupId>org.kohsuke.metainf-services</groupId>
<artifactId>yang-parser-impl</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
import com.google.common.annotations.Beta;
import java.io.IOException;
import org.opendaylight.binding.runtime.api.BindingRuntimeGenerator;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver;
import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
YangParserFactory parserFactory = null;
@Reference
BindingRuntimeGenerator generator = null;
+ @Reference
+ BindingCodecTreeFactory codecFactory = null;
private YangModuleLibrarySupport delegate;
@Activate
void activate() throws YangParserException, IOException {
- delegate = new YangModuleLibrarySupport(parserFactory, generator);
+ delegate = new YangModuleLibrarySupport(parserFactory, generator, codecFactory);
LOG.info("RFC7895 YANG Module Library support activated");
}
import org.opendaylight.binding.runtime.api.BindingRuntimeGenerator;
import org.opendaylight.binding.runtime.api.DefaultBindingRuntimeContext;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
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.rev160621.$YangModuleInfoImpl;
private final EffectiveModelContext context;
@Inject
- public YangModuleLibrarySupport(final YangParserFactory parserFactory, final BindingRuntimeGenerator generator)
- throws YangParserException, IOException {
+ public YangModuleLibrarySupport(final YangParserFactory parserFactory, final BindingRuntimeGenerator generator,
+ final BindingCodecTreeFactory codecFactory) throws YangParserException, IOException {
final YangModuleInfo yangLibModule = $YangModuleInfoImpl.getInstance();
context = parserFactory.createParser()
YangModuleLibrarySupport::createSource))
.addSource(createSource(yangLibModule))
.buildEffectiveModel();
- final BindingCodecTree codecTree = new BindingNormalizedNodeCodecRegistry(DefaultBindingRuntimeContext.create(
- generator.generateTypeMapping(context), SimpleStrategy.INSTANCE)).getCodecContext();
+ final BindingCodecTree codecTree = codecFactory.create(DefaultBindingRuntimeContext.create(
+ generator.generateTypeMapping(context), SimpleStrategy.INSTANCE));
this.codec = verifyNotNull(codecTree.getSubtreeCodec(InstanceIdentifier.create(ModulesState.class)));
}
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.kohsuke.MetaInfServices;
import org.opendaylight.binding.runtime.api.BindingRuntimeGenerator;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
import org.opendaylight.mdsal.yanglib.api.YangLibSupportFactory;
import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
@MetaInfServices
@NonNullByDefault
public final class YangModuleLibrarySupportFactory implements YangLibSupportFactory {
+ private final BindingCodecTreeFactory codecFactory;
private final BindingRuntimeGenerator generator;
public YangModuleLibrarySupportFactory() {
- this(ServiceLoader.load(BindingRuntimeGenerator.class).findFirst()
- .orElseThrow(() -> new IllegalStateException("Failed to find a BindingRuntimeGenerator service")));
+ this(load(BindingRuntimeGenerator.class), load(BindingCodecTreeFactory.class));
}
- public YangModuleLibrarySupportFactory(final BindingRuntimeGenerator generator) {
+ public YangModuleLibrarySupportFactory(final BindingRuntimeGenerator generator,
+ final BindingCodecTreeFactory codecFactory) {
this.generator = requireNonNull(generator);
+ this.codecFactory = requireNonNull(codecFactory);
}
@Override
public YangLibSupport createYangLibSupport(final YangParserFactory parserFactory)
throws YangParserException, IOException {
- return new YangModuleLibrarySupport(parserFactory, generator);
+ return new YangModuleLibrarySupport(parserFactory, generator, codecFactory);
+ }
+
+ private static <T> T load(final Class<T> clazz) {
+ return ServiceLoader.load(clazz).findFirst()
+ .orElseThrow(() -> new IllegalStateException("Failed to find a " + clazz.getSimpleName() + " service"));
}
}
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
<artifactId>rfc8525</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-parser-api</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-dom-codec</artifactId>
+ <artifactId>mdsal-binding-runtime-api</artifactId>
</dependency>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-parser-api</artifactId>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec-api</artifactId>
</dependency>
<dependency>
<groupId>org.kohsuke.metainf-services</groupId>
<artifactId>yang-parser-impl</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
import com.google.common.annotations.Beta;
import java.io.IOException;
import org.opendaylight.binding.runtime.api.BindingRuntimeGenerator;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver;
import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
YangParserFactory parserFactory = null;
@Reference
BindingRuntimeGenerator generator = null;
+ @Reference
+ BindingCodecTreeFactory codecFactory = null;
private YangLibrarySupport delegate;
@Activate
void activate() throws YangParserException, IOException {
- delegate = new YangLibrarySupport(parserFactory, generator);
+ delegate = new YangLibrarySupport(parserFactory, generator, codecFactory);
LOG.info("RFC8525 YANG Library support activated");
}
import org.opendaylight.binding.runtime.api.BindingRuntimeGenerator;
import org.opendaylight.binding.runtime.api.DefaultBindingRuntimeContext;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingIdentityCodec;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
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;
private final EffectiveModelContext context;
@Inject
- public YangLibrarySupport(final YangParserFactory parserFactory, final BindingRuntimeGenerator generator)
- throws YangParserException, IOException {
+ public YangLibrarySupport(final YangParserFactory parserFactory, final BindingRuntimeGenerator generator,
+ final BindingCodecTreeFactory codecFactory) throws YangParserException, IOException {
final YangModuleInfo yangLibModule = $YangModuleInfoImpl.getInstance();
context = parserFactory.createParser()
YangLibrarySupport::createSource))
.addSource(createSource(yangLibModule))
.buildEffectiveModel();
- final BindingCodecTree codecTree = new BindingNormalizedNodeCodecRegistry(DefaultBindingRuntimeContext.create(
- generator.generateTypeMapping(context), SimpleStrategy.INSTANCE)).getCodecContext();
+ final BindingCodecTree codecTree = codecFactory.create(DefaultBindingRuntimeContext.create(
+ generator.generateTypeMapping(context), SimpleStrategy.INSTANCE));
this.identityCodec = codecTree.getIdentityCodec();
this.codec = verifyNotNull(codecTree.getSubtreeCodec(InstanceIdentifier.create(YangLibrary.class)));
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.kohsuke.MetaInfServices;
import org.opendaylight.binding.runtime.api.BindingRuntimeGenerator;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
import org.opendaylight.mdsal.yanglib.api.YangLibSupportFactory;
import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
@MetaInfServices
@NonNullByDefault
public final class YangLibrarySupportFactory implements YangLibSupportFactory {
+ private final BindingCodecTreeFactory codecFactory;
private final BindingRuntimeGenerator generator;
public YangLibrarySupportFactory() {
- this(ServiceLoader.load(BindingRuntimeGenerator.class).findFirst()
- .orElseThrow(() -> new IllegalStateException("Failed to find a BindingRuntimeGenerator service")));
+ this(load(BindingRuntimeGenerator.class), load(BindingCodecTreeFactory.class));
}
- public YangLibrarySupportFactory(final BindingRuntimeGenerator generator) {
+ public YangLibrarySupportFactory(final BindingRuntimeGenerator generator,
+ final BindingCodecTreeFactory codecFactory) {
this.generator = requireNonNull(generator);
+ this.codecFactory = requireNonNull(codecFactory);
}
@Override
public YangLibSupport createYangLibSupport(final YangParserFactory parserFactory)
throws YangParserException, IOException {
- return new YangLibrarySupport(parserFactory, generator);
+ return new YangLibrarySupport(parserFactory, generator, codecFactory);
+ }
+
+ private static <T> T load(final Class<T> clazz) {
+ return ServiceLoader.load(clazz).findFirst()
+ .orElseThrow(() -> new IllegalStateException("Failed to find a " + clazz.getSimpleName() + " service"));
}
}