import javax.xml.stream.XMLStreamException;
import javax.xml.transform.dom.DOMSource;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext;
+import org.opendaylight.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.mdsal.dom.api.DOMRpcResult;
import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemas;
import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceRpc;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.slf4j.Logger;
private static final Logger LOG = LoggerFactory.getLogger(LibraryModulesSchemas.class);
private static final Pattern DATE_PATTERN = Pattern.compile("(\\d{4}-\\d{2}-\\d{2})");
- private static final SchemaContext LIBRARY_CONTEXT;
-
- static {
- final ModuleInfoBackedContext moduleInfoBackedContext = ModuleInfoBackedContext.create();
- moduleInfoBackedContext.registerModuleInfo(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang
- .library.rev160621.$YangModuleInfoImpl.getInstance());
- LIBRARY_CONTEXT = moduleInfoBackedContext.tryToCreateSchemaContext().get();
- }
+ private static final EffectiveModelContext LIBRARY_CONTEXT = BindingRuntimeHelpers.createEffectiveModel(
+ ModulesState.class);
private static final NodeIdentifier MODULES_STATE_NID = NodeIdentifier.create(ModulesState.QNAME);
private static final NodeIdentifier MODULE_NID = NodeIdentifier.create(Module.QNAME);
* @return Resolved URLs with YANG schema resources for all yang modules from yang library
*/
public static LibraryModulesSchemas create(final String url) {
+ final URLConnection connection;
try {
- final URL urlConnection = new URL(requireNonNull(url));
- final URLConnection connection = urlConnection.openConnection();
-
- if (connection instanceof HttpURLConnection) {
- connection.setRequestProperty("Accept", "application/xml");
- }
-
- return createFromURLConnection(connection);
-
+ connection = new URL(requireNonNull(url)).openConnection();
} catch (final IOException e) {
LOG.warn("Unable to download yang library from {}", url, e);
return new LibraryModulesSchemas(ImmutableMap.of());
}
+
+ if (connection instanceof HttpURLConnection) {
+ connection.setRequestProperty("Accept", "application/xml");
+ }
+ return createFromURLConnection(connection);
}
private static Optional<? extends NormalizedNode<?, ?>> findModulesStateNode(final NormalizedNode<?, ?> result) {
requireNonNull(contentType, "Content type unknown");
checkState(contentType.equals("application/json") || contentType.equals("application/xml"),
"Only XML and JSON types are supported.");
- try (InputStream in = connection.getInputStream()) {
- final Optional<NormalizedNode<?, ?>> optionalModulesStateNode =
- contentType.equals("application/json") ? readJson(in) : readXml(in);
-
- if (!optionalModulesStateNode.isPresent()) {
- return new LibraryModulesSchemas(ImmutableMap.of());
- }
-
- final NormalizedNode<?, ?> modulesStateNode = optionalModulesStateNode.get();
- checkState(modulesStateNode instanceof ContainerNode,
- "Expecting container containing module list, but was %s", modulesStateNode);
- final ContainerNode modulesState = (ContainerNode) modulesStateNode;
-
- final NodeIdentifier nodeName = modulesState.getIdentifier();
- checkState(MODULES_STATE_NID.equals(nodeName), "Wrong container identifier %s", nodeName);
- return create((ContainerNode) modulesStateNode);
+ Optional<NormalizedNode<?, ?>> optionalModulesStateNode = Optional.empty();
+ try (InputStream in = connection.getInputStream()) {
+ optionalModulesStateNode = contentType.equals("application/json") ? readJson(in) : readXml(in);
} catch (final IOException e) {
LOG.warn("Unable to download yang library from {}", connection.getURL(), e);
+ }
+
+ if (!optionalModulesStateNode.isPresent()) {
return new LibraryModulesSchemas(ImmutableMap.of());
}
+
+ final NormalizedNode<?, ?> modulesStateNode = optionalModulesStateNode.get();
+ checkState(modulesStateNode instanceof ContainerNode, "Expecting container containing module list, but was %s",
+ modulesStateNode);
+ final ContainerNode modulesState = (ContainerNode) modulesStateNode;
+ final NodeIdentifier nodeName = modulesState.getIdentifier();
+ checkState(MODULES_STATE_NID.equals(nodeName), "Wrong container identifier %s", nodeName);
+
+ return create((ContainerNode) modulesStateNode);
}
private static boolean guessJsonFromFileName(final String fileName) {