From a03fd9ee6652154e840ad43a9afac7bcc7787c7e Mon Sep 17 00:00:00 2001 From: lunkpeter Date: Mon, 4 Jan 2016 15:30:25 +0100 Subject: [PATCH] Added MWE2 based RCP product --- .../META-INF/MANIFEST.MF | 4 +- .../build.properties | 3 +- .../plugin.xml | 13 ++ ...RcpWorkflow2.mwe2 => EMDWRcpWorkflow.mwe2} | 0 .../app/MWEIntegrationEclipseApp.xtend | 67 ++++++++ .../steps/FileContentCreationStep.xtend | 15 +- .../emdw/cpp/app/EMDWApplication.xtend | 2 +- releng/com.incquerylabs.emdw.parent/pom.xml | 1 + .../.classpath | 6 + .../.project | 28 ++++ .../.settings/org.eclipse.jdt.core.prefs | 7 + .../META-INF/MANIFEST.MF | 7 + .../build.properties | 3 + .../mwe2_rcp_app_product.product | 153 ++++++++++++++++++ .../plugin.xml | 18 +++ .../pom.xml | 45 ++++++ 16 files changed, 364 insertions(+), 8 deletions(-) create mode 100644 plugins/com.incquerylabs.emdw.toolchain.mwe2integration/plugin.xml rename plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/{EMDWRcpWorkflow2.mwe2 => EMDWRcpWorkflow.mwe2} (100%) create mode 100644 plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/app/MWEIntegrationEclipseApp.xtend create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.classpath create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.project create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.settings/org.eclipse.jdt.core.prefs create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/META-INF/MANIFEST.MF create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/build.properties create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/mwe2_rcp_app_product.product create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/plugin.xml create mode 100644 releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/pom.xml diff --git a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/META-INF/MANIFEST.MF b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/META-INF/MANIFEST.MF index eaa70ca9..6349fa79 100644 --- a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/META-INF/MANIFEST.MF +++ b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: EMDW Toolchain MWE2 integration -Bundle-SymbolicName: com.incquerylabs.emdw.toolchain.mwe2integration +Bundle-SymbolicName: com.incquerylabs.emdw.toolchain.mwe2integration;singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.eclipse.emf.mwe2.launch, @@ -27,7 +27,7 @@ Require-Bundle: org.eclipse.emf.mwe2.launch, org.eclipse.incquery.runtime;bundle-version="1.1.0", com.incquerylabs.emdw.xtuml.incquery;bundle-version="1.0.0", org.junit, - org.eclipse.emf.mwe2.language;bundle-version="2.8.2", + org.eclipse.emf.mwe2.language;bundle-version="2.8.0", com.incquerylabs.emdw.cpp.bodyconverter;bundle-version="1.0.0", com.incquerylabs.uml.ralf;bundle-version="1.0.0", org.eclipse.incquery.querybasedfeatures.runtime;bundle-version="1.1.0", diff --git a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/build.properties b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/build.properties index d8e2f0e9..600d1b44 100644 --- a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/build.properties +++ b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/build.properties @@ -2,4 +2,5 @@ source.. = src/,\ xtend-gen/ output.. = bin/ bin.includes = META-INF/,\ - . + .,\ + plugin.xml diff --git a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/plugin.xml b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/plugin.xml new file mode 100644 index 00000000..cd03d0c5 --- /dev/null +++ b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/plugin.xml @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/EMDWRcpWorkflow2.mwe2 b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/EMDWRcpWorkflow.mwe2 similarity index 100% rename from plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/EMDWRcpWorkflow2.mwe2 rename to plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/EMDWRcpWorkflow.mwe2 diff --git a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/app/MWEIntegrationEclipseApp.xtend b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/app/MWEIntegrationEclipseApp.xtend new file mode 100644 index 00000000..ea06303c --- /dev/null +++ b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/app/MWEIntegrationEclipseApp.xtend @@ -0,0 +1,67 @@ +package com.incquerylabs.emdw.toolchain.mwe2integration.app + +import com.incquerylabs.uml.ralf.ReducedAlfLanguageStandaloneSetup +import java.util.Arrays +import java.util.HashMap +import java.util.List +import org.eclipse.emf.common.util.URI +import org.eclipse.emf.mwe2.runtime.workflow.WorkflowContextImpl +import org.eclipse.equinox.app.IApplication +import org.eclipse.equinox.app.IApplicationContext +import org.eclipse.viatra.emf.mwe2integration.initializer.MWE2IntegrationInitializer + +class MWEIntegrationEclipseApp implements IApplication{ + + private static final String APP_NAME = "MWE2Integration RCP App" + private static final String ARGS_HELP = + ''' + We need these arguments: + * first arg: uml model path + * second arg: target folder for generated code + * third arg: MWE file location + ''' + + private static def boolean checkArguments(List args) { + System.out.println("Passed arguments:") + args.forEach(arg | println(" * "+arg)) + if (args === null || args.size() < 2) { + System.out.println(ARGS_HELP) + return false + } + return true + } + + override start(IApplicationContext context) throws Exception { + var List args = Arrays.asList(context.getArguments().get("application.args") as String[]) + + System.out.println('''************* «APP_NAME» started *************''') + if(args.checkArguments) { + val initializer = new MWE2IntegrationInitializer + + // Initialize Xtext languages + new ReducedAlfLanguageStandaloneSetup().createInjectorAndDoEMFRegistration() + + val mweRunner = initializer.initializeHeadlessEclipse(MWEIntegrationEclipseApp.classLoader) + var WorkflowContextImpl workflowcontext = new WorkflowContextImpl() + workflowcontext.put("umlModelPath", args.get(0)) + workflowcontext.put("targetFolderPath", args.get(1)) + + + var URI mwe2FileUri + if(args.size == 3){ + mwe2FileUri = URI.createURI(args.get(2)) + }else { + mwe2FileUri = URI::createURI(MWEIntegrationApp.getResource("/com/incquerylabs/emdw/toolchain/mwe2integration/EMDWRcpWorkflow.mwe2").toString) + } + + mweRunner.run(mwe2FileUri, new HashMap(), workflowcontext) + } + System.out.println('''************* «APP_NAME» finished *************''') + return IApplication.EXIT_OK + } + + override stop() { + + } + +} \ No newline at end of file diff --git a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/steps/FileContentCreationStep.xtend b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/steps/FileContentCreationStep.xtend index 202c8f83..0893aeac 100644 --- a/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/steps/FileContentCreationStep.xtend +++ b/plugins/com.incquerylabs.emdw.toolchain.mwe2integration/src/com/incquerylabs/emdw/toolchain/mwe2integration/steps/FileContentCreationStep.xtend @@ -47,6 +47,7 @@ class FileContentCreationStep extends TransformationStep { Map cppSourceFileContents @Accessors Set dirtyComponents @Accessors boolean isJavaApp = false + @Accessors boolean isRcpApp = false @Accessors boolean isJUnitTestApp = false @Accessors String xtumlrtRuntimeDirectory = "model/runtime/xumlrt_runtime" @Accessors String RUNTIME_BUNDLE_ROOT_DIRECTORY = "com.incquerylabs.emdw.cpp.codegeneration" @@ -72,10 +73,16 @@ class FileContentCreationStep extends TransformationStep { mapperFileManager = new JarFileManager fileManager = new JavaIOBasedFileManager(targetLocation) } else { - targetDir = ctx.get("targetFolder") as IFolder - mapperFileManager = new BundleFileManager(RUNTIME_BUNDLE_ROOT_DIRECTORY) - mapperFileManager.separator = "/" - fileManager = new EclipseWorkspaceFileManager(targetDir) + if(isRcpApp){ + var targetLocation = ctx.get("targetFolderLocation") as String + mapperFileManager = new BundleFileManager(RUNTIME_BUNDLE_ROOT_DIRECTORY) + fileManager = new JavaIOBasedFileManager(targetLocation) + }else{ + targetDir = ctx.get("targetFolder") as IFolder + mapperFileManager = new BundleFileManager(RUNTIME_BUNDLE_ROOT_DIRECTORY) + mapperFileManager.separator = "/" + fileManager = new EclipseWorkspaceFileManager(targetDir) + } } //init MK generation if(makefileGeneration == null) { diff --git a/releng/com.incquerylabs.emdw.cpp.app/src/com/incquerylabs/emdw/cpp/app/EMDWApplication.xtend b/releng/com.incquerylabs.emdw.cpp.app/src/com/incquerylabs/emdw/cpp/app/EMDWApplication.xtend index 7c5d579d..7603c94c 100644 --- a/releng/com.incquerylabs.emdw.cpp.app/src/com/incquerylabs/emdw/cpp/app/EMDWApplication.xtend +++ b/releng/com.incquerylabs.emdw.cpp.app/src/com/incquerylabs/emdw/cpp/app/EMDWApplication.xtend @@ -42,7 +42,7 @@ import java.util.Map import org.eclipse.incquery.uml.IncQueryUMLStandaloneSetup class EMDWApplication { - private static final String APP_NAME = "EMDW-MC Plain Java Application" + private static final String APP_NAME = "EMDW-MC Application" private static final String ARGS_HELP = ''' We need these arguments: diff --git a/releng/com.incquerylabs.emdw.parent/pom.xml b/releng/com.incquerylabs.emdw.parent/pom.xml index b8240913..a2ae937a 100644 --- a/releng/com.incquerylabs.emdw.parent/pom.xml +++ b/releng/com.incquerylabs.emdw.parent/pom.xml @@ -81,6 +81,7 @@ ../com.incquerylabs.emdw.cpp.app.product ../com.incquerylabs.emdw.cpp.app.plainjava ../com.incquerylabs.emdw.toolchain.mwe2integration.plainjava + ../com.incquerylabs.emdw.toolchain.mwe2integration.product diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.classpath b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.classpath new file mode 100644 index 00000000..075009d7 --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.project b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.project new file mode 100644 index 00000000..93591532 --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.project @@ -0,0 +1,28 @@ + + + com.incquerylabs.emdw.toolchain.mwe2integration.product + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.settings/org.eclipse.jdt.core.prefs b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..0c68a61d --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/META-INF/MANIFEST.MF b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/META-INF/MANIFEST.MF new file mode 100644 index 00000000..cec574ab --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: EMDW MWE2 Headless RCP Application Product +Bundle-SymbolicName: com.incquerylabs.emdw.toolchain.mwe2integration.product;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: IncQuery Labs Ltd. +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/build.properties b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/build.properties new file mode 100644 index 00000000..06d20723 --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/build.properties @@ -0,0 +1,3 @@ +bin.includes = META-INF/,\ + .,\ + plugin.xml diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/mwe2_rcp_app_product.product b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/mwe2_rcp_app_product.product new file mode 100644 index 00000000..593fd6eb --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/mwe2_rcp_app_product.product @@ -0,0 +1,153 @@ + + + + + + + + + + + -Xms512M -Xmx2G + + -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/plugin.xml b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/plugin.xml new file mode 100644 index 00000000..13622016 --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/plugin.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/pom.xml b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/pom.xml new file mode 100644 index 00000000..4ce3eb16 --- /dev/null +++ b/releng/com.incquerylabs.emdw.toolchain.mwe2integration.product/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + com.incquerylabs.emdw + com.incquerylabs.emdw + 1.0.0-SNAPSHOT + ../../releng/com.incquerylabs.emdw.parent + + com.incquerylabs.emdw.toolchain.mwe2integration.product + eclipse-repository + + + + + org.eclipse.tycho + tycho-p2-director-plugin + ${tycho.version} + + + zip + tar.gz + zip + + + + + materialize-products + + materialize-products + + + + archive-products + + archive-products + + + + + + + +