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

+ decoupling of dependencies, #145 (incomplete commit)

parent 030f7ea4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: OpenAPI to TDL Translator (Next)
Bundle-Name: OpenAPI to TDL Translator
Bundle-SymbolicName: org.etsi.mts.tdl.openapi2tdl.next;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: European Telecommunications Standards Institute (ETSI)
Automatic-Module-Name: org.etsi.mts.tdl.openapi2tdl.next
Bundle-Activator: org.etsi.mts.tdl.openapi2tdl.next.Activator
Require-Bundle: org.etsi.mts.tdl.model,
 org.etsi.mts.tdl.common,
 org.etsi.mts.tdl.extras.openapi.generator.wrapper,
 org.etsi.mts.tdl.helper,
 org.eclipse.ui;resolution:=optional,
 org.eclipse.core.resources;resolution:=optional,
 org.eclipse.core.runtime;bundle-version="3.26.100";resolution:=optional
+61 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.openapi2tdl.next;

import java.util.Hashtable;

import org.etsi.mts.tdl.transform.AbstractTranslator;
import org.etsi.mts.tdl.transform.Converter;
import org.etsi.mts.tdl.transform.Generator;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

/**
 * The activator class controls the plug-in life cycle
 */
//public class Activator extends Plugin {
public class Activator implements BundleActivator {

	// The plug-in ID
	public static final String PLUGIN_ID = "org.etsi.mts.tdl.openapi2tdl.next"; //$NON-NLS-1$

	// The shared instance
	private static Activator plugin;
	
	/**
	 * The constructor
	 */
	public Activator() {
	}

	/*
	 * (non-Javadoc)
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
	 */
	public void start(BundleContext context) throws Exception {
//		super.start(context);
		Hashtable<String, String> properties = new Hashtable<String, String>();
		properties.put("type", PLUGIN_ID);
		context.registerService(Converter.class.getName(), new ConverterNext(), properties);
		context.registerService(AbstractTranslator.class.getName(), new OpenAPI2TDLTranslatorNext(), properties);
		context.registerService(Generator.class.getName(), new TestDocumentationGenerator(), properties);
		plugin = this;
	}

	/*
	 * (non-Javadoc)
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext context) throws Exception {
		plugin = null;
//		super.stop(context);
	}

	/**
	 * Returns the shared instance
	 *
	 * @return the shared instance
	 */
	public static Activator getDefault() {
		return plugin;
	}

}
+24 −14
Original line number Diff line number Diff line
@@ -3,46 +3,50 @@ package org.etsi.mts.tdl.openapi2tdl.next;
import java.io.File;

import org.eclipse.emf.ecore.resource.Resource;
import org.etsi.mts.tdl.helper.TDLHelper;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.etsi.mts.tdl.transform.AbstractTranslator;
import org.etsi.mts.tdl.transform.Converter;
import org.openapitools.codegen.utils.ModelUtils;

import io.swagger.parser.OpenAPIParser;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.parser.core.models.ParseOptions;
import io.swagger.v3.parser.util.InlineModelResolver;
import org.etsi.mts.tdl.Package;
import org.etsi.mts.tdl.resources.ResourceHandler;

public class ConverterNext {
public class ConverterNext implements Converter {

	public static void main(String[] args) throws Exception {
		String filename = args[0];
		process(filename, filename+"-generated-new.tdltx");
		ConverterNext converter = new ConverterNext();
		converter.process(filename, filename+"-generated-new.tdltx");
	}

	public static String processToString(String inputPath, String outputPath) {
	public String processToString(String inputPath, String outputPath) {
		return processToString(inputPath, outputPath, "SOURCE_MAPPING", "TARGET_MAPPING");
	}

	public static String processToString(String inputPath, String outputPath, String sourceMapping, String targetMapping) {
	public String processToString(String inputPath, String outputPath, String sourceMapping, String targetMapping) {
		return processToString(inputPath, outputPath, sourceMapping, targetMapping, false);
	}
	
	public static String getTargetPackageName(String inputPath) {
	public String getTargetPackageName(String inputPath) {
		return AbstractTranslator.cleanName(new File(inputPath).getName());
	}
	
	public static String processToString(String inputPath, String outputPath, String sourceMapping, String targetMapping, boolean inline) {
	public String processToString(String inputPath, String outputPath, String sourceMapping, String targetMapping, boolean inline) {
//		OpenAPI spec = parseSpec(inputPath);
		System.out.println("Exporting: "+outputPath+ " : "+ new File(outputPath).getAbsolutePath());
		OpenAPI2TDLTranslatorNext translator = new OpenAPI2TDLTranslatorNext();
		String content = "Package imported {}";
		//TODO: This is effectively broken.. 
		try {
			Resource tr = TDLHelper.create(outputPath);
			Resource tr = ResourceHandler.create(outputPath);
			translator.setTargetResource(tr);
			translator.initTargetResource(getTargetPackageName(inputPath));
			translator.translate(inputPath, sourceMapping, targetMapping, inline);
			content = TDLHelper.getText(tr);
			EcoreUtil.resolveAll(tr);
			content = ResourceHandler.getText(tr);
		} catch (Exception e) {
			e.printStackTrace();
		}
@@ -50,17 +54,16 @@ public class ConverterNext {
	}


	public static String process(String inputPath, String outputPath) {
	public String process(String inputPath, String outputPath) {
		OpenAPI spec = parseSpec(inputPath);
		AbstractTranslator translator = new OpenAPI2TDLTranslatorNext();
		String name = "imported";
		try {
			Resource tr = TDLHelper.create(outputPath);
			Resource tr = ResourceHandler.create(outputPath);
			translator.setTargetResource(tr);
			translator.initTargetResource(translator.getCleanName(new File(inputPath).getName()));
			translator.translate(inputPath);
			name = ((Package) tr.getContents().get(0)).getName();
			TDLHelper.store(tr, true);
			ResourceHandler.store(tr, true);
		} catch (Exception e) {
			e.printStackTrace();
		}
@@ -90,4 +93,11 @@ public class ConverterNext {
        inlineModelResolver.flatten(openAPI);
        return openAPI;
    }

	@Override
	public String getExtension() {
		// TODO Auto-generated method stub
		return "yaml";
	}

}
+19 −12
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import java.util.Set;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.resource.Resource;
import org.etsi.mts.tdl.Annotation;
import org.etsi.mts.tdl.AnnotationType;
@@ -35,7 +36,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.resources.ResourceHandler;
import org.etsi.mts.tdl.transform.AbstractTranslator;
import org.openapitools.codegen.ClientOptInput;
import org.openapitools.codegen.CodegenConfig;
@@ -97,7 +98,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
		drm.setResourceURI(new File(filename).getName());


		theTdlPackage = TDLHelper.getTdlPackage(getTargetResource());
		theTdlPackage = ResourceHandler.getTdlPackage(getTargetResource());
		if (theTdlPackage != null) {
			ElementImport importTdl = tdlFactory.eINSTANCE.createElementImport();
			importTdl.setImportedPackage(theTdlPackage);
@@ -106,18 +107,23 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
			getGeneratedPackage().getPackagedElement().remove(stringType);
		}

		IProject project = TDLHelper.getProjectForResource(getTargetResource());
		Preferences preferences = null;
		if (Platform.isRunning()) {
			IProject project = ResourceHandler.getProjectForResource(getTargetResource());
			if (project != null) {
				ProjectScope ps = new ProjectScope(project);
				preferences = ps.getNode(PropertyPage.PREFERENCE_SCOPE);
			}
		}

		Package httpPackage = TDLHelper.getHttpPackage(getTargetResource());
		Package httpPackage = ResourceHandler.getHttpPackage(getTargetResource());
		Package httpMessageBasedPackage = null;
		boolean useMessageBasedApi = true;
		if (preferences != null)
		String javaApiPackage = "generated.java";
		if (preferences != null) {
			useMessageBasedApi = !preferences.getBoolean(PropertyPage.PROCEDURE_BASED, false);
			javaApiPackage= preferences.get(PropertyPage.JAVA_API_PACKAGE, "generated.java");
		}
		StructuredDataType messageBody = null;
		if (useMessageBasedApi) {
			if (httpPackage != null) {
@@ -158,7 +164,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
				tdlImport.setImportedPackage(theTdlPackage);
				mappingsPackage.getImport().add(tdlImport);
			}
			javaPackage = TDLHelper.getJavaPackage(getTargetResource());
			javaPackage = ResourceHandler.getJavaPackage(getTargetResource());
			if (javaPackage != null) {
				ElementImport javaImport = tdlFactory.eINSTANCE.createElementImport();
				javaImport.setImportedPackage(javaPackage);
@@ -166,7 +172,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
			}
			drmTarget = getTypeFor(targetMappingTag, tdlPackage.Literals.DATA_RESOURCE_MAPPING);
			mappingsPackage.getPackagedElement().add(drmTarget);
			drmTarget.setResourceURI(preferences.get(PropertyPage.JAVA_API_PACKAGE, "generated.java"));
			drmTarget.setResourceURI(javaApiPackage);
			if (javaPackage != null) {
				for (PackageableElement e : javaPackage.getPackagedElement()) {
					if (e.eClass().equals(tdlPackage.eINSTANCE.getAnnotationType())
@@ -419,8 +425,9 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator {
			resourceClass = resourceClass.getSuperclass();
		} while (resourceClass != null);

		if (isXtext)
			xtextKyewords = TDLHelper.getTdlGrammarKeywords();
		if (isXtext) {
			xtextKyewords = ResourceHandler.getTdlGrammarKeywords();
		}
	}

	private void addMapping(Schema<?> schema, DataType dataType, String sourceMappingTag, String targetMappingTag) {
+39 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.openapi2tdl.next;

import org.etsi.mts.tdl.openapi2tdl.next.doc.Doc;
import org.etsi.mts.tdl.transform.Converter;
import org.etsi.mts.tdl.transform.Generator;

public class TestDocumentationGenerator implements Generator {

	@Override
	public String getExtension() {
		return "yaml";
	}

	@Override
	public String processToString(String inputPath, String outputPath) {
		// TODO Auto-generated method stub
		Doc doc = new Doc();
		try {
			doc.processModel(inputPath, true);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return doc.getContent().toString();
	}

	@Override
	public String processToString(String inputPath, String outputPath, String sourceMapping, String targetMapping) {
		// TODO Auto-generated method stub
		return processToString(inputPath, outputPath);
	}

	@Override
	public String processToString(String inputPath, String outputPath, String sourceMapping, String targetMapping,
			boolean inline) {
		return processToString(inputPath, outputPath);
	}

}
Loading