*/
package org.opendaylight.yangtools.yang.test.util;
-import static com.google.common.base.Preconditions.checkArgument;
-
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.FileFilter;
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 org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName;
+import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.common.YangConstants;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
private static final @NonNull YangParserFactory PARSER_FACTORY;
static {
- final Iterator<@NonNull YangParserFactory> it = ServiceLoader.load(YangParserFactory.class).iterator();
+ final var it = ServiceLoader.load(YangParserFactory.class).iterator();
if (!it.hasNext()) {
throw new IllegalStateException("No YangParserFactory found");
}
*
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResource(final String resource) {
+ public static @NonNull EffectiveModelContext parseYangResource(final String resource) {
return parseYangResource(resource, YangParserConfiguration.DEFAULT);
}
* @param config parser configuration
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResource(final String resource, final YangParserConfiguration config) {
+ public static @NonNull EffectiveModelContext parseYangResource(final String resource,
+ final YangParserConfiguration config) {
return parseYangResource(resource, config, null);
}
* model are resolved
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResource(final String resource, final Set<QName> supportedFeatures) {
+ public static @NonNull EffectiveModelContext parseYangResource(final String resource,
+ final Set<QName> supportedFeatures) {
return parseYangResource(resource, YangParserConfiguration.DEFAULT, supportedFeatures);
}
* @param config parser configuration
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResource(final String resource, final YangParserConfiguration config,
- final Set<QName> supportedFeatures) {
+ public static @NonNull EffectiveModelContext parseYangResource(final String resource,
+ final YangParserConfiguration config, final Set<QName> supportedFeatures) {
return parseYangSources(config, supportedFeatures,
new URLYangTextSource(YangParserTestUtils.class.getResource(resource)));
}
* @param files YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangFiles(final File... files) {
+ public static @NonNull EffectiveModelContext parseYangFiles(final File... files) {
return parseYangFiles(Arrays.asList(files));
}
* @param files collection of YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangFiles(final Collection<File> files) {
+ public static @NonNull EffectiveModelContext parseYangFiles(final Collection<File> files) {
return parseYangFiles(YangParserConfiguration.DEFAULT, files);
}
* @param files YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures, final File... files) {
+ public static @NonNull EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
+ final File... files) {
return parseYangFiles(supportedFeatures, Arrays.asList(files));
}
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
+ public static @NonNull EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
final Collection<File> files) {
return parseYangFiles(supportedFeatures, YangParserConfiguration.DEFAULT, files);
}
* @param files YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangFiles(final YangParserConfiguration config, final File... files) {
+ public static @NonNull EffectiveModelContext parseYangFiles(final YangParserConfiguration config,
+ final File... files) {
return parseYangFiles(config, Arrays.asList(files));
}
* @param files collection of YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangFiles(final YangParserConfiguration config,
+ public static @NonNull EffectiveModelContext parseYangFiles(final YangParserConfiguration config,
final Collection<File> files) {
return parseYangFiles(null, config, files);
}
* @param files YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
+ public static @NonNull EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
final YangParserConfiguration config, final File... files) {
return parseYangFiles(supportedFeatures, config, Arrays.asList(files));
}
* @return effective schema context
*/
// FIXME: use Java.nio.file.Path
- public static EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
+ public static @NonNull EffectiveModelContext parseYangFiles(final Set<QName> supportedFeatures,
final YangParserConfiguration config, final Collection<File> files) {
return parseSources(config, supportedFeatures,
files.stream().map(file -> new FileYangTextSource(file.toPath())).toList());
* @param resourcePath relative path to the directory with YANG files to be parsed
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath) {
+ public static @NonNull EffectiveModelContext parseYangResourceDirectory(final String resourcePath) {
return parseYangResourceDirectory(resourcePath, YangParserConfiguration.DEFAULT);
}
* @param config parser configuration
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
+ public static @NonNull EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
final YangParserConfiguration config) {
return parseYangResourceDirectory(resourcePath, null, config);
}
* models are resolved
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
+ public static @NonNull EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
final Set<QName> supportedFeatures) {
return parseYangResourceDirectory(resourcePath, supportedFeatures, YangParserConfiguration.DEFAULT);
}
* @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,
+ public static @NonNull EffectiveModelContext parseYangResourceDirectory(final String resourcePath,
final Set<QName> supportedFeatures, final YangParserConfiguration config) {
final URI directoryPath;
try {
* @param resources Resource names to be looked up
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResources(final Class<?> clazz, final String... resources) {
+ public static @NonNull 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) {
+ public static @NonNull EffectiveModelContext parseYangResources(final Class<?> clazz,
+ final Collection<String> resources) {
return parseSources(YangParserConfiguration.DEFAULT, null, resources.stream()
.map(resource -> new URLYangTextSource(clazz.getResource(resource)))
.toList());
* models are resolved
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResources(final List<String> yangDirs, final List<String> yangFiles,
- final Set<QName> supportedFeatures) {
+ public static @NonNull EffectiveModelContext parseYangResources(final List<String> yangDirs,
+ final List<String> yangFiles, final Set<QName> supportedFeatures) {
return parseYangResources(yangDirs, yangFiles, supportedFeatures, YangParserConfiguration.DEFAULT);
}
* @param config parser configuration
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResources(final List<String> yangResourceDirs,
+ public static @NonNull EffectiveModelContext parseYangResources(final List<String> yangResourceDirs,
final List<String> yangResources, final YangParserConfiguration config) {
return parseYangResources(yangResourceDirs, yangResources, null, config);
}
* @param config parser configuration
* @return effective schema context
*/
- public static EffectiveModelContext parseYangResources(final List<String> yangResourceDirs,
+ public static @NonNull EffectiveModelContext parseYangResources(final List<String> yangResourceDirs,
final List<String> yangResources, final Set<QName> supportedFeatures,
final YangParserConfiguration config) {
final List<File> allYangFiles = new ArrayList<>();
return parseYangFiles(supportedFeatures, config, allYangFiles);
}
- public static EffectiveModelContext parseYangSources(final YangParserConfiguration config,
+ public static @NonNull EffectiveModelContext parseYangSources(final YangParserConfiguration config,
final Set<QName> supportedFeatures, final YangTextSource... sources) {
return parseSources(config, supportedFeatures, Arrays.asList(sources));
}
- public static EffectiveModelContext parseSources(final YangParserConfiguration config,
+ public static @NonNull EffectiveModelContext parseSources(final YangParserConfiguration config,
final Set<QName> supportedFeatures, final Collection<? extends SourceRepresentation> sources) {
final YangParser parser = PARSER_FACTORY.createParser(config);
if (supportedFeatures != null) {
* @param sources list of yang sources in plain string
* @return effective schema context
*/
- public static EffectiveModelContext parseYang(final String... sources) {
+ public static @NonNull EffectiveModelContext parseYang(final String... sources) {
return parseSources(YangParserConfiguration.DEFAULT, null,
Arrays.stream(sources).map(YangParserTestUtils::createYangTextSource).toList());
}
return Arrays.asList(new File(directoryPath).listFiles(YANG_FILE_FILTER));
}
-
/**
* Create a new {@link YangTextSource} backed by a String input.
*
// word of the first line
final var firstLine = sourceString.substring(0, sourceString.indexOf("{")).strip().split(" ");
final var moduleOrSubmoduleString = firstLine[0].strip();
- checkArgument(moduleOrSubmoduleString.equals("module") || moduleOrSubmoduleString.equals("submodule"));
-
- final String arg = firstLine[1].strip();
- final var localName = UnresolvedQName.tryLocalName(arg);
- checkArgument(localName != null);
- return new StringYangTextSource(new SourceIdentifier(localName), sourceString, arg);
+ return switch (moduleOrSubmoduleString) {
+ case "module", "submodule" -> {
+ final String arg = firstLine[1].strip();
+ yield new StringYangTextSource(new SourceIdentifier(Unqualified.of(arg)), sourceString, arg);
+ }
+ default -> throw new IllegalArgumentException("Unknown statement " + moduleOrSubmoduleString);
+ };
}
}