Expose FileYinTextSource 61/109661/4
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 7 Jan 2024 15:00:22 +0000 (16:00 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 7 Jan 2024 15:22:23 +0000 (16:22 +0100)
Rather than having static factory methods, expose FileYinTextSource.

JIRA: YANGTOOLS-1561
Change-Id: I02399316cb1d9f009f299abffbf1c31cf666e418
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/source/FileYinTextSource.java [moved from model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/source/YinTextFileSource.java with 62% similarity]
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/source/YinTextSource.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java

similarity index 62%
rename from model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/source/YinTextFileSource.java
rename to model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/source/FileYinTextSource.java
index d1f1358bb8371e85c025c20fd1c4066111a9b181..f5299e90dae9db040546a435ba88f61e76c38388 100644 (file)
@@ -15,37 +15,47 @@ import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Delegator;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
 
 /**
  * A {@link YinTextSource} backed by a file.
  */
-final class YinTextFileSource extends YinTextSource implements Delegator<Path> {
-    private final @NonNull Path path;
+@NonNullByDefault
+public class FileYinTextSource extends YinTextSource implements Delegator<Path> {
+    private final Path path;
 
-    YinTextFileSource(final @NonNull SourceIdentifier sourceId, final @NonNull Path path) {
+    public FileYinTextSource(final SourceIdentifier sourceId, final Path path) {
         super(sourceId);
+        if (!Files.isRegularFile(path)) {
+            throw new IllegalArgumentException("Supplied path " + path + " is not a regular file");
+        }
         this.path = requireNonNull(path);
     }
 
+    public FileYinTextSource(final Path path) {
+        // FIXME: do not use toFile() here
+        this(SourceIdentifier.ofYinFileName(path.toFile().getName()), path);
+    }
+
     @Override
-    public Path getDelegate() {
+    public final Path getDelegate() {
         return path;
     }
 
     @Override
-    public InputStream openStream() throws IOException {
+    public final InputStream openStream() throws IOException {
         return Files.newInputStream(path);
     }
 
     @Override
-    protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
-        return super.addToStringAttributes(toStringHelper).add("path", path);
+    public final @NonNull String symbolicName() {
+        return path.toString();
     }
 
     @Override
-    public String symbolicName() {
-        return path.toString();
+    protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
+        return super.addToStringAttributes(toStringHelper).add("path", path);
     }
 }
index 4e36cde7e51f24e46ad3fd446351b8f510d159e2..255c258c14b327d16eecbdc728b81df601a78bb9 100644 (file)
@@ -13,8 +13,6 @@ import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.io.ByteSource;
 import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.source.YinSourceRepresentation;
@@ -56,12 +54,4 @@ public abstract class YinTextSource extends ByteSource implements YinSourceRepre
     protected ToStringHelper addToStringAttributes(final @NonNull ToStringHelper toStringHelper) {
         return toStringHelper.add("identifier", sourceId);
     }
-
-    public static @NonNull YinTextSource forPath(final Path path) {
-        if (Files.isRegularFile(path)) {
-            // FIXME: do not use toFile() here
-            return new YinTextFileSource(SourceIdentifier.ofYinFileName(path.toFile().getName()), path);
-        }
-        throw new IllegalArgumentException("Supplied path " + path + " is not a regular file");
-    }
 }
index d5b05155a2676a2a3277c46ea72c161e1fa68ed8..4adf764cc8996a0ad503da1619126bb12a1cbd3a 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.stmt;
 
-import com.google.common.io.Files;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
@@ -24,9 +23,8 @@ import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureSet;
-import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYinTextSource;
+import org.opendaylight.yangtools.yang.model.spi.source.FileYinTextSource;
 import org.opendaylight.yangtools.yang.model.spi.source.YangTextSource;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException;
@@ -151,10 +149,8 @@ public final class StmtTestUtils {
         final var files = new File(resourceDir.toURI()).listFiles(YIN_FILE_FILTER);
         final var sources = new StatementStreamSource[files.length];
         for (int i = 0; i < files.length; i++) {
-            final var file = files[i];
             sources[i] = YinStatementStreamSource.create(YinTextToDomTransformer.transformSource(
-                new DelegatedYinTextSource(SourceIdentifier.ofYinFileName(file.getName()),
-                    Files.asByteSource(file))));
+                new FileYinTextSource(files[i].toPath())));
         }
 
         return parseYinSources(config, sources);
index f6c8f08764e36794c75e98352c3503cb0df7ff89..e36577b76270280d583a6c02231b87f71971a487 100644 (file)
@@ -24,6 +24,7 @@ import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureSet;
+import org.opendaylight.yangtools.yang.model.spi.source.FileYinTextSource;
 import org.opendaylight.yangtools.yang.model.spi.source.YangTextSource;
 import org.opendaylight.yangtools.yang.model.spi.source.YinTextSource;
 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
@@ -112,7 +113,7 @@ public final class TestUtils {
 
         for (File file : new File(resourceDirectory).listFiles()) {
             reactor.addSource(YinStatementStreamSource.create(YinTextToDomTransformer.transformSource(
-                YinTextSource.forPath(file.toPath()))));
+                new FileYinTextSource(file.toPath()))));
         }
 
         return reactor.buildEffective();