Commit e2a8fbb2 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ spilt generated file into multiple files, one per module (#29, #21)

parent 7e61dc95
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
      <!--  <resourceExtensionsRegExp>ttcn|ttcn3|3mp</resourceExtensionsRegExp> -->
      <!--    <projectExtension>t3p</projectExtension> -->
      <!-- added pattern for files generated from ASN.1 -->
      <ignoredResourceRegExp>((.*asn[.]json[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp>   
      <ignoredResourceRegExp>((.*asn[.]json[.].*ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp>   
      <!--   <settingRecursiveProcessing>true</settingRecursiveProcessing>  -->
      <checkNoUninitializedFieldsInTemplates>true</checkNoUninitializedFieldsInTemplates>
      <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion>
@@ -149,7 +149,7 @@
    <QualityCheckProfile>
      <profileName>defaultProfile</profileName>
      <profileVersion>v2.1.0b4</profileVersion>
      <ignoredResourceRegExp>(.*asn[.]json[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <ignoredResourceRegExp>(.*asn[.]json[.].*ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <settingAbortOnError>true</settingAbortOnError>
      <loggingConfiguration>
        <showFullPath>false</showFullPath>
@@ -272,7 +272,7 @@
    <QualityCheckProfile>
      <profileName>nothing</profileName>
      <profileVersion>v2.1.0b4</profileVersion>
      <ignoredResourceRegExp>(.*asn[.]json[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <ignoredResourceRegExp>(.*asn[.]json[.].*ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <settingAbortOnError>true</settingAbortOnError>
      <loggingConfiguration>
        <showFullPath>false</showFullPath>
+3 −3
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
      <!--  <resourceExtensionsRegExp>ttcn|ttcn3|3mp</resourceExtensionsRegExp> -->
      <!--    <projectExtension>t3p</projectExtension> -->
      <!-- added pattern for files generated from ASN.1 -->
      <ignoredResourceRegExp>((.*asn[.]json[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp>   
      <ignoredResourceRegExp>((.*asn[.]json[.].*[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)|(.*[/\\]Common[/\\](HTTP)[/\\]uri.*[.]ttcn)|(.*[/\\]LTE_A_R12[/\\](D2D_ProSe)[/\\]urn.*[.]ttcn)|(.*[/\\]IMS[/\\]XCAP_XSD[/\\].*[.]ttcn)|(.*[/\\]MCX[/\\]CommonXSD[/\\].*[.]ttcn)|(.*[/\\].*[/\\][Cc]ommon[/\\]TestcaseProperties.*[.]ttcn))</ignoredResourceRegExp>   
      <!--   <settingRecursiveProcessing>true</settingRecursiveProcessing>  -->
      <checkNoUninitializedFieldsInTemplates>false</checkNoUninitializedFieldsInTemplates>
      <checkNoUninitializedFieldsInTemplatesRecursion>false</checkNoUninitializedFieldsInTemplatesRecursion>
@@ -149,7 +149,7 @@
    <QualityCheckProfile>
      <profileName>defaultProfile</profileName>
      <profileVersion>v2.1.0b4</profileVersion>
      <ignoredResourceRegExp>(.*asn[.]json[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <ignoredResourceRegExp>(.*asn[.]json[.].*ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <settingAbortOnError>true</settingAbortOnError>
      <loggingConfiguration>
        <showFullPath>false</showFullPath>
@@ -272,7 +272,7 @@
    <QualityCheckProfile>
      <profileName>nothing</profileName>
      <profileVersion>v2.1.0b4</profileVersion>
      <ignoredResourceRegExp>(.*asn[.]json[.]ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <ignoredResourceRegExp>(.*asn[.]json[.].*ttcn)|(.*[/\\]Common[/\\](IMS_LibSip|IMS_XSD)[/\\].*[.]ttcn)</ignoredResourceRegExp>
      <settingAbortOnError>true</settingAbortOnError>
      <loggingConfiguration>
        <showFullPath>false</showFullPath>
+12 −6
Original line number Diff line number Diff line
@@ -124,17 +124,18 @@ public class JsonSchemaBridge {
		}
	}	
	
	public void process(String path) throws Exception {
	public List<Path> process(String path) throws Exception {
		JsonElement jsonElement = JsonParser.parseReader(new FileReader(path));
//        dumpJson("", jsonElement);
        //TODO: build reference map
		//TODO: break down and process recursively
        List<Path> outputPaths = new ArrayList<>();
		logStructure("");
        int definitionsCount = 0;
        for (var d : jsonElement.getAsJsonObject().get("definitions").getAsJsonObject().entrySet()) {
        	//module
        	logStructure(d.getKey());
        	//TODO: split across files?
        	//TODO: split across files? -> yes, huge impact on performance (~2x duration?)
        	append("module "+d.getKey()+" {\n"); 
            for (var e : d.getValue().getAsJsonObject().entrySet()) {
            	//type / object
@@ -146,12 +147,17 @@ public class JsonSchemaBridge {
            	
            }
        	append("}\n\n");
        	Path outputPath = Path.of(path+"."+d.getKey()+".ttcn");
			Files.writeString(outputPath, ttcn, 
        			StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);
        	logStructure("Converted "+definitionsCount+" definitions in "+d.getKey());
        	definitionsCount = 0;
        	ttcn.delete(0, ttcn.length());
        	outputPaths.add(outputPath);
        }
//        log(ttcn);
//        System.out.println(ttcn);
        Files.writeString(Path.of(path+".ttcn"), ttcn, 
        		StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);
        logStructure("Converted "+definitionsCount+" definitions");
        return outputPaths;
	}
	
	private boolean isOptional(JsonObject o) {
+9 −4
Original line number Diff line number Diff line
@@ -194,13 +194,15 @@ public class T3Q {
		//TODO: handle other schemas? -> need to add result in input files..
		ArrayList<String> processedSchemas = new ArrayList<>();
		Stopwatch stopwatch = Stopwatch.createUnstarted();
		List<Path> outputPaths = new ArrayList<>();
		for (String path : inputPaths) {
			File file = new File(path);
			if (file.isFile()) {
				try {
        			if (file.isFile() && file.getName().endsWith(schemaFile)) {
        				stopwatch.start();
        				bridge.process(file.getAbsolutePath());
        				List<Path> paths = bridge.process(file.getAbsolutePath());
        				outputPaths.addAll(paths);
        				System.out.println("Converted JSON Schema "+file.getAbsolutePath()+" to TTCN-3 in "+MiscTools.msToString(stopwatch.elapsed(TimeUnit.MILLISECONDS)) + " minutes." + '\n');
        				stopwatch.stop();
        				
@@ -216,7 +218,8 @@ public class T3Q {
				for (File f : files) {
					try {
        				stopwatch.start();
						bridge.process(f.getAbsolutePath());
        				List<Path> paths = bridge.process(f.getAbsolutePath());
        				outputPaths.addAll(paths);
        				System.out.println("Converted JSON Schema "+file.getAbsolutePath()+" to TTCN-3 in "+MiscTools.msToString(stopwatch.elapsed(TimeUnit.MILLISECONDS)) + " minutes." + '\n');
        				stopwatch.stop();
        				
@@ -231,7 +234,9 @@ public class T3Q {
			if (inputPaths.contains(s)) {
				inputPaths.remove(s);
			}
			inputPaths.add(s+".ttcn");
		}
		for (Path p : outputPaths) {
			inputPaths.add(p.toString());
		}
		//TODO: Double check above covers everything
//		if (inputPaths.contains(schemaFile)) {