Loading plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/YANGConverter.java +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ public class YANGConverter { // inputPath = "samples/simple/links.yang"; // inputPath = "samples/simple/example.yang"; // inputPath = "samples/simple/acme.yang"; inputPath = "samples/simple"; inputPath = "samples"; String output = processToString(inputPath, inputPath+".tdltx"); System.out.println(output); } Loading plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/Yang2TDLTranslator.java +58 −21 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.List; import java.util.stream.Collectors; import org.eclipse.core.resources.IProject; import org.etsi.mts.tdl.CollectionDataType; import org.etsi.mts.tdl.DataType; import org.etsi.mts.tdl.EnumDataType; Loading @@ -19,6 +20,7 @@ import org.etsi.mts.tdl.StructuredDataInstance; import org.etsi.mts.tdl.StructuredDataType; import org.etsi.mts.tdl.tdlFactory; import org.etsi.mts.tdl.tdlPackage; import org.etsi.mts.tdl.helper.TDLHelper; import org.etsi.mts.tdl.transform.AbstractTranslator; import org.opendaylight.yangtools.odlext.parser.MountStatementSupport; import org.opendaylight.yangtools.yang.common.QName; Loading Loading @@ -72,34 +74,69 @@ public class Yang2TDLTranslator extends AbstractTranslator { drm = getTypeFor(sourceMappingTag, tdlPackage.Literals.DATA_RESOURCE_MAPPING); drm.setResourceURI(new File(targetFilename).getName()); //TODO: resolve files //TODO: extract CrossSourceStatementReactor reactor = createReactor(); BuildAction build = reactor.newBuild(); Files.list(Path.of("samples", "ietf")) .filter(p->p.toString().endsWith("yang")) .forEach(p -> build.addLibSource(moduleFromPath(p.toString())) ); Files.list(Path.of("samples", "nfv")) .filter(p->p.toString().endsWith("yang")) .forEach(p -> build.addSource(moduleFromPath(p.toString())) //TODO: extract //DONE: resolve files -> load everything from the root folder (naive approach) //TODO: handle folders as well? //TODO: handle duplicates modules? System.out.println("Load YANG libraries from parent:"); Path target = Path.of(targetFilename); Path parent = target; while (parent.getParent() != null) { parent = parent.getParent(); } if (parent != target) { Files.walk(parent).filter(f-> f.toFile().isFile() && f.toString().endsWith(".yang") && !f.toString().equals(targetFilename) ).forEach(f -> { System.out.println(f); build.addLibSource(moduleFromPath(f.toString())); } ); // Files.list(Path.of("samples", "mwt")) // Files.find(parent, 20, (f, p) -> // p.isRegularFile() && // f.toString().endsWith(".yang") && // !f.toString().equals(targetFilename) // ).forEach(f -> { // System.out.println(f); // build.addLibSource(moduleFromPath(f.toString())); // } // ); } //TODO: provide some base libraries by default? // Files.list(Path.of("samples", "ietf")) // .filter(p->p.toString().endsWith("yang")) // .forEach(p -> // build.addSource(moduleFromPath(p.toString())) // build.addLibSource(moduleFromPath(p.toString())) // ); // Files.list(Path.of("samples", "simple")) System.out.println("Processing: "+target); if (target.toFile().isDirectory()) { Files.walk(target).filter(f-> f.toFile().isFile() && f.toString().endsWith(".yang") && !f.toString().equals(targetFilename) ).forEach(f -> { System.out.println(f); build.addSource(moduleFromPath(f.toString())); } ); //non-recursive version // Files.list(target) // .filter(p->p.toString().endsWith("yang")) // .forEach(p -> // build.addSource(moduleFromPath(p.toString())) // ); // build.addSource(moduleFromPath(targetFilename)); } else { build.addSource(moduleFromPath(targetFilename)); } SchemaContext schemaContext = build.buildEffective(); //TODO: handle multimodule paths? //TODO: include meta-data //TODO: handle multimodule paths? -> can handle folders recursively //TODO: include meta-data -> need to sort out multipe annotations //TODO: library of built-in types //TODO: add extensions translate(schemaContext); Loading Loading
plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/YANGConverter.java +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ public class YANGConverter { // inputPath = "samples/simple/links.yang"; // inputPath = "samples/simple/example.yang"; // inputPath = "samples/simple/acme.yang"; inputPath = "samples/simple"; inputPath = "samples"; String output = processToString(inputPath, inputPath+".tdltx"); System.out.println(output); } Loading
plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/Yang2TDLTranslator.java +58 −21 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.List; import java.util.stream.Collectors; import org.eclipse.core.resources.IProject; import org.etsi.mts.tdl.CollectionDataType; import org.etsi.mts.tdl.DataType; import org.etsi.mts.tdl.EnumDataType; Loading @@ -19,6 +20,7 @@ import org.etsi.mts.tdl.StructuredDataInstance; import org.etsi.mts.tdl.StructuredDataType; import org.etsi.mts.tdl.tdlFactory; import org.etsi.mts.tdl.tdlPackage; import org.etsi.mts.tdl.helper.TDLHelper; import org.etsi.mts.tdl.transform.AbstractTranslator; import org.opendaylight.yangtools.odlext.parser.MountStatementSupport; import org.opendaylight.yangtools.yang.common.QName; Loading Loading @@ -72,34 +74,69 @@ public class Yang2TDLTranslator extends AbstractTranslator { drm = getTypeFor(sourceMappingTag, tdlPackage.Literals.DATA_RESOURCE_MAPPING); drm.setResourceURI(new File(targetFilename).getName()); //TODO: resolve files //TODO: extract CrossSourceStatementReactor reactor = createReactor(); BuildAction build = reactor.newBuild(); Files.list(Path.of("samples", "ietf")) .filter(p->p.toString().endsWith("yang")) .forEach(p -> build.addLibSource(moduleFromPath(p.toString())) ); Files.list(Path.of("samples", "nfv")) .filter(p->p.toString().endsWith("yang")) .forEach(p -> build.addSource(moduleFromPath(p.toString())) //TODO: extract //DONE: resolve files -> load everything from the root folder (naive approach) //TODO: handle folders as well? //TODO: handle duplicates modules? System.out.println("Load YANG libraries from parent:"); Path target = Path.of(targetFilename); Path parent = target; while (parent.getParent() != null) { parent = parent.getParent(); } if (parent != target) { Files.walk(parent).filter(f-> f.toFile().isFile() && f.toString().endsWith(".yang") && !f.toString().equals(targetFilename) ).forEach(f -> { System.out.println(f); build.addLibSource(moduleFromPath(f.toString())); } ); // Files.list(Path.of("samples", "mwt")) // Files.find(parent, 20, (f, p) -> // p.isRegularFile() && // f.toString().endsWith(".yang") && // !f.toString().equals(targetFilename) // ).forEach(f -> { // System.out.println(f); // build.addLibSource(moduleFromPath(f.toString())); // } // ); } //TODO: provide some base libraries by default? // Files.list(Path.of("samples", "ietf")) // .filter(p->p.toString().endsWith("yang")) // .forEach(p -> // build.addSource(moduleFromPath(p.toString())) // build.addLibSource(moduleFromPath(p.toString())) // ); // Files.list(Path.of("samples", "simple")) System.out.println("Processing: "+target); if (target.toFile().isDirectory()) { Files.walk(target).filter(f-> f.toFile().isFile() && f.toString().endsWith(".yang") && !f.toString().equals(targetFilename) ).forEach(f -> { System.out.println(f); build.addSource(moduleFromPath(f.toString())); } ); //non-recursive version // Files.list(target) // .filter(p->p.toString().endsWith("yang")) // .forEach(p -> // build.addSource(moduleFromPath(p.toString())) // ); // build.addSource(moduleFromPath(targetFilename)); } else { build.addSource(moduleFromPath(targetFilename)); } SchemaContext schemaContext = build.buildEffective(); //TODO: handle multimodule paths? //TODO: include meta-data //TODO: handle multimodule paths? -> can handle folders recursively //TODO: include meta-data -> need to sort out multipe annotations //TODO: library of built-in types //TODO: add extensions translate(schemaContext); Loading