From c345caf414cd85fa0d024cea76695ff00386d5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martti=20K=C3=A4=C3=A4rik?= Date: Thu, 18 Apr 2024 10:36:26 +0300 Subject: [PATCH] Mark generated TDL files as derived and don't run OCL validation on them. --- .../org/etsi/mts/tdl/helper/TDLHelper.java | 20 ++++++++++++++++--- .../META-INF/MANIFEST.MF | 3 ++- .../ui/handlers/TranslationHandler.java | 5 +++-- .../tdl/openapi2tdl/next/ConverterNext.java | 2 +- .../etsi/mts/tdl/standalone/Standalone.java | 4 ++-- .../etsi/mts/tdl/to2tdl/TO2TDLTranslator.java | 2 +- .../etsi/mts/tdl/yang2tdl/YANGConverter.java | 2 +- 7 files changed, 27 insertions(+), 11 deletions(-) diff --git a/plugins/org.etsi.mts.tdl.helper/src/org/etsi/mts/tdl/helper/TDLHelper.java b/plugins/org.etsi.mts.tdl.helper/src/org/etsi/mts/tdl/helper/TDLHelper.java index 23b1fa96..b513c4f4 100644 --- a/plugins/org.etsi.mts.tdl.helper/src/org/etsi/mts/tdl/helper/TDLHelper.java +++ b/plugins/org.etsi.mts.tdl.helper/src/org/etsi/mts/tdl/helper/TDLHelper.java @@ -2,8 +2,8 @@ package org.etsi.mts.tdl.helper; +import java.io.ByteArrayInputStream; import java.io.IOException; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -16,7 +16,9 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceVisitor; import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.URI; @@ -43,7 +45,6 @@ import org.etsi.mts.tdl.TDLtxStandaloneSetup; import org.etsi.mts.tdl.TDLtxiStandaloneSetup; import org.etsi.mts.tdl.TPLan2StandaloneSetup; import org.etsi.mts.tdl.impl.tdlPackageImpl; -import org.etsi.mts.tdl.resources.ResourceHandler; import org.etsi.mts.tdl.structuredobjectives.impl.StructuredObjectivesPackageImpl; import org.osgi.framework.Bundle; @@ -141,9 +142,22 @@ public class TDLHelper { * @param resource A resource to be saved. * @throws Exception */ - public static void store(Resource resource) throws Exception { + public static void store(Resource resource, boolean derived) throws Exception { + if (derived) { + IFile file = resourceToFile(resource); + if (file != null) { + if (!file.exists()) + file.create(new ByteArrayInputStream(new byte[0]), false, null); + file.setDerived(derived, new NullProgressMonitor()); + } + } resource.save(Collections.emptyMap()); } + + public static IFile resourceToFile(Resource resource) { + URI uri = resource.getURI(); + return ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toPlatformString(true))); + } /** diff --git a/plugins/org.etsi.mts.tdl.importers.ui/META-INF/MANIFEST.MF b/plugins/org.etsi.mts.tdl.importers.ui/META-INF/MANIFEST.MF index a0bd5c01..58883f63 100644 --- a/plugins/org.etsi.mts.tdl.importers.ui/META-INF/MANIFEST.MF +++ b/plugins/org.etsi.mts.tdl.importers.ui/META-INF/MANIFEST.MF @@ -20,7 +20,8 @@ Require-Bundle: org.eclipse.ui, org.etsi.mts.tdl.openapi2tdl.next, org.etsi.mts.tdl.to2tdl, org.etsi.mts.tdl.json2tdl, - org.etsi.mts.tdl.yang2tdl + org.etsi.mts.tdl.yang2tdl, + org.etsi.mts.tdl.helper Bundle-ActivationPolicy: lazy Import-Package: org.eclipse.emf.common.util Bundle-RequiredExecutionEnvironment: JavaSE-11 diff --git a/plugins/org.etsi.mts.tdl.importers.ui/src/org/etsi/mts/tdl/importers/ui/handlers/TranslationHandler.java b/plugins/org.etsi.mts.tdl.importers.ui/src/org/etsi/mts/tdl/importers/ui/handlers/TranslationHandler.java index 81fff5c5..5f3863d8 100644 --- a/plugins/org.etsi.mts.tdl.importers.ui/src/org/etsi/mts/tdl/importers/ui/handlers/TranslationHandler.java +++ b/plugins/org.etsi.mts.tdl.importers.ui/src/org/etsi/mts/tdl/importers/ui/handlers/TranslationHandler.java @@ -29,6 +29,7 @@ import org.eclipse.xtext.resource.XtextResourceSet; import org.eclipse.xtext.ui.resource.IResourceSetProvider; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.asn2tdl.ASN2TDLTranslator; +import org.etsi.mts.tdl.helper.TDLHelper; import org.etsi.mts.tdl.json2tdl.JSON2TDLTranslator; import org.etsi.mts.tdl.openapi2tdl.next.OpenAPI2TDLTranslatorNext; import org.etsi.mts.tdl.to2tdl.TO2TDLTranslator; @@ -163,7 +164,7 @@ public class TranslationHandler extends AbstractHandler { } if (translator != null) { translator.setTargetResource(tr); - translator.initTargetResource(translator.cleanName(file.getName())); + translator.initTargetResource(translator.getCleanName(file.getName())); try { translator.translate(filepath); } catch (Exception e) { @@ -189,7 +190,7 @@ public class TranslationHandler extends AbstractHandler { //tr.getContents().addAll(EcoreUtil.copyAll(r.getContents())); try { - tr.save(null); + TDLHelper.store(tr, true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/ConverterNext.java b/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/ConverterNext.java index 94e6c92d..ad827c85 100644 --- a/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/ConverterNext.java +++ b/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/ConverterNext.java @@ -60,7 +60,7 @@ public class ConverterNext { translator.initTargetResource(translator.cleanName(new File(inputPath).getName())); translator.translate(inputPath); name = ((Package) tr.getContents().get(0)).getName(); - TDLHelper.store(tr); + TDLHelper.store(tr, true); } catch (Exception e) { e.printStackTrace(); } diff --git a/plugins/org.etsi.mts.tdl.standalone/src/org/etsi/mts/tdl/standalone/Standalone.java b/plugins/org.etsi.mts.tdl.standalone/src/org/etsi/mts/tdl/standalone/Standalone.java index 4d1bc5cf..a1ca3ffa 100644 --- a/plugins/org.etsi.mts.tdl.standalone/src/org/etsi/mts/tdl/standalone/Standalone.java +++ b/plugins/org.etsi.mts.tdl.standalone/src/org/etsi/mts/tdl/standalone/Standalone.java @@ -301,7 +301,7 @@ public class Standalone { try { Resource target = TDLHelper.create(resource.getURI().path() + "." + targetExtension); target.getContents().addAll(EcoreUtil.copyAll(resource.getContents())); - TDLHelper.store(target); + TDLHelper.store(target, true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -314,7 +314,7 @@ public class Standalone { translator.setTargetResource(TDLHelper.create(source.getAbsolutePath()+"-generated."+targetExtension)); translator.initTargetResource(translator.cleanName(source.getName())); translator.translate(source.getAbsolutePath()); - TDLHelper.store(translator.getTargetResource()); + TDLHelper.store(translator.getTargetResource(), true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/plugins/org.etsi.mts.tdl.to2tdl/src/org/etsi/mts/tdl/to2tdl/TO2TDLTranslator.java b/plugins/org.etsi.mts.tdl.to2tdl/src/org/etsi/mts/tdl/to2tdl/TO2TDLTranslator.java index 014904cf..ee7fc34a 100644 --- a/plugins/org.etsi.mts.tdl.to2tdl/src/org/etsi/mts/tdl/to2tdl/TO2TDLTranslator.java +++ b/plugins/org.etsi.mts.tdl.to2tdl/src/org/etsi/mts/tdl/to2tdl/TO2TDLTranslator.java @@ -475,6 +475,6 @@ public class TO2TDLTranslator extends AbstractTranslator { initTargetResource("generated_from_"+p.getName()); addImports(p); transform(p); - TDLHelper.store(tr); + TDLHelper.store(tr, false); } } diff --git a/plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/YANGConverter.java b/plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/YANGConverter.java index b86cb899..f9824894 100644 --- a/plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/YANGConverter.java +++ b/plugins/org.etsi.mts.tdl.yang2tdl/src/org/etsi/mts/tdl/yang2tdl/YANGConverter.java @@ -47,7 +47,7 @@ public class YANGConverter { // names.add(e.getName()); // } content = TDLHelper.getText(tr); - TDLHelper.store(tr); + TDLHelper.store(tr, true); // Resource tdl = TDLHelper.load(outputPath+".tdl"); // Resource tdltx = TDLHelper.create(outputPath); // tdltx.getContents().addAll(EcoreUtil.copyAll(tdl.getContents())); -- GitLab