Skip to content

Commit

Permalink
Merge pull request #531 from lunkpeter/mwe2RCP
Browse files Browse the repository at this point in the history
MWE2 based RCP application
  • Loading branch information
abelhegedus committed Jan 4, 2016
2 parents 22d5a8b + a03fd9e commit 7d54051
Show file tree
Hide file tree
Showing 16 changed files with 397 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ source.. = src/,\
xtend-gen/
output.. = bin/
bin.includes = META-INF/,\
.
.,\
plugin.xml
13 changes: 13 additions & 0 deletions plugins/com.incquerylabs.emdw.toolchain.mwe2integration/plugin.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="mwe2_rcp_application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="com.incquerylabs.emdw.toolchain.mwe2integration.app.MWEIntegrationEclipseApp">
</run>
</application>
</extension>
</plugin>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
module com.incquerylabs.emdw.toolchain.mwe2integration

import org.eclipse.viatra.emf.mwe2integration.*
import org.eclipse.viatra.emf.mwe2integration.mwe2impl.*
import com.incquerylabs.emdw.toolchain.mwe2integration.steps.*
import com.incquerylabs.emdw.toolchain.mwe2integration.*
import org.eclipse.xtext.xbase.lib.Pair.*

Workflow {
component = PlainJavaInitializerComponent{
}

component = TransformationChain {
step = XtTransformationStep {}

step = XtChangeMonitorStep {
publishing = PublishTo {topicName = "DirtyComponents" factory = messages.DirtyComponentsMessageFactory{}}
publishing = PublishTo {topicName = "FileContentCreation" factory = messages.DirtyComponentsMessageFactory{}}
}

step = CppQrtTransformationStep {}

step = CppComponentTransformationStep{
subscription = SubscribeTo{topicName = "DirtyComponents" processor = messages.DirtyComponentsMessageProcessor{}}
}

step = FileContentCreationStep{
subscription = SubscribeTo{topicName = "FileContentCreation" processor = messages.DirtyComponentsMessageProcessor{}}
isRcpApp = true
}

}
}
Original file line number Diff line number Diff line change
@@ -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<String> 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<String> 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<String, String>(), workflowcontext)
}
System.out.println('''************* «APP_NAME» finished *************''')
return IApplication.EXIT_OK
}

override stop() {

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class FileContentCreationStep extends TransformationStep {
Map<CPPSourceFile, CharSequence> cppSourceFileContents
@Accessors Set<XTComponent> 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"
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 1 addition & 0 deletions releng/com.incquerylabs.emdw.parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
<module>../com.incquerylabs.emdw.cpp.app.product</module>
<module>../com.incquerylabs.emdw.cpp.app.plainjava</module>
<module>../com.incquerylabs.emdw.toolchain.mwe2integration.plainjava</module>
<module>../com.incquerylabs.emdw.toolchain.mwe2integration.product</module>
</modules>
</profile>
</profiles>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.incquerylabs.emdw.toolchain.mwe2integration.product</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
bin.includes = META-INF/,\
.,\
plugin.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>

<product name="EMDW MWE2 Headless RCP Application" uid="com.incquerylabs.emdw.toolchain.mwe2integration.product.mwe2_rcp_app_product" id="com.incquerylabs.emdw.toolchain.mwe2integration.product.mwe2_rcp_app_product" application="com.incquerylabs.emdw.toolchain.mwe2integration.mwe2_rcp_application" version="1.0.0.qualifier" useFeatures="false" includeLaunchers="true">


<configIni use="default">
</configIni>

<launcherArgs>
<vmArgs>-Xms512M -Xmx2G
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
</launcherArgs>

<windowImages/>

<launcher>
<solaris/>
<win useIco="false">
<bmp/>
</win>
</launcher>


<vm>
</vm>

<plugins>
<plugin id="com.ericsson.xtumlrt.oopl.cpp.model"/>
<plugin id="com.ericsson.xtumlrt.oopl.model"/>
<plugin id="com.google.guava"/>
<plugin id="com.google.inject"/>
<plugin id="com.google.inject.multibindings" fragment="true"/>
<plugin id="com.ibm.icu"/>
<plugin id="com.incquerylabs.emdw.cpp.bodyconverter"/>
<plugin id="com.incquerylabs.emdw.cpp.codegeneration"/>
<plugin id="com.incquerylabs.emdw.cpp.common"/>
<plugin id="com.incquerylabs.emdw.cpp.transformation"/>
<plugin id="com.incquerylabs.emdw.snippet.model"/>
<plugin id="com.incquerylabs.emdw.testing.common"/>
<plugin id="com.incquerylabs.emdw.toolchain"/>
<plugin id="com.incquerylabs.emdw.toolchain.mwe2integration"/>
<plugin id="com.incquerylabs.emdw.umlintegration.queries"/>
<plugin id="com.incquerylabs.emdw.umlintegration.trace"/>
<plugin id="com.incquerylabs.emdw.umlintegration.transformation"/>
<plugin id="com.incquerylabs.emdw.valuedescriptor.model"/>
<plugin id="com.incquerylabs.emdw.xtuml.incquery"/>
<plugin id="com.incquerylabs.emdw.xtuml.incquery.validation"/>
<plugin id="com.incquerylabs.uml.ralf"/>
<plugin id="com.incquerylabs.uml.ralf.snippetcompiler"/>
<plugin id="hu.eltesoft.modelexecution.profile"/>
<plugin id="it.xsemantics.runtime"/>
<plugin id="javax.inject"/>
<plugin id="javax.xml"/>
<plugin id="org.antlr.runtime"/>
<plugin id="org.apache.commons.cli"/>
<plugin id="org.apache.commons.lang"/>
<plugin id="org.apache.commons.logging"/>
<plugin id="org.apache.log4j"/>
<plugin id="org.eclipse.core.commands"/>
<plugin id="org.eclipse.core.contenttype"/>
<plugin id="org.eclipse.core.expressions"/>
<plugin id="org.eclipse.core.filesystem"/>
<plugin id="org.eclipse.core.filesystem.java7" fragment="true"/>
<plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.jobs"/>
<plugin id="org.eclipse.core.resources"/>
<plugin id="org.eclipse.core.resources.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
<plugin id="org.eclipse.core.variables"/>
<plugin id="org.eclipse.debug.core"/>
<plugin id="org.eclipse.emf.cdo.ecore.retrofit" fragment="true"/>
<plugin id="org.eclipse.emf.codegen"/>
<plugin id="org.eclipse.emf.codegen.ecore"/>
<plugin id="org.eclipse.emf.common"/>
<plugin id="org.eclipse.emf.ecore"/>
<plugin id="org.eclipse.emf.ecore.xmi"/>
<plugin id="org.eclipse.emf.mapping.ecore2xml"/>
<plugin id="org.eclipse.emf.mwe.core"/>
<plugin id="org.eclipse.emf.mwe.utils"/>
<plugin id="org.eclipse.emf.mwe2.language"/>
<plugin id="org.eclipse.emf.mwe2.launch"/>
<plugin id="org.eclipse.emf.mwe2.lib"/>
<plugin id="org.eclipse.emf.mwe2.runtime"/>
<plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.equinox.preferences"/>
<plugin id="org.eclipse.equinox.registry"/>
<plugin id="org.eclipse.incquery.patternlanguage"/>
<plugin id="org.eclipse.incquery.patternlanguage.emf"/>
<plugin id="org.eclipse.incquery.querybasedfeatures.runtime"/>
<plugin id="org.eclipse.incquery.runtime"/>
<plugin id="org.eclipse.incquery.runtime.base"/>
<plugin id="org.eclipse.incquery.runtime.base.itc"/>
<plugin id="org.eclipse.incquery.runtime.evm"/>
<plugin id="org.eclipse.incquery.runtime.matchers"/>
<plugin id="org.eclipse.incquery.runtime.rete"/>
<plugin id="org.eclipse.incquery.runtime.rete.recipes"/>
<plugin id="org.eclipse.incquery.uml"/>
<plugin id="org.eclipse.incquery.validation.core"/>
<plugin id="org.eclipse.jdt.compiler.apt" fragment="true"/>
<plugin id="org.eclipse.jdt.compiler.tool" fragment="true"/>
<plugin id="org.eclipse.jdt.core"/>
<plugin id="org.eclipse.jdt.debug"/>
<plugin id="org.eclipse.jdt.launching"/>
<plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.papyrusrt.xtumlrt.common.model"/>
<plugin id="org.eclipse.papyrusrt.xtumlrt.xtuml.model"/>
<plugin id="org.eclipse.text"/>
<plugin id="org.eclipse.uml2"/>
<plugin id="org.eclipse.uml2.codegen.ecore"/>
<plugin id="org.eclipse.uml2.common"/>
<plugin id="org.eclipse.uml2.types"/>
<plugin id="org.eclipse.uml2.uml"/>
<plugin id="org.eclipse.uml2.uml.profile.standard"/>
<plugin id="org.eclipse.uml2.uml.resources"/>
<plugin id="org.eclipse.viatra.emf.mwe2integration"/>
<plugin id="org.eclipse.viatra.emf.runtime"/>
<plugin id="org.eclipse.xtend.lib"/>
<plugin id="org.eclipse.xtend.lib.macro"/>
<plugin id="org.eclipse.xtext"/>
<plugin id="org.eclipse.xtext.common.types"/>
<plugin id="org.eclipse.xtext.logging" fragment="true"/>
<plugin id="org.eclipse.xtext.smap"/>
<plugin id="org.eclipse.xtext.util"/>
<plugin id="org.eclipse.xtext.xbase"/>
<plugin id="org.eclipse.xtext.xbase.lib"/>
<plugin id="org.hamcrest.core"/>
<plugin id="org.junit"/>
<plugin id="org.objectweb.asm"/>
</plugins>

<configurations>
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
</configurations>

<preferencesInfo>
<targetfile overwrite="false"/>
</preferencesInfo>

<cssInfo>
</cssInfo>

</product>
Loading

0 comments on commit 7d54051

Please sign in to comment.