summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager-onap/onf14/provider/src
diff options
context:
space:
mode:
authorMichael Dürre <michael.duerre@highstreet-technologies.com>2022-08-31 08:46:55 +0200
committerDan Timoney <dtimoney@att.com>2022-08-31 21:04:07 +0000
commit34f89faa64f815d5cf33d0905046eaf392017b39 (patch)
tree7bd6295609feb87b3fa187602985b58e34965fe4 /sdnr/wt/devicemanager-onap/onf14/provider/src
parent63d92319b01b54d72bde494f923f80eb6c242cfe (diff)
add fixes for wt sulfur
fix devmgrs and db access Issue-ID: CCSDK-3749 Signed-off-by: Michael Dürre <michael.duerre@highstreet-technologies.com> Change-Id: I41018d2daa55b200a9ba89e784f8adf4200d32c3 Signed-off-by: Michael Dürre <michael.duerre@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt/devicemanager-onap/onf14/provider/src')
-rw-r--r--sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomAirInterfaceNotificationListener.java2
-rw-r--r--sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomEthernetContainerNotificationListener.java2
-rw-r--r--sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomWireInterfaceNotificationListener.java2
-rw-r--r--sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/Onf14DomTestUtils.java4
-rw-r--r--sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/TestYangParserUtil.java119
-rw-r--r--sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/YangParserTestUtils.java382
6 files changed, 125 insertions, 386 deletions
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomAirInterfaceNotificationListener.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomAirInterfaceNotificationListener.java
index f72158e06..c510a1ae6 100644
--- a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomAirInterfaceNotificationListener.java
+++ b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomAirInterfaceNotificationListener.java
@@ -54,6 +54,7 @@ public class Onf14DomAirInterfaceNotificationListener implements DOMNotification
@Override
public void onNotification(@NonNull DOMNotification domNotification) {
+ log.debug("Got event of type :: {}", domNotification.getType());
if (domNotification.getType()
.equals(Absolute.of(Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_CREATE_NOTIFICATION))) {
onObjectCreateNotification(domNotification);
@@ -140,6 +141,7 @@ public class Onf14DomAirInterfaceNotificationListener implements DOMNotification
Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION,
new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)));
+ log.debug("onObjectProblemNotification log entry written");
}
private void onObjectDeletionNotification(@NonNull DOMNotification domNotification) {
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomEthernetContainerNotificationListener.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomEthernetContainerNotificationListener.java
index 218ece4e7..5aa069efb 100644
--- a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomEthernetContainerNotificationListener.java
+++ b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomEthernetContainerNotificationListener.java
@@ -98,7 +98,7 @@ public class Onf14DomEthernetContainerNotificationListener implements DOMNotific
new DateAndTime(cn.childByArg(new NodeIdentifier(
Onf14DevicemanagerQNames.ETHERNET_CONTAINER_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP))
.body().toString()));
-
+ log.debug("onProblemNotification log entry written");
}
public void onAttributeValueChangedNotification(DOMNotification notification) {
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomWireInterfaceNotificationListener.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomWireInterfaceNotificationListener.java
index 5d148d3a3..401fbbe8d 100644
--- a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomWireInterfaceNotificationListener.java
+++ b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomWireInterfaceNotificationListener.java
@@ -92,7 +92,7 @@ public class Onf14DomWireInterfaceNotificationListener implements DOMNotificatio
Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION,
new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)));
-
+ log.debug("onProblemNotification log entry written");
}
public void onAttributeValueChangedNotification(DOMNotification notification) {
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/Onf14DomTestUtils.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/Onf14DomTestUtils.java
index 6dc9b50b5..ad79a5c43 100644
--- a/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/Onf14DomTestUtils.java
+++ b/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/Onf14DomTestUtils.java
@@ -82,7 +82,7 @@ public class Onf14DomTestUtils {
public static NormalizedNode getNormalizedNodeFromJson() throws IOException, URISyntaxException {
- schemaContext = YangParserTestUtils.parseYangResourceDirectory("/");
+ schemaContext = TestYangParserUtil.parseYangResourceDirectory("/");
lhotkaCodecFactory = JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext);
streamAsString =
loadTextFile(new File(Onf14DomTestUtils.class.getResource("/ControlConstruct-data-test.json").toURI()));
@@ -105,7 +105,7 @@ public class Onf14DomTestUtils {
public static NormalizedNode getNormalizedNodeFromXML()
throws XMLStreamException, URISyntaxException, IOException, SAXException {
- schemaContext = YangParserTestUtils.parseYangResourceDirectory("/");
+ schemaContext = TestYangParserUtil.parseYangResourceDirectory("/");
hwContainerSchema = Inference.ofDataTreePath(schemaContext, CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER);
final InputStream resourceAsStream =
Onf14DomTestUtils.class.getResourceAsStream("/ControlConstruct-data-test.xml");
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/TestYangParserUtil.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/TestYangParserUtil.java
new file mode 100644
index 000000000..004f08da3
--- /dev/null
+++ b/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/TestYangParserUtil.java
@@ -0,0 +1,119 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2022 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.util;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.ServiceLoader;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.YangConstants;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.parser.api.YangParser;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.parser.api.YangParserException;
+import org.opendaylight.yangtools.yang.parser.api.YangParserFactory;
+import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
+
+public final class TestYangParserUtil {
+
+ private static final FileFilter YANG_FILE_FILTER = file -> {
+ final String name = file.getName();
+ return name.endsWith(YangConstants.RFC6020_YANG_FILE_EXTENSION) && file.isFile();
+ };
+
+ private static final @NonNull YangParserFactory PARSER_FACTORY;
+
+ static {
+ final Iterator<@NonNull YangParserFactory> it = ServiceLoader.load(YangParserFactory.class).iterator();
+ if (!it.hasNext()) {
+ throw new IllegalStateException("No YangParserFactory found");
+ }
+ PARSER_FACTORY = it.next();
+ }
+
+ public static EffectiveModelContext parseYangFiles(final YangParserConfiguration config, final File... files) {
+ return parseYangFiles(config, Arrays.asList(files));
+ }
+ public static EffectiveModelContext parseYangFiles(final YangParserConfiguration config,
+ final Collection<File> files) {
+ return parseYangFiles(null, config, files.stream().map(e->e.toPath()).collect(Collectors.toList()));
+ }
+
+ public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
+ final YangParserConfiguration config, final Collection<Path> files) {
+ return parseSources(config, supportedFeatures,
+ files.stream().map(YangTextSchemaSource::forPath).collect(Collectors.toList()));
+ }
+
+
+ public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath) {
+ return parseYangResourceDirectory(resourcePath, YangParserConfiguration.DEFAULT);
+ }
+
+ public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
+ final YangParserConfiguration config) {
+ final URI directoryPath;
+ try {
+ directoryPath = TestYangParserUtil.class.getResource(resourcePath).toURI();
+ } catch (URISyntaxException e) {
+ throw new IllegalArgumentException("Failed to open resource " + resourcePath, e);
+ }
+ return parseYangFiles(config, new File(directoryPath).listFiles(YANG_FILE_FILTER));
+ }
+
+
+ public static EffectiveModelContext parseSources(final YangParserConfiguration config,
+ final Set<QName> supportedFeatures, final Collection<? extends SchemaSourceRepresentation> sources) {
+ final YangParser parser = PARSER_FACTORY.createParser(config);
+ if (supportedFeatures != null) {
+ parser.setSupportedFeatures(supportedFeatures);
+ }
+
+ try {
+ parser.addSources(sources);
+ } catch (YangSyntaxErrorException e) {
+ throw new IllegalArgumentException("Malformed source", e);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Failed to read a source", e);
+ }
+
+ try {
+ return parser.buildEffectiveModel();
+ } catch (YangParserException e) {
+ throw new IllegalStateException("Failed to assemble SchemaContext", e);
+ }
+ }
+
+}
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/YangParserTestUtils.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/YangParserTestUtils.java
deleted file mode 100644
index ee20dccae..000000000
--- a/sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/util/YangParserTestUtils.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. 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.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.util;
-
-import com.google.common.annotations.Beta;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.ServiceLoader;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.YangConstants;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.parser.api.YangParser;
-import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.api.YangParserException;
-import org.opendaylight.yangtools.yang.parser.api.YangParserFactory;
-import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
-import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
-import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
-/**
- * Utility class which provides convenience methods for producing effective schema context based on the supplied
- * yang/yin sources or paths to these sources.
- */
-@Beta
-public final class YangParserTestUtils {
-
- private static final FileFilter YANG_FILE_FILTER = file -> {
- // Locale keeps SpotBugs happy. It should not matter that much anyway.
- final String name = file.getName().toLowerCase(Locale.ENGLISH);
- return name.endsWith(YangConstants.RFC6020_YANG_FILE_EXTENSION) && file.isFile();
- };
-
- private static final @NonNull YangParserFactory PARSER_FACTORY;
-
- static {
- final Iterator<@NonNull YangParserFactory> it = ServiceLoader.load(YangParserFactory.class).iterator();
- if (!it.hasNext()) {
- throw new IllegalStateException("No YangParserFactory found");
- }
- PARSER_FACTORY = it.next();
- }
-
- private YangParserTestUtils() {
- // Hidden on purpose
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG source. Statement parser mode is set to
- * default mode and all YANG features are supported.
- *
- * @param resource relative path to the YANG file to be parsed
- *
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResource(final String resource) {
- return parseYangResource(resource, YangParserConfiguration.DEFAULT);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG source. All YANG features are supported.
- *
- * @param resource relative path to the YANG file to be parsed
- * @param parserMode mode of statement parser
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResource(final String resource, final YangParserConfiguration config) {
- return parseYangResource(resource, config, null);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG source. Statement parser mode is set to
- * default mode.
- *
- * @param resource relative path to the YANG file to be parsed
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * model are resolved
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResource(final String resource, final Set<QName> supportedFeatures) {
- return parseYangResource(resource, YangParserConfiguration.DEFAULT, supportedFeatures);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG source.
- *
- * @param resource relative path to the YANG file to be parsed
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * model are resolved
- * @param parserMode mode of statement parser
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResource(final String resource, final YangParserConfiguration config,
- final Set<QName> supportedFeatures) {
- final YangTextSchemaSource source = YangTextSchemaSource.forResource(YangParserTestUtils.class, resource);
- return parseYangSources(config, supportedFeatures, source);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode and all YANG features are supported.
- *
- * @param files YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final File... files) {
- return parseYangFiles(Arrays.asList(files));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode and all YANG features are supported.
- *
- * @param files collection of YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final Collection<File> files) {
- return parseYangFiles(YangParserConfiguration.DEFAULT, files);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode.
- *
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @param files YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures, final File... files) {
- return parseYangFiles(supportedFeatures, Arrays.asList(files));
- }
-
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
- final Collection<File> files) {
- return parseYangFiles(supportedFeatures, YangParserConfiguration.DEFAULT, files.stream().map(e->e.toPath()).collect(Collectors.toList()));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported.
- *
- * @param parserMode mode of statement parser
- * @param files YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final YangParserConfiguration config, final File... files) {
- return parseYangFiles(config, Arrays.asList(files));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported.
- *
- * @param parserMode mode of statement parser
- * @param files collection of YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final YangParserConfiguration config,
- final Collection<File> files) {
- return parseYangFiles(null, config, files.stream().map(e->e.toPath()).collect(Collectors.toList()));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources.
- *
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @param parserMode mode of statement parser
- * @param files YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
- final YangParserConfiguration config, final Path... files) {
- return parseYangFiles(supportedFeatures, config, Arrays.asList(files));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources.
- *
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @param parserMode mode of statement parser
- * @param files YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
- final YangParserConfiguration config, final Collection<Path> files) {
- return parseSources(config, supportedFeatures,
- files.stream().map(YangTextSchemaSource::forPath).collect(Collectors.toList()));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode and all YANG features are supported.
- *
- * @param resourcePath relative path to the directory with YANG files to be parsed
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath) {
- return parseYangResourceDirectory(resourcePath, YangParserConfiguration.DEFAULT);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported.
- *
- * @param resourcePath relative path to the directory with YANG files to be parsed
- * @param parserMode mode of statement parser
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
- final YangParserConfiguration config) {
- return parseYangResourceDirectory(resourcePath, null, config);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode.
- *
- * @param resourcePath relative path to the directory with YANG files to be parsed
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
- final Set<QName> supportedFeatures) {
- return parseYangResourceDirectory(resourcePath, supportedFeatures, YangParserConfiguration.DEFAULT);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources.
- *
- * @param resourcePath relative path to the directory with YANG files to be parsed
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @param parserMode mode of statement parser
- * @return effective schema context
- */
- @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "Wrong inferent on listFiles")
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
- final Set<QName> supportedFeatures, final YangParserConfiguration config) {
- final URI directoryPath;
- try {
- directoryPath = YangParserTestUtils.class.getResource(resourcePath).toURI();
- } catch (URISyntaxException e) {
- throw new IllegalArgumentException("Failed to open resource " + resourcePath, e);
- }
- File[] files = new File(directoryPath).listFiles(YANG_FILE_FILTER);
- return parseYangFiles(supportedFeatures, config, Arrays.asList(files).stream().map(e->e.toPath()).collect(Collectors.toList()));
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode and all YANG features are supported.
- *
- * @param clazz Resource lookup base
- * @param resources Resource names to be looked up
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResources(final Class<?> clazz, final String... resources) {
- return parseYangResources(clazz, Arrays.asList(resources));
- }
-
- public static EffectiveModelContext parseYangResources(final Class<?> clazz, final Collection<String> resources) {
- final List<YangTextSchemaSource> sources = new ArrayList<>(resources.size());
- for (final String r : resources) {
- sources.add(YangTextSchemaSource.forResource(clazz, r));
- }
- return parseSources(YangParserConfiguration.DEFAULT, null, sources);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to
- * default mode.
- *
- * @param yangDirs relative paths to the directories containing YANG files to be parsed
- * @param yangFiles relative paths to the YANG files to be parsed
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResources(final List<String> yangDirs, final List<String> yangFiles,
- final Set<QName> supportedFeatures) {
- return parseYangResources(yangDirs, yangFiles, supportedFeatures, YangParserConfiguration.DEFAULT);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported.
- *
- * @param yangResourceDirs relative paths to the directories containing YANG files to be parsed
- * @param yangResources relative paths to the YANG files to be parsed
- * @param statementParserMode mode of statement parser
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResources(final List<String> yangResourceDirs,
- final List<String> yangResources, final YangParserConfiguration config) {
- return parseYangResources(yangResourceDirs, yangResources, null, config);
- }
-
- /**
- * Creates a new effective schema context containing the specified YANG sources.
- *
- * @param yangResourceDirs relative paths to the directories containing YANG files to be parsed
- * @param yangResources relative paths to the YANG files to be parsed
- * @param supportedFeatures set of supported features based on which all if-feature statements in the parsed YANG
- * models are resolved
- * @param statementParserMode mode of statement parser
- * @return effective schema context
- */
- public static EffectiveModelContext parseYangResources(final List<String> yangResourceDirs,
- final List<String> yangResources, final Set<QName> supportedFeatures,
- final YangParserConfiguration config) {
- final List<File> allYangFiles = new ArrayList<>();
- for (final String yangDir : yangResourceDirs) {
- allYangFiles.addAll(getYangFiles(yangDir));
- }
-
- for (final String yangFile : yangResources) {
- try {
- allYangFiles.add(new File(YangParserTestUtils.class.getResource(yangFile).toURI()));
- } catch (URISyntaxException e) {
- throw new IllegalArgumentException("Invalid resource " + yangFile, e);
- }
- }
-
- return parseYangFiles(supportedFeatures, config, allYangFiles.stream().map(e->e.toPath()).collect(Collectors.toList()));
- }
-
- public static EffectiveModelContext parseYangSources(final YangParserConfiguration config,
- final Set<QName> supportedFeatures, final YangTextSchemaSource... sources) {
- return parseSources(config, supportedFeatures, Arrays.asList(sources));
- }
-
- public static EffectiveModelContext parseSources(final YangParserConfiguration config,
- final Set<QName> supportedFeatures, final Collection<? extends SchemaSourceRepresentation> sources) {
- final YangParser parser = PARSER_FACTORY.createParser(config);
- if (supportedFeatures != null) {
- parser.setSupportedFeatures(supportedFeatures);
- }
-
- try {
- parser.addSources(sources);
- } catch (YangSyntaxErrorException e) {
- throw new IllegalArgumentException("Malformed source", e);
- } catch (IOException e) {
- throw new IllegalArgumentException("Failed to read a source", e);
- }
-
- try {
- return parser.buildEffectiveModel();
- } catch (YangParserException e) {
- throw new IllegalStateException("Failed to assemble SchemaContext", e);
- }
- }
-
- @SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE", justification = "Wrong inferent on listFiles")
- private static Collection<File> getYangFiles(final String resourcePath) {
- final URI directoryPath;
- try {
- directoryPath = YangParserTestUtils.class.getResource(resourcePath).toURI();
- } catch (URISyntaxException e) {
- throw new IllegalArgumentException("Failed to open resource directory " + resourcePath, e);
- }
- return Arrays.asList(new File(directoryPath).listFiles(YANG_FILE_FILTER));
- }
-}