From 21c266eb79ede366577485c180fd25e0f02dfe75 Mon Sep 17 00:00:00 2001 From: shiv12095 Date: Sun, 2 Oct 2016 22:06:28 +0530 Subject: [PATCH] Fixes #407 Signed-off-by: shiv12095 --- .../META-INF/MANIFEST.MF | 14 ++ .../build.properties | 5 + .../pom.xml | 25 +++ .../META-INF/MANIFEST.MF | 59 +++-- .../build.properties | 9 +- .../pom.xml | 2 +- .../datatype/tests/DatatypeParsingTest.xtend | 45 ++++ .../DatatypeModelFormatterTest.xtend | 2 +- .../META-INF/MANIFEST.MF | 61 ++--- ...peUiModule.java => DatatypeUiModule.xtend} | 18 +- .../{TypeTemplate.java => TypeTemplate.xtend} | 46 ++-- .../.gitignore | 1 + .../pom.xml | 124 ++++++++++ .../editor/datatype/web/DatatypeServlet.xtend | 48 ++++ .../datatype/web/DatatypeWebModule.xtend | 40 ++++ .../datatype/web/DatatypeWebSetup.xtend | 44 ++++ .../META-INF/MANIFEST.MF | 73 +++--- .../org.eclipse.vorto.editor.datatype/pom.xml | 47 +++- ...odule.java => DatatypeRuntimeModule.xtend} | 41 ++-- ...tup.java => DatatypeStandaloneSetup.xtend} | 16 +- .../editor/datatype/GenerateDatatype.mwe2 | 211 +++++------------- .../generator/DatatypeGenerator.xtend | 11 +- .../DatatypeSemanticSequencer.xtend | 23 ++ .../DatatypeSyntacticSequencer.xtend | 23 ++ .../pom.xml | 3 +- bundles/pom.xml | 2 + server/devtool/pom.xml | 21 ++ .../devtool/config/XtextConfiguration.java | 8 + .../editor/DatatypeEditorController.java | 79 +++++++ .../devtool/models/ProjectResource.java | 9 + .../editor/DatatypeEditorServiceImpl.java | 44 ++++ .../FunctionBlockEditorServiceImpl.java | 1 - .../devtool/utils/DevtoolReferenceLinker.java | 25 ++- .../resources/static/dist/js/controllers.js | 150 ++++++++++++- .../static/dist/js/xtext/mode-type.js | 35 +++ 35 files changed, 1025 insertions(+), 340 deletions(-) create mode 100644 bundles/org.eclipse.vorto.editor.datatype.ide/META-INF/MANIFEST.MF create mode 100644 bundles/org.eclipse.vorto.editor.datatype.ide/build.properties create mode 100644 bundles/org.eclipse.vorto.editor.datatype.ide/pom.xml create mode 100644 bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/DatatypeParsingTest.xtend rename bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/{DatatypeUiModule.java => DatatypeUiModule.xtend} (70%) rename bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/{TypeTemplate.java => TypeTemplate.xtend} (50%) create mode 100644 bundles/org.eclipse.vorto.editor.datatype.web/.gitignore create mode 100644 bundles/org.eclipse.vorto.editor.datatype.web/pom.xml create mode 100644 bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeServlet.xtend create mode 100644 bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebModule.xtend create mode 100644 bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebSetup.xtend rename bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/{DatatypeRuntimeModule.java => DatatypeRuntimeModule.xtend} (53%) rename bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/{DatatypeStandaloneSetup.java => DatatypeStandaloneSetup.xtend} (81%) create mode 100644 bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSemanticSequencer.xtend create mode 100644 bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSyntacticSequencer.xtend create mode 100644 server/devtool/src/main/java/org/eclipse/vorto/server/devtool/controller/editor/DatatypeEditorController.java create mode 100644 server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/DatatypeEditorServiceImpl.java create mode 100644 server/devtool/src/main/resources/static/dist/js/xtext/mode-type.js diff --git a/bundles/org.eclipse.vorto.editor.datatype.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.vorto.editor.datatype.ide/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..4a8b0c1999 --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.ide/META-INF/MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: org.eclipse.vorto.editor.datatype.ide +Bundle-Vendor: My Company +Bundle-Version: 0.9.0.qualifier +Bundle-SymbolicName: org.eclipse.vorto.editor.datatype.ide;singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.vorto.editor.datatype, + org.eclipse.xtext.ide, + org.eclipse.xtext.xbase.ide +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: org.eclipse.vorto.editor.datatype.ide.contentassist.antlr, + org.eclipse.vorto.editor.datatype.ide.contentassist.antlr.internal +Import-Package: org.eclipse.vorto.editor.datatype.services diff --git a/bundles/org.eclipse.vorto.editor.datatype.ide/build.properties b/bundles/org.eclipse.vorto.editor.datatype.ide/build.properties new file mode 100644 index 0000000000..47a0f6e832 --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.ide/build.properties @@ -0,0 +1,5 @@ +source.. = src/,\ + src-gen/,\ + xtend-gen/ +bin.includes = .,\ + META-INF/ \ No newline at end of file diff --git a/bundles/org.eclipse.vorto.editor.datatype.ide/pom.xml b/bundles/org.eclipse.vorto.editor.datatype.ide/pom.xml new file mode 100644 index 0000000000..95f7c8f105 --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.ide/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + + org.eclipse.vorto + bundles + 0.9.0-SNAPSHOT + + + org.eclipse.vorto.editor.datatype.ide + eclipse-plugin + + Datatype Editor Plugin IDE + + + + + org.eclipse.xtend + xtend-maven-plugin + + + + + diff --git a/bundles/org.eclipse.vorto.editor.datatype.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.vorto.editor.datatype.tests/META-INF/MANIFEST.MF index ffbe6777b1..7c02f52964 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.tests/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.vorto.editor.datatype.tests/META-INF/MANIFEST.MF @@ -1,33 +1,26 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Vorto Datatype Editor Tests (Incubation) -Bundle-Vendor: Eclipse.org/Vorto -Bundle-Version: 0.9.0.qualifier -Bundle-SymbolicName: org.eclipse.vorto.editor.datatype.tests; singleton:=true -Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.vorto.editor.datatype.ui, - org.eclipse.xtext.junit4, - com.google.inject, - org.eclipse.xtend.lib, - org.eclipse.emf.common, - org.eclipse.core.runtime, - org.eclipse.ui.workbench;resolution:=optional, - org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional, - org.eclipse.xtext, - org.eclipse.xtext.xbase, - org.eclipse.xtext.xbase.lib, - org.eclipse.xtext.ui, - org.eclipse.vorto.core, - org.eclipse.vorto.editor.datatype -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Import-Package: org.apache.log4j, - org.eclipse.xtext.formatting, - org.eclipse.xtext.junit.util;resolution:=optional, - org.hamcrest.core, - org.junit;version="4.5.0", - org.junit.runner;version="4.5.0", - org.junit.runner.manipulation;version="4.5.0", - org.junit.runner.notification;version="4.5.0", - org.junit.runners;version="4.5.0", - org.junit.runners.model;version="4.5.0" -Export-Package: org.eclipse.vorto.editor.datatype +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Vorto Datatype Editor Tests (Incubation) +Bundle-Vendor: Eclipse.org/Vorto +Bundle-Version: 0.9.0.qualifier +Bundle-SymbolicName: org.eclipse.vorto.editor.datatype.tests; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.vorto.editor.datatype.ui, + org.eclipse.xtext, + org.eclipse.xtext.junit4, + org.junit, + org.eclipse.vorto.core, + org.eclipse.vorto.editor.datatype, + org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.ui.workbench;resolution:=optional, + org.eclipse.xtext.xbase.lib +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Import-Package: org.hamcrest.core, + org.junit;version="4.5.0", + org.junit.runner;version="4.5.0", + org.junit.runner.manipulation;version="4.5.0", + org.junit.runner.notification;version="4.5.0", + org.junit.runners;version="4.5.0", + org.junit.runners.model;version="4.5.0" +Export-Package: org.eclipse.vorto.editor.datatype.tests diff --git a/bundles/org.eclipse.vorto.editor.datatype.tests/build.properties b/bundles/org.eclipse.vorto.editor.datatype.tests/build.properties index ca0a0c2a77..d6417321d5 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.tests/build.properties +++ b/bundles/org.eclipse.vorto.editor.datatype.tests/build.properties @@ -1,5 +1,6 @@ -source.. = src-gen/,\ - src/,\ - xtend-gen/ +source.. = src/,\ + xtend-gen/,\ + src-gen/ bin.includes = META-INF/,\ - . + .,\ + about.html diff --git a/bundles/org.eclipse.vorto.editor.datatype.tests/pom.xml b/bundles/org.eclipse.vorto.editor.datatype.tests/pom.xml index 92f08d9650..d552a9d6d1 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.tests/pom.xml +++ b/bundles/org.eclipse.vorto.editor.datatype.tests/pom.xml @@ -10,7 +10,7 @@ org.eclipse.vorto.editor.datatype.tests eclipse-test-plugin - Data Type Editor Tests + Vorto Data Type Editor Tests diff --git a/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/DatatypeParsingTest.xtend b/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/DatatypeParsingTest.xtend new file mode 100644 index 0000000000..81dfa3abff --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/DatatypeParsingTest.xtend @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */ +package org.eclipse.vorto.editor.datatype.tests + +import com.google.inject.Inject +import org.eclipse.vorto.core.api.model.model.Model +import org.eclipse.xtext.junit4.InjectWith +import org.eclipse.xtext.junit4.XtextRunner +import org.eclipse.xtext.junit4.util.ParseHelper +import org.junit.Assert +import org.junit.Ignore +import org.junit.Test +import org.junit.runner.RunWith + +//@RunWith(XtextRunner) +//@InjectWith(DatatypeInjectorProvider) +class DatatypeParsingTest { + + @Inject ParseHelper parseHelper; + + @Ignore + def void loadModel() { + val result = parseHelper.parse(''' + Hello Xtext! + ''') + Assert.assertNotNull(result) + } + +} diff --git a/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/formatter/DatatypeModelFormatterTest.xtend b/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/formatter/DatatypeModelFormatterTest.xtend index bf602d421d..51664cef48 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/formatter/DatatypeModelFormatterTest.xtend +++ b/bundles/org.eclipse.vorto.editor.datatype.tests/src/org/eclipse/vorto/editor/datatype/tests/formatter/DatatypeModelFormatterTest.xtend @@ -18,7 +18,7 @@ package org.eclipse.vorto.editor.datatype.tests.formatter import com.google.inject.Inject import org.eclipse.vorto.core.api.model.datatype.Type import org.eclipse.vorto.core.api.model.datatype.impl.DatatypePackageImpl -import org.eclipse.vorto.editor.datatype.DatatypeInjectorProvider +import org.eclipse.vorto.editor.datatype.tests.DatatypeInjectorProvider import org.eclipse.xtext.formatting.INodeModelFormatter import org.eclipse.xtext.junit4.AbstractXtextTests import org.eclipse.xtext.junit4.InjectWith diff --git a/bundles/org.eclipse.vorto.editor.datatype.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.vorto.editor.datatype.ui/META-INF/MANIFEST.MF index 7f0cdd1529..6184cb6547 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.ui/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.vorto.editor.datatype.ui/META-INF/MANIFEST.MF @@ -1,30 +1,31 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Vorto Datatype Editor UI (Incubation) -Bundle-Vendor: Eclipse.org/Vorto -Bundle-Version: 0.9.0.qualifier -Bundle-SymbolicName: org.eclipse.vorto.editor.datatype.ui; singleton:=true -Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.xtext.ui, - org.eclipse.ui.editors;bundle-version="3.5.0", - org.eclipse.ui.ide;bundle-version="3.5.0", - org.eclipse.xtext.ui.shared, - org.eclipse.ui, - org.eclipse.xtext.builder, - org.antlr.runtime, - org.eclipse.xtext.common.types.ui, - org.eclipse.xtext.ui.codetemplates.ui, - org.eclipse.compare, - org.eclipse.vorto.editor.datatype, - org.eclipse.vorto.core, - org.eclipse.xtext.xbase.lib, - org.eclipse.vorto.core.ui -Import-Package: org.apache.log4j -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Export-Package: org.eclipse.vorto.editor.datatype.ui,org.eclipse.vorto - .editor.datatype.ui.contentassist,org.eclipse.vorto.editor.datatype.u - i.internal,org.eclipse.vorto.editor.datatype.ui.quickfix,org.eclipse. - vorto.editor.datatype.ui.typecreator,org.eclipse.vorto.editor.datatyp - e.ui.contentassist.antlr,org.eclipse.vorto.editor.datatype.ui.content - assist.antlr.internal -Bundle-Activator: org.eclipse.vorto.editor.datatype.ui.internal.DatatypeActivator +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Vorto Datatype Editor UI (Incubation) +Bundle-Vendor: Eclipse.org/Vorto +Bundle-Version: 0.9.0.qualifier +Bundle-SymbolicName: org.eclipse.vorto.editor.datatype.ui; singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.xtext.ui, + org.eclipse.ui.editors;bundle-version="3.5.0", + org.eclipse.ui.ide;bundle-version="3.5.0", + org.eclipse.xtext.ui.shared, + org.eclipse.ui, + org.eclipse.xtext.builder, + org.antlr.runtime, + org.eclipse.xtext.common.types.ui, + org.eclipse.xtext.ui.codetemplates.ui, + org.eclipse.compare, + org.eclipse.vorto.editor.datatype, + org.eclipse.vorto.editor.datatype.ide, + org.eclipse.vorto.core, + org.eclipse.xtext.xbase.lib, + org.eclipse.vorto.core.ui, + org.eclipse.xtend.lib;resolution:=optional +Import-Package: org.apache.log4j +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: org.eclipse.vorto.editor.datatype.ui, + org.eclipse.vorto.editor.datatype.ui.contentassist, + org.eclipse.vorto.editor.datatype.ui.internal, + org.eclipse.vorto.editor.datatype.ui.quickfix, + org.eclipse.vorto.editor.datatype.ui.typecreator +Bundle-Activator: org.eclipse.vorto.editor.datatype.ui.internal.DatatypeActivator diff --git a/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/DatatypeUiModule.java b/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/DatatypeUiModule.xtend similarity index 70% rename from bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/DatatypeUiModule.java rename to bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/DatatypeUiModule.xtend index fd73c288be..02d29ed7ff 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/DatatypeUiModule.java +++ b/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/DatatypeUiModule.xtend @@ -1,30 +1,28 @@ -/** +/** * Copyright (c) 2015-2016 Bosch Software Innovations GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. - * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * The Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. - * * Contributors: * Bosch Software Innovations GmbH - Please refer to git log */ +package /* * generated by Xtext */ -package org.eclipse.vorto.editor.datatype.ui; +org.eclipse.vorto.editor.datatype.ui -import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.ui.plugin.AbstractUIPlugin -/** +/** * Use this class to register components to be used within the IDE. */ -public class DatatypeUiModule extends - org.eclipse.vorto.editor.datatype.ui.AbstractDatatypeUiModule { - public DatatypeUiModule(AbstractUIPlugin plugin) { - super(plugin); +class DatatypeUiModule extends org.eclipse.vorto.editor.datatype.ui.AbstractDatatypeUiModule { + new(AbstractUIPlugin plugin) { + super(plugin) } } diff --git a/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/TypeTemplate.java b/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/TypeTemplate.xtend similarity index 50% rename from bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/TypeTemplate.java rename to bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/TypeTemplate.xtend index 87bf5357e1..ea371e66c3 100644 --- a/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/TypeTemplate.java +++ b/bundles/org.eclipse.vorto.editor.datatype.ui/src/org/eclipse/vorto/editor/datatype/ui/typecreator/TypeTemplate.xtend @@ -1,41 +1,37 @@ -/** +/** * Copyright (c) 2015-2016 Bosch Software Innovations GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. - * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * The Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. - * * Contributors: * Bosch Software Innovations GmbH - Please refer to git log */ -package org.eclipse.vorto.editor.datatype.ui.typecreator; +package org.eclipse.vorto.editor.datatype.ui.typecreator -public class TypeTemplate { +class TypeTemplate { + String name + String datatype - private String name; - private String datatype; - - public TypeTemplate(String type, String name) { - this.datatype = type; - this.name = name; + new(String type, String name) { + this.datatype = type + this.name = name } - public String getTemplate() { - StringBuilder a = new StringBuilder(); - a.append("namespace"); - a.append(" com.mycompany"); - a.append("\n"); - a.append("version"); - a.append(" 1.0.0"); - a.append("\n"); - a.append(datatype).append(" ").append(name).append('{'); - a.append("\n"); - a.append("}"); - return a.toString(); + def String getTemplate() { + var StringBuilder a = new StringBuilder() + a.append("namespace") + a.append(" com.mycompany") + a.append("\n") + a.append("version") + a.append(" 1.0.0") + a.append("\n") + a.append(datatype).append(" ").append(name).append(Character.valueOf('{').charValue) + a.append("\n") + a.append("}") + return a.toString() } - -} \ No newline at end of file +} diff --git a/bundles/org.eclipse.vorto.editor.datatype.web/.gitignore b/bundles/org.eclipse.vorto.editor.datatype.web/.gitignore new file mode 100644 index 0000000000..c07a3c197b --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.web/.gitignore @@ -0,0 +1 @@ +/WebRoot/ diff --git a/bundles/org.eclipse.vorto.editor.datatype.web/pom.xml b/bundles/org.eclipse.vorto.editor.datatype.web/pom.xml new file mode 100644 index 0000000000..87912bcaec --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.web/pom.xml @@ -0,0 +1,124 @@ + + 4.0.0 + + + org.eclipse.vorto + bundles + 0.9.0-SNAPSHOT + + + org.eclipse.vorto.editor.datatype.web + + Datatype Editor Plugin Web + + + src + + + src + + **/*.java + **/*.xtend + + + + + + org.eclipse.xtend + xtend-maven-plugin + + + maven-war-plugin + 2.6 + + WebRoot + false + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-source + initialize + + add-source + add-resource + + + + src-gen + + + + src-gen + + **/*.java + + + + + + + + + + + + + + org.springframework + spring-web + 4.3.0.RELEASE + + + org.eclipse.vorto + org.eclipse.vorto.core + ${project.version} + + + org.eclipse.vorto + org.eclipse.vorto.editor.web + ${project.version} + + + org.eclipse.vorto + org.eclipse.vorto.editor.datatype + ${project.version} + + + org.eclipse.vorto + org.eclipse.vorto.editor.datatype.ide + ${project.version} + + + org.eclipse.xtext + org.eclipse.xtext.xbase.web + ${xtext.version} + + + org.eclipse.xtext + org.eclipse.xtext.web.servlet + ${xtext.version} + + + org.eclipse.xtend + org.eclipse.xtend.lib + ${xtext.version} + + + org.eclipse.jetty + jetty-annotations + 9.2.11.v20150529 + provided + + + org.slf4j + slf4j-api + 1.7.1 + provided + + + diff --git a/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeServlet.xtend b/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeServlet.xtend new file mode 100644 index 0000000000..d3a7d717d1 --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeServlet.xtend @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */ +package org.eclipse.vorto.editor.datatype.web + +import com.google.inject.Provider +import java.util.List +import java.util.concurrent.ExecutorService +import java.util.concurrent.Executors +import javax.servlet.annotation.WebServlet +import org.eclipse.xtext.web.servlet.XtextServlet + +/** + * Deploy this class into a servlet container to enable DSL-specific services. + */ +@WebServlet(name = 'Datatype XtextServices', urlPatterns = '/datatype/xtext-service/*') +class DatatypeServlet extends XtextServlet { + + val List executorServices = newArrayList + + override init() { + super.init() + val Provider executorServiceProvider = [Executors.newCachedThreadPool => [executorServices += it]] + new DatatypeWebSetup(executorServiceProvider).createInjectorAndDoEMFRegistration() + } + + override destroy() { + executorServices.forEach[shutdown()] + executorServices.clear() + super.destroy() + } + +} diff --git a/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebModule.xtend b/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebModule.xtend new file mode 100644 index 0000000000..0891e58b8a --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebModule.xtend @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */ +package org.eclipse.vorto.editor.datatype.web + +import org.eclipse.vorto.editor.web.resource.HashMapResourceHandler +import org.eclipse.vorto.editor.web.resource.WebEditorResourceSetProvider +import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor +import org.eclipse.xtext.web.server.model.IWebResourceSetProvider +import org.eclipse.xtext.web.server.persistence.IServerResourceHandler + +/** + * Use this class to register additional components to be used within the web application. + */ +@FinalFieldsConstructor +class DatatypeWebModule extends AbstractDatatypeWebModule { + + def Class bindIWebResourceSetProvider() { + return WebEditorResourceSetProvider + } + + def Class bindIServerResourceHandler() { + return HashMapResourceHandler; + } +} diff --git a/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebSetup.xtend b/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebSetup.xtend new file mode 100644 index 0000000000..80790b2b07 --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype.web/src/org/eclipse/vorto/editor/datatype/web/DatatypeWebSetup.xtend @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */ +package org.eclipse.vorto.editor.datatype.web + +import com.google.inject.Guice +import com.google.inject.Injector +import com.google.inject.Provider +import com.google.inject.util.Modules +import java.util.concurrent.ExecutorService +import org.eclipse.vorto.editor.datatype.DatatypeRuntimeModule +import org.eclipse.vorto.editor.datatype.DatatypeStandaloneSetup +import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor + +/** + * Initialization support for running Xtext languages in web applications. + */ +@FinalFieldsConstructor +class DatatypeWebSetup extends DatatypeStandaloneSetup { + + val Provider executorServiceProvider; + + override Injector createInjector() { + val runtimeModule = new DatatypeRuntimeModule() + val webModule = new DatatypeWebModule(executorServiceProvider) + return Guice.createInjector(Modules.override(runtimeModule).with(webModule)) + } + +} diff --git a/bundles/org.eclipse.vorto.editor.datatype/META-INF/MANIFEST.MF b/bundles/org.eclipse.vorto.editor.datatype/META-INF/MANIFEST.MF index 12b91de68d..823c6cfb7b 100644 --- a/bundles/org.eclipse.vorto.editor.datatype/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.vorto.editor.datatype/META-INF/MANIFEST.MF @@ -1,35 +1,38 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Vorto Datatype Editor (Incubation) -Bundle-Vendor: Eclipse.org/Vorto -Bundle-Version: 0.9.0.qualifier -Bundle-SymbolicName: org.eclipse.vorto.editor.datatype;singleton:=true -Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.xtext;visibility:=reexport, - org.eclipse.xtext.xbase;resolution:=optional;visibility:=reexport, - org.eclipse.xtext.generator;resolution:=optional, - org.apache.commons.logging;resolution:=optional, - org.eclipse.emf.codegen.ecore;resolution:=optional, - org.eclipse.emf.mwe.utils;resolution:=optional, - org.eclipse.emf.mwe2.launch;resolution:=optional, - org.eclipse.xtext.util, - org.eclipse.emf.ecore, - org.eclipse.emf.common, - org.antlr.runtime, - org.eclipse.xtext.common.types, - org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional, - org.eclipse.vorto.core, - org.eclipse.vorto.editor, - org.eclipse.xtext.xbase.lib -Import-Package: org.apache.log4j -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Export-Package: org.eclipse.vorto.editor.datatype,org.eclipse.vorto.ed - itor.datatype.converter,org.eclipse.vorto.editor.datatype.formatting, - org.eclipse.vorto.editor.datatype.generator,org.eclipse.vorto.editor. - datatype.internal.validation;x-friends:="org.eclipse.vorto.editor.fun - ctionblock.tests",org.eclipse.vorto.editor.datatype.parser.antlr,org. - eclipse.vorto.editor.datatype.parser.antlr.internal,org.eclipse.vorto - .editor.datatype.scoping,org.eclipse.vorto.editor.datatype.serializer - ,org.eclipse.vorto.editor.datatype.services,org.eclipse.vorto.editor. - datatype.validation - +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Vorto Datatype Editor (Incubation) +Bundle-Vendor: Eclipse.org/Vorto +Bundle-Version: 0.9.0.qualifier +Bundle-SymbolicName: org.eclipse.vorto.editor.datatype;singleton:=true +Bundle-ActivationPolicy: lazy +Require-Bundle: org.eclipse.xtext;visibility:=reexport, + org.eclipse.xtext.xbase;resolution:=optional;visibility:=reexport, + org.eclipse.xtext.generator;resolution:=optional, + org.apache.commons.logging;resolution:=optional, + org.eclipse.emf.codegen.ecore;resolution:=optional, + org.eclipse.emf.mwe.utils;resolution:=optional, + org.eclipse.emf.mwe2.launch;resolution:=optional, + org.eclipse.xtext.util, + org.eclipse.emf.ecore, + org.eclipse.emf.common, + org.antlr.runtime, + org.eclipse.xtext.common.types, + org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional, + org.eclipse.vorto.core, + org.eclipse.vorto.editor, + org.eclipse.xtext.xbase.lib, + org.eclipse.xtend.lib +Import-Package: org.apache.log4j +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: org.eclipse.vorto.editor.datatype, + org.eclipse.vorto.editor.datatype.converter, + org.eclipse.vorto.editor.datatype.formatting, + org.eclipse.vorto.editor.datatype.generator, + org.eclipse.vorto.editor.datatype.internal.validation;x-friends:="org.eclipse.vorto.editor.functionblock.tests", + org.eclipse.vorto.editor.datatype.parser.antlr, + org.eclipse.vorto.editor.datatype.parser.antlr.internal, + org.eclipse.vorto.editor.datatype.scoping, + org.eclipse.vorto.editor.datatype.serializer, + org.eclipse.vorto.editor.datatype.services, + org.eclipse.vorto.editor.datatype.validation + diff --git a/bundles/org.eclipse.vorto.editor.datatype/pom.xml b/bundles/org.eclipse.vorto.editor.datatype/pom.xml index 962579519d..ba027325ac 100644 --- a/bundles/org.eclipse.vorto.editor.datatype/pom.xml +++ b/bundles/org.eclipse.vorto.editor.datatype/pom.xml @@ -11,12 +11,12 @@ org.eclipse.vorto.editor.datatype eclipse-plugin Data Type Editor Plugin - The designer plugin lets users create a function block - definition. + The designer plugin lets users create a datatype. org.eclipse.vorto.editor.datatype.tests + @@ -40,7 +40,7 @@ -p - runtimeProject=/${project.basedir} + rootPath=/${project.basedir}/.. @@ -66,6 +66,47 @@ org.eclipse.xtend xtend-maven-plugin + + org.apache.maven.plugins + maven-clean-plugin + + + + ${basedir}/../org.eclipse.vorto.editor.datatype/src-gen/ + + **/* + + + + ${basedir}/../org.eclipse.vorto.editor.datatype.ide/src-gen/ + + **/* + + + + ${basedir}/../org.eclipse.vorto.editor.datatype.ui/src-gen/ + + **/* + + + + ${basedir}/../org.eclipse.vorto.editor.datatype.web/src-gen/ + + **/* + + + + ${basedir}/../org.eclipse.vorto.editor.datatype.tests/src-gen/ + + **/* + + + + ${basedir}/model/generated/ + + + + diff --git a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeRuntimeModule.java b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeRuntimeModule.xtend similarity index 53% rename from bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeRuntimeModule.java rename to bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeRuntimeModule.xtend index ec2184c219..39817acc87 100644 --- a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeRuntimeModule.java +++ b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeRuntimeModule.xtend @@ -1,47 +1,46 @@ -/** +/** * Copyright (c) 2015-2016 Bosch Software Innovations GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. - * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * The Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. - * * Contributors: * Bosch Software Innovations GmbH - Please refer to git log */ +package /* * generated by Xtext */ -package org.eclipse.vorto.editor.datatype; +org.eclipse.vorto.editor.datatype -import org.eclipse.vorto.editor.datatype.converter.DatatypeValueConverter; -import org.eclipse.vorto.editor.datatype.scoping.DatatypeScopeProvider; -import org.eclipse.xtext.conversion.IValueConverterService; -import org.eclipse.xtext.naming.IQualifiedNameProvider; -import org.eclipse.xtext.scoping.IScopeProvider; +import org.eclipse.vorto.editor.datatype.converter.DatatypeValueConverter +import org.eclipse.vorto.editor.datatype.formatting.DatatypeFormatter +import org.eclipse.vorto.editor.datatype.scoping.DatatypeScopeProvider +import org.eclipse.xtext.conversion.IValueConverterService +import org.eclipse.xtext.naming.IQualifiedNameProvider +import org.eclipse.xtext.scoping.IScopeProvider -/** +/** * Use this class to register components to be used at runtime / without the * Equinox extension registry. */ -public class DatatypeRuntimeModule extends - org.eclipse.vorto.editor.datatype.AbstractDatatypeRuntimeModule { +class DatatypeRuntimeModule extends AbstractDatatypeRuntimeModule { + override Class bindIScopeProvider() { + return DatatypeScopeProvider + } - @Override - public Class bindIScopeProvider() { - return DatatypeScopeProvider.class; + override Class bindIQualifiedNameProvider() { + return QualifiedNameWithVersionProvider } - @Override - public Class bindIQualifiedNameProvider() { - return QualifiedNameWithVersionProvider.class; + override Class bindIValueConverterService() { + return DatatypeValueConverter } - @Override - public Class bindIValueConverterService() { - return DatatypeValueConverter.class; + override bindIFormatter() { + DatatypeFormatter } } diff --git a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeStandaloneSetup.java b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeStandaloneSetup.xtend similarity index 81% rename from bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeStandaloneSetup.java rename to bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeStandaloneSetup.xtend index 91585ee640..3bb1cedff4 100644 --- a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeStandaloneSetup.java +++ b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/DatatypeStandaloneSetup.xtend @@ -1,29 +1,27 @@ -/** +/** * Copyright (c) 2015-2016 Bosch Software Innovations GmbH and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. - * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * The Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. - * * Contributors: * Bosch Software Innovations GmbH - Please refer to git log */ +package /* * generated by Xtext */ -package org.eclipse.vorto.editor.datatype; +org.eclipse.vorto.editor.datatype -/** +/** * Initialization support for running Xtext languages without equinox extension * registry */ -public class DatatypeStandaloneSetup extends DatatypeStandaloneSetupGenerated { - - public static void doSetup() { - new DatatypeStandaloneSetup().createInjectorAndDoEMFRegistration(); +class DatatypeStandaloneSetup extends DatatypeStandaloneSetupGenerated { + def static void doSetup() { + new DatatypeStandaloneSetup().createInjectorAndDoEMFRegistration() } } diff --git a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/GenerateDatatype.mwe2 b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/GenerateDatatype.mwe2 index 1ece3d40a6..5b26c31c73 100644 --- a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/GenerateDatatype.mwe2 +++ b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/GenerateDatatype.mwe2 @@ -13,164 +13,73 @@ * Bosch Software Innovations GmbH - Please refer to git log * *******************************************************************************/ -module org.eclipse.vorto.editor.GenerateDatatype +module org.eclipse.vorto.editor.datatype.GenerateDatatype +import org.eclipse.xtext.xtext.generator.* +import org.eclipse.xtext.xtext.generator.model.project.* import org.eclipse.emf.mwe.utils.* import org.eclipse.xtext.generator.* import org.eclipse.xtext.ui.generator.* -var grammarURI = "platform:/resource/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/Datatype.xtext" -var fileExtensions = "type" -var projectName = "org.eclipse.vorto.editor.datatype" -var runtimeProject = "../${projectName}" -var generateXtendStub = true -var encoding = "UTF-8" +var rootPath = ".." Workflow { - bean = StandaloneSetup { - resourceSet = org.eclipse.xtext.resource.XtextResourceSet:theResourceSet {} - platformUri = "${runtimeProject}/.." - scanClassPath = true - - uriMap = { - from = "platform:/plugin/org.eclipse.vorto.core/model/Datatype.ecore" - to = "platform:/plugin/org.eclipse.vorto.core/model/Datatype.ecore" - } + + component = XtextGenerator { + configuration = { + project = StandardProjectConfig { + baseName = "org.eclipse.vorto.editor.datatype" + rootPath = rootPath + eclipsePlugin = { + enabled = true + } + genericIde = { + enabled = true + } + web = { + enabled = true + } + runtimeTest = { + enabled = true + } + createEclipseMetaData = true + } + code = { + encoding = "UTF-8" + fileHeader = "/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */" + } + } + language = StandardLanguage { + name = "org.eclipse.vorto.editor.datatype.Datatype" + fileExtensions = "type" - registerGeneratedEPackage = "org.eclipse.vorto.core.api.model.datatype.DatatypePackage" - registerGenModelFile = "platform:/resource/org.eclipse.vorto.core/model/Datatype.genmodel" - - uriMap = { - from = "platform:/plugin/org.eclipse.vorto.core/model/Datatype.ecore" - to = "platform:/plugin/org.eclipse.vorto.core/model/Datatype.ecore" - } - - uriMap = { - from = "platform:/plugin/org.eclipse.vorto.core/model/Functionblock.ecore" - to = "platform:/plugin/org.eclipse.vorto.core/model/Functionblock.ecore" - } - - projectMapping = { projectName = '${projectName}' path = '${runtimeProject}' } - - projectMapping = { projectName = '${projectName}' path = '${runtimeProject}' } - - registerGeneratedEPackage = "org.eclipse.vorto.core.api.model.functionblock.FunctionblockPackage" - registerGenModelFile = "platform:/resource/org.eclipse.vorto.core/model/Functionblock.genmodel" - - registerGeneratedEPackage = "org.eclipse.vorto.core.api.model.model.ModelPackage" - registerGenModelFile = "platform:/resource/org.eclipse.vorto.core/model/Model.genmodel" - } - - component = DirectoryCleaner { - directory = "${runtimeProject}/src-gen" - } - - component = DirectoryCleaner { - directory = "${runtimeProject}/model/generated" - } - - component = DirectoryCleaner { - directory = "${runtimeProject}.ui/src-gen" - } - - component = DirectoryCleaner { - directory = "${runtimeProject}.tests/src-gen" - } - - component = Generator { - pathRtProject = runtimeProject - pathUiProject = "${runtimeProject}.ui" - pathTestProject = "${runtimeProject}.tests" - projectNameRt = projectName - projectNameUi = "${projectName}.ui" - encoding = encoding - language = auto-inject { - forcedResourceSet = theResourceSet - uri = grammarURI - // Java API to access grammar elements (required by several other fragments) - fragment = grammarAccess.GrammarAccessFragment auto-inject {} - - // generates Java API for the generated EPackages -// fragment = ecore.EMFGeneratorFragment auto-inject {} - - // the old serialization component - // fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {} - - // serializer 2.0 - fragment = serializer.SerializerFragment auto-inject { - generateStub = false + referencedResource = "platform:/resource/org.eclipse.vorto.core/model/Datatype.genmodel" + referencedResource = "platform:/resource/org.eclipse.vorto.core/model/Model.genmodel" + + webSupport = { + framework = "Ace" + generateHtmlExample=false + generateJettyLauncher=false + generateServlet=true + generateJsHighlighting=true } - - // a custom ResourceFactory for use with EMF - fragment = resourceFactory.ResourceFactoryFragment auto-inject {} - - // The antlr parser generator fragment. - fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject { - // options = { - // backtrack = true - // } - } - - // Xtend-based API for validation - fragment = validation.ValidatorFragment auto-inject { - // composedCheck = "org.eclipse.xtext.validation.ImportUriValidator" - // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" - } - - // old scoping and exporting API - // fragment = scoping.ImportURIScopingFragment auto-inject {} - // fragment = exporting.SimpleNamesFragment auto-inject {} - - // scoping and exporting API - fragment = scoping.ImportNamespacesScopingFragment auto-inject { - generateStub = false - } - fragment = exporting.QualifiedNamesFragment auto-inject {} - fragment = builder.BuilderIntegrationFragment auto-inject {} - - // generator API - fragment = generator.GeneratorFragment auto-inject {} - - // formatter API - fragment = formatting.FormatterFragment auto-inject {} - - // labeling API - fragment = labeling.LabelProviderFragment auto-inject {} - - // outline API - fragment = outline.OutlineTreeProviderFragment auto-inject {} - fragment = outline.QuickOutlineFragment auto-inject {} - - // quickfix API - fragment = quickfix.QuickfixProviderFragment auto-inject {} - - // content assist API - fragment = contentAssist.ContentAssistFragment auto-inject {} - - // generates a more lightweight Antlr parser and lexer tailored for content assist - fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {} - - // generates junit test support classes into Generator#pathTestProject - fragment = junit.Junit4Fragment auto-inject {} - - // rename refactoring - fragment = refactoring.RefactorElementNameFragment auto-inject {} - - // provides the necessary bindings for java types integration - fragment = types.TypesGeneratorFragment auto-inject {} - - // generates the required bindings only if the grammar inherits from Xbase - //fragment = xbase.XbaseGeneratorFragment auto-inject {} - - // generates the required bindings only if the grammar inherits from Xtype - //fragment = xbase.XtypeGeneratorFragment auto-inject {} - - // provides a preference page for template proposals - fragment = templates.CodetemplatesGeneratorFragment auto-inject {} - - // provides a compare view - fragment = compare.CompareFragment auto-inject {} - } - } + } + } } - diff --git a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/generator/DatatypeGenerator.xtend b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/generator/DatatypeGenerator.xtend index 7f50eb0519..416a8a733a 100644 --- a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/generator/DatatypeGenerator.xtend +++ b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/generator/DatatypeGenerator.xtend @@ -16,17 +16,18 @@ package org.eclipse.vorto.editor.datatype.generator import org.eclipse.emf.ecore.resource.Resource -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.IGenerator +import org.eclipse.xtext.generator.AbstractGenerator +import org.eclipse.xtext.generator.IFileSystemAccess2 +import org.eclipse.xtext.generator.IGeneratorContext /** * Generates code from your model files on save. * * see http://www.eclipse.org/Xtext/documentation.html#TutorialCodeGeneration */ -class DatatypeGenerator implements IGenerator { +class DatatypeGenerator extends AbstractGenerator { - override void doGenerate(Resource resource, IFileSystemAccess fsa) { - + override doGenerate(Resource input, IFileSystemAccess2 fsa, IGeneratorContext context) { +// throw new UnsupportedOperationException("TODO: auto-generated method stub") } } diff --git a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSemanticSequencer.xtend b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSemanticSequencer.xtend new file mode 100644 index 0000000000..c17c07734f --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSemanticSequencer.xtend @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */ +package org.eclipse.vorto.editor.datatype.serializer + + +class DatatypeSemanticSequencer extends AbstractDatatypeSemanticSequencer { +} diff --git a/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSyntacticSequencer.xtend b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSyntacticSequencer.xtend new file mode 100644 index 0000000000..81dc8ec9df --- /dev/null +++ b/bundles/org.eclipse.vorto.editor.datatype/src/org/eclipse/vorto/editor/datatype/serializer/DatatypeSyntacticSequencer.xtend @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2014 Bosch Software Innovations GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * The Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Bosch Software Innovations GmbH - Please refer to git log + * + *******************************************************************************/ +/* + * generated by Xtext + */ +package org.eclipse.vorto.editor.datatype.serializer + + +class DatatypeSyntacticSequencer extends AbstractDatatypeSyntacticSequencer { +} diff --git a/bundles/org.eclipse.vorto.editor.functionblock/pom.xml b/bundles/org.eclipse.vorto.editor.functionblock/pom.xml index 27670fbeda..5cb887a033 100644 --- a/bundles/org.eclipse.vorto.editor.functionblock/pom.xml +++ b/bundles/org.eclipse.vorto.editor.functionblock/pom.xml @@ -11,8 +11,7 @@ org.eclipse.vorto.editor.functionblock eclipse-plugin Function Block Editor Plugin - The designer plugin lets users create a function block - definition. + The designer plugin lets users create a function block definition. org.eclipse.vorto.editor.functionblock.tests diff --git a/bundles/pom.xml b/bundles/pom.xml index a53cc8da67..1d2fc94363 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -24,6 +24,8 @@ org.eclipse.vorto.editor.datatype org.eclipse.vorto.editor.datatype.ui org.eclipse.vorto.editor.datatype.tests + org.eclipse.vorto.editor.datatype.ide + org.eclipse.vorto.editor.datatype.web org.eclipse.vorto.editor.functionblock org.eclipse.vorto.editor.functionblock.ui diff --git a/server/devtool/pom.xml b/server/devtool/pom.xml index 99590d028a..8f38541c31 100644 --- a/server/devtool/pom.xml +++ b/server/devtool/pom.xml @@ -97,6 +97,27 @@ org.eclipse.vorto.editor.web ${project.version} + + org.eclipse.vorto + org.eclipse.vorto.editor.datatype + ${project.version} + + + org.eclipse.vorto + org.eclipse.vorto.editor.datatype.web + ${project.version} + + + org.eclipse.vorto + org.eclipse.vorto.editor.datatype.ide + ${project.version} + + + com.google.guava + guava + + + org.eclipse.vorto org.eclipse.vorto.editor.functionblock diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/config/XtextConfiguration.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/config/XtextConfiguration.java index b83815cb5f..7af6822547 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/config/XtextConfiguration.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/config/XtextConfiguration.java @@ -19,6 +19,8 @@ import java.util.concurrent.Executors; import org.eclipse.vorto.core.api.model.informationmodel.impl.InformationModelPackageImpl; +import org.eclipse.vorto.editor.datatype.DatatypeStandaloneSetup; +import org.eclipse.vorto.editor.datatype.web.DatatypeServlet; import org.eclipse.vorto.editor.functionblock.FunctionblockStandaloneSetup; import org.eclipse.vorto.editor.functionblock.web.FunctionblockServlet; import org.eclipse.vorto.editor.infomodel.InformationModelRuntimeModule; @@ -58,6 +60,7 @@ public void apply(final ExecutorService it) { }; final Provider executorServiceProvider = _function; + DatatypeStandaloneSetup.doSetup(); FunctionblockStandaloneSetup.doSetup(); InformationModelPackageImpl.init(); @@ -67,6 +70,11 @@ public void apply(final ExecutorService it) { .with(new InformationModelWebModule(executorServiceProvider))); } + @Bean + public ServletRegistrationBean datatyepXtextServlet() { + return new ServletRegistrationBean(new DatatypeServlet(), "/datatype/xtext-service/*"); + } + @Bean public ServletRegistrationBean functionBlockXtextServlet() { return new ServletRegistrationBean(new FunctionblockServlet(), "/functionblock/xtext-service/*"); diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/controller/editor/DatatypeEditorController.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/controller/editor/DatatypeEditorController.java new file mode 100644 index 0000000000..99afecb8b1 --- /dev/null +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/controller/editor/DatatypeEditorController.java @@ -0,0 +1,79 @@ +package org.eclipse.vorto.server.devtool.controller.editor; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.tomcat.util.http.fileupload.IOUtils; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.vorto.editor.web.resource.WebEditorResourceSetProvider; +import org.eclipse.vorto.http.model.ModelId; +import org.eclipse.vorto.http.model.ModelResource; +import org.eclipse.vorto.server.devtool.service.editor.DatatypeEditorServiceImpl; +import org.eclipse.xtext.web.server.model.IWebResourceSetProvider; +import org.eclipse.xtext.web.servlet.HttpServiceContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.google.inject.Injector; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; + +@RestController +@RequestMapping(value = "/editor/datatype") +public class DatatypeEditorController { + + @Autowired + Injector injector; + + @Autowired + DatatypeEditorServiceImpl datatypeEditorServiceImpl; + + @ApiOperation(value = "Adds the data type to the resource set") + @RequestMapping(value = "/link/datatype/{resourceId}/{namespace}/{name}/{version:.+}", method = RequestMethod.GET) + public void linkEditor(@ApiParam(value = "ResourceId", required = true) final @PathVariable String resourceId, + @ApiParam(value = "Namespace", required = true) final @PathVariable String namespace, + @ApiParam(value = "Name", required = true) final @PathVariable String name, + @ApiParam(value = "Version", required = true) final @PathVariable String version, + @ApiParam(value = "Request", required = true) final HttpServletRequest request, + @ApiParam(value = "Response", required = true) final HttpServletResponse response) { + + Objects.requireNonNull(resourceId, "resourceId must not be null"); + Objects.requireNonNull(namespace, "namespace must not be null"); + Objects.requireNonNull(name, "name must not be null"); + Objects.requireNonNull(version, "version must not be null"); + + ModelId modelId = new ModelId(name, namespace, version); + + HttpServiceContext httpServiceContext = new HttpServiceContext(request); + WebEditorResourceSetProvider webEditorResourceSetProvider = (WebEditorResourceSetProvider) injector.getInstance(IWebResourceSetProvider.class); + ResourceSet resourceSet = webEditorResourceSetProvider.getResourceSetFromSession(httpServiceContext); + HashSet referencedResourceSet = (HashSet) webEditorResourceSetProvider + .getReferencedResourcesFromSession(httpServiceContext); + + String content = datatypeEditorServiceImpl.linkModelToResource(resourceId, modelId, resourceSet, referencedResourceSet); + try { + IOUtils.copy(new ByteArrayInputStream(content.getBytes()), response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + throw new RuntimeException("Error copying file.", e); + } + } + + @ApiOperation(value = "") + @RequestMapping(value = "/search={expression:.*}", method = RequestMethod.GET) + public List searchByExpression( + @ApiParam(value = "Search expression", required = true) @PathVariable String expression) { + Objects.requireNonNull(expression, "namespace must not be null"); + return datatypeEditorServiceImpl.searchModelByExpression(expression); + } +} diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/models/ProjectResource.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/models/ProjectResource.java index 0ad9dd3862..66c915505e 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/models/ProjectResource.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/models/ProjectResource.java @@ -20,6 +20,15 @@ public class ProjectResource { private String name; private String version; private String namespace; + private String subType; + + public String getSubType() { + return subType; + } + + public void setSubType(String subType) { + this.subType = subType; + } public String getResourceId() { return resourceId; diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/DatatypeEditorServiceImpl.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/DatatypeEditorServiceImpl.java new file mode 100644 index 0000000000..0a466fb431 --- /dev/null +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/DatatypeEditorServiceImpl.java @@ -0,0 +1,44 @@ +package org.eclipse.vorto.server.devtool.service.editor; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.Set; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.vorto.http.model.ModelId; +import org.eclipse.vorto.http.model.ModelResource; +import org.eclipse.vorto.server.devtool.utils.DevtoolReferenceLinker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class DatatypeEditorServiceImpl extends IEditorService { + + @Autowired + DevtoolReferenceLinker devtoolReferenceLinker; + + @Override + public String linkModelToResource(String datatypeResourceId, ModelId datatypeModelId, ResourceSet resourceSet, + Set referencedResourceSet) { + devtoolReferenceLinker.linkDataTypeToFunctionBlock(datatypeResourceId, datatypeModelId, + resourceSet, referencedResourceSet); + Resource dataTypeResource = resourceSet.getResource(URI.createURI(datatypeResourceId), true); + try { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + dataTypeResource.save(byteArrayOutputStream, null); + return byteArrayOutputStream.toString(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public List searchModelByExpression(String expression) { + List modelList = searchModelByExpressionAndValidate(expression + " " + org.eclipse.vorto.http.model.ModelType.Datatype.toString() , org.eclipse.vorto.http.model.ModelType.Datatype); + return modelList; + } + +} diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/FunctionBlockEditorServiceImpl.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/FunctionBlockEditorServiceImpl.java index 885ae4d045..72d2753018 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/FunctionBlockEditorServiceImpl.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/editor/FunctionBlockEditorServiceImpl.java @@ -46,7 +46,6 @@ public String linkModelToResource(String functionBlockResourceId, ModelId dataty } catch (IOException e) { throw new RuntimeException(e); } - } public List searchModelByExpression(String expression) { diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java index f2da69f239..771f7c010c 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java @@ -40,14 +40,14 @@ public class DevtoolReferenceLinker { @Autowired - DevtoolRestClient informationModelEditorRestClient; + DevtoolRestClient devtoolRestClient; public void linkFunctionBlockToInfoModel(String infoModelResourceId, ModelId functionBlockModelId, ResourceSet resourceSet, Set referencedResourceSet) { if (!containsResource(infoModelResourceId, resourceSet)) { throw new RuntimeException("No resource with resourceId : " + infoModelResourceId); } - ModelType modelType = informationModelEditorRestClient.getModelType(functionBlockModelId); + ModelType modelType = devtoolRestClient.getModelType(functionBlockModelId); if (!modelType.equals(ModelType.Functionblock)) { throw new RuntimeException("No FunctionBlock [" + functionBlockModelId.toString() + "]"); } @@ -69,18 +69,31 @@ public void linkDataTypeToFunctionBlock(String functionBlockResourceId, ModelId if (!containsResource(functionBlockResourceId, resourceSet)) { throw new RuntimeException("No resource with resourceId : " + functionBlockResourceId); } - ModelType modelType = informationModelEditorRestClient.getModelType(datatypeModelId); + ModelType modelType = devtoolRestClient.getModelType(datatypeModelId); if (!modelType.equals(ModelType.Datatype)) { throw new RuntimeException("No DataType [" + datatypeModelId.toString() + "]"); } linkReferenceToModel(functionBlockResourceId, datatypeModelId, resourceSet, referencedResourceSet); } + + public void linkDataTypeToDataType(String dataTypeResourceId, ModelId datatypeModelId, + ResourceSet resourceSet, Set referencedResourceSet) { + if (!containsResource(dataTypeResourceId, resourceSet)) { + throw new RuntimeException("No resource with resourceId : " + dataTypeResourceId); + } + ModelType modelType = devtoolRestClient.getModelType(datatypeModelId); + if (!modelType.equals(ModelType.Datatype)) { + throw new RuntimeException("No DataType [" + datatypeModelId.toString() + "]"); + } + + linkReferenceToModel(dataTypeResourceId, datatypeModelId, resourceSet, referencedResourceSet); + } private void linkReferenceToModel(String modelResourceId, ModelId referenceModelId, ResourceSet resourceSet, Set referencedResourceSet) { - ModelType referenceModelType = informationModelEditorRestClient.getModelType(referenceModelId); + ModelType referenceModelType = devtoolRestClient.getModelType(referenceModelId); String fileName = getFileName(referenceModelId); URI uri = getURI(referenceModelId); @@ -95,7 +108,7 @@ private void linkReferenceToModel(String modelResourceId, ModelId referenceModel Resource resource = null; EObject eObject = null; if (!referencedResourceSet.contains(fileName)) { - String fileContents = informationModelEditorRestClient.getModelFile(referenceModelId); + String fileContents = devtoolRestClient.getModelFile(referenceModelId); try { resource = resourceSet.createResource(uri); resource.load(new ByteArrayInputStream(fileContents.getBytes((StandardCharsets.UTF_8))), @@ -159,7 +172,7 @@ private String generateFunctionBlockVariableName(FunctionblockModel fbm, Set