Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorenzo Bettini2014-10-21 16:03:43 +0000
committerLorenzo Bettini2014-10-21 16:03:43 +0000
commita1dbabd157121fb0b6d1385154de617d5131229d (patch)
treee3733e26787521c4a868a424893e261d99c0e921
parente76f48a292a2dde9a5e9ab49bb8392f631e4de2a (diff)
downloadorg.eclipse.emf-parsley-a1dbabd157121fb0b6d1385154de617d5131229d.tar.gz
org.eclipse.emf-parsley-a1dbabd157121fb0b6d1385154de617d5131229d.tar.xz
org.eclipse.emf-parsley-a1dbabd157121fb0b6d1385154de617d5131229d.zip
448085: plugin generator does not depend on the inferrer
Change-Id: I1007ffe65bf2e81a4fd3a67f688f9c68c45da891 Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=448085
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslAllTests.java1
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslJvmModelInferrerTests.xtend105
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/generator/EmfParsleyDslPluginXmlGenerator.xtend6
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend51
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.xtend (renamed from dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.java)28
5 files changed, 44 insertions, 147 deletions
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslAllTests.java b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslAllTests.java
index 4c1538582..0450fbd1f 100644
--- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslAllTests.java
+++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslAllTests.java
@@ -26,7 +26,6 @@ import org.junit.runners.Suite;
EmfParsleyDslSmokeTests.class,
EmfParsleyDslScopingTests.class,
EmfParsleyDslValidatorTests.class,
- EmfParsleyDslJvmModelInferrerTests.class,
EmfParsleyDslPluginXmlGeneratorTests.class,
EmfParsleyDslGeneratorTests.class,
EmfParsleyDslOrganizeImportsTest.class
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslJvmModelInferrerTests.xtend b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslJvmModelInferrerTests.xtend
deleted file mode 100644
index fc6f47b78..000000000
--- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslJvmModelInferrerTests.xtend
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 RCP Vision (http://www.rcp-vision.com) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Lorenzo Bettini - initial API and implementation
- *******************************************************************************/
-package org.eclipse.emf.parsley.dsl.tests
-
-import com.google.inject.Inject
-import org.eclipse.emf.parsley.dsl.EmfParsleyDslInjectorProvider
-import org.eclipse.emf.parsley.dsl.jvmmodel.EmfParsleyDslJvmModelInferrer
-import org.eclipse.xtext.junit4.InjectWith
-import org.eclipse.xtext.junit4.XtextRunner
-import org.junit.Test
-import org.junit.runner.RunWith
-
-
-
-@RunWith(typeof(XtextRunner))
-@InjectWith(typeof(EmfParsleyDslInjectorProvider))
-class EmfParsleyDslJvmModelInferrerTests extends EmfParsleyDslAbstractTests {
-
- @Inject EmfParsleyDslJvmModelInferrer inferrer
-
- @Test
- def void testEmptyModule() {
- inputs.emptyModule.parseAndAssertNoError
- }
-
- @Test
- def void testModuleName() {
- "my.empty.EmfParsleyGuiceModuleGen".assertEqualsStrings(
- inferrer.moduleQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testExecutableExtensionFactoryName() {
- "my.empty.EmptyExecutableExtensionFactory".assertEqualsStrings(
- inferrer.executableExtensionFactoryQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testViewSpecificationExecutableExtensionFactoryName() {
- "my.test.TestExecutableExtensionFactory".assertEqualsStrings(
- inferrer.executableExtensionFactoryQN(
- inputs.nonEmptyViewsSpecifications.partSpecification
- )
- )
- }
-
- @Test
- def void testActivatorName() {
- "my.empty.Activator".assertEqualsStrings(
- inferrer.activatorQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testLabelProviderName() {
- "my.empty.ui.provider.LabelProviderGen".assertEqualsStrings(
- inferrer.labelProviderQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testPropertyDescriptionProviderName() {
- "my.empty.ui.provider.FeatureCaptionProviderGen".assertEqualsStrings(
- inferrer.featureCaptionProviderQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testFeaturesProviderName() {
- "my.empty.ui.provider.FeaturesProviderGen".assertEqualsStrings(
- inferrer.featuresProviderQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testFormFeatureControlFactoryName() {
- "my.empty.binding.FormControlFactoryGen".assertEqualsStrings(
- inferrer.formControlFactoryQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testViewerContentProviderName() {
- "my.empty.edit.ui.provider.ViewerContentProviderGen".assertEqualsStrings(
- inferrer.viewerContentProviderQN(inputs.emptyModule.module)
- )
- }
-
- @Test
- def void testProposalCreatorName() {
- "my.empty.binding.ProposalCreatorGen".assertEqualsStrings(
- inferrer.proposalCreatorQN(inputs.proposalCreator.module)
- )
- }
-} \ No newline at end of file
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/generator/EmfParsleyDslPluginXmlGenerator.xtend b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/generator/EmfParsleyDslPluginXmlGenerator.xtend
index e69134d2a..12f2442cd 100644
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/generator/EmfParsleyDslPluginXmlGenerator.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/generator/EmfParsleyDslPluginXmlGenerator.xtend
@@ -12,18 +12,18 @@ package org.eclipse.emf.parsley.dsl.generator
import com.google.inject.Inject
import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.parsley.dsl.jvmmodel.GeneratorUtils
import org.eclipse.emf.parsley.dsl.model.Module
import org.eclipse.emf.parsley.dsl.model.PartSpecification
import org.eclipse.emf.parsley.dsl.model.ViewSpecification
import org.eclipse.xtext.generator.IFileSystemAccess
import org.eclipse.xtext.generator.IGenerator
-import org.eclipse.emf.parsley.dsl.jvmmodel.EmfParsleyDslJvmModelInferrer
import static org.eclipse.emf.parsley.dsl.generator.EmfParsleyDslOutputConfigurationProvider.*
class EmfParsleyDslPluginXmlGenerator implements IGenerator {
- @Inject EmfParsleyDslJvmModelInferrer inferrer;
+ @Inject extension GeneratorUtils;
override doGenerate(Resource resource, IFileSystemAccess fsa) {
for(module: resource.allContents.toIterable.filter(typeof(Module))) {
@@ -60,7 +60,7 @@ class EmfParsleyDslPluginXmlGenerator implements IGenerator {
category="«if (viewSpecification.category == null || viewSpecification.category.empty)
"org.eclipse.emf.parsley" else
viewSpecification.category»"
- class="«inferrer.executableExtensionFactoryQN(viewSpecification)»:«viewSpecification.type.identifier»"
+ class="«executableExtensionFactoryQN(viewSpecification)»:«viewSpecification.type.identifier»"
id="«viewSpecification.id»"
name="«viewSpecification.viewName»"
restorable="true">
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend
index 986687bc2..daf729349 100644
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend
@@ -29,15 +29,16 @@ import org.eclipse.emf.parsley.dsl.model.AbstractFeatureProvider
import org.eclipse.emf.parsley.dsl.model.BindingsSpecification
import org.eclipse.emf.parsley.dsl.model.ControlFactorySpecification
import org.eclipse.emf.parsley.dsl.model.FeatureAssociatedExpression
+import org.eclipse.emf.parsley.dsl.model.LabelSpecification
import org.eclipse.emf.parsley.dsl.model.Module
-import org.eclipse.emf.parsley.dsl.model.PartSpecification
import org.eclipse.emf.parsley.dsl.model.ProviderBinding
import org.eclipse.emf.parsley.dsl.model.TypeBinding
import org.eclipse.emf.parsley.dsl.model.ValueBinding
import org.eclipse.emf.parsley.dsl.model.WithExtendsClause
import org.eclipse.emf.parsley.dsl.model.WithFields
+import org.eclipse.emf.parsley.edit.action.EditingMenuBuilder
+import org.eclipse.emf.parsley.edit.action.IMenuContributionSpecification
import org.eclipse.emf.parsley.edit.ui.provider.ViewerContentProvider
-import org.eclipse.emf.parsley.generator.common.EmfParsleyProjectFilesGenerator
import org.eclipse.emf.parsley.ui.provider.DialogFeatureCaptionProvider
import org.eclipse.emf.parsley.ui.provider.EClassToEStructuralFeatureAsStringsMap
import org.eclipse.emf.parsley.ui.provider.FeatureCaptionProvider
@@ -69,11 +70,6 @@ import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
-import static extension org.eclipse.xtext.EcoreUtil2.*
-import org.eclipse.emf.parsley.edit.action.EditingMenuBuilder
-import org.eclipse.emf.parsley.edit.action.IMenuContributionSpecification
-import org.eclipse.emf.parsley.dsl.model.LabelSpecification
-
/**
* <p>Infers a JVM model from the source model.</p>
*
@@ -94,8 +90,6 @@ class EmfParsleyDslJvmModelInferrer extends AbstractModelInferrer {
@Inject extension TypesFactory
@Inject extension GeneratorUtils
-
- @Inject EmfParsleyProjectFilesGenerator projectFilesGenerator
/**
* The dispatch method {@code infer} is called for each instance of the
@@ -219,68 +213,55 @@ class EmfParsleyDslJvmModelInferrer extends AbstractModelInferrer {
target.addAnnotations(annotations.filterNull.filter[annotationType != null])
}
- def activatorQN(Module element) {
- element.fullyQualifiedName + ".Activator"
- }
-
- def moduleQN(Module element) {
+ def private moduleQN(Module element) {
element.fullyQualifiedName + ".EmfParsleyGuiceModuleGen"
}
- def executableExtensionFactoryQN(Module element) {
- element.fullyQualifiedName.toString + "." +
- projectFilesGenerator.extFactoryName(element.fullyQualifiedName.toString)
- }
-
- def executableExtensionFactoryQN(PartSpecification element) {
- element.getContainerOfType(typeof(Module)).executableExtensionFactoryQN
- }
-
- def labelProviderQN(Module element) {
+ def private labelProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.LabelProviderGen"
}
- def tableLabelProviderQN(Module element) {
+ def private tableLabelProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.TableLabelProviderGen"
}
- def featureCaptionProviderQN(Module element) {
+ def private featureCaptionProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.FeatureCaptionProviderGen"
}
- def formFeatureCaptionProviderQN(Module element) {
+ def private formFeatureCaptionProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.FormFeatureCaptionProviderGen"
}
- def dialogFeatureCaptionProviderQN(Module element) {
+ def private dialogFeatureCaptionProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.DialogFeatureCaptionProviderGen"
}
- def featuresProviderQN(Module element) {
+ def private featuresProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.FeaturesProviderGen"
}
- def tableFeaturesProviderQN(Module element) {
+ def private tableFeaturesProviderQN(Module element) {
element.fullyQualifiedName + ".ui.provider.TableFeaturesProviderGen"
}
- def formControlFactoryQN(Module element) {
+ def private formControlFactoryQN(Module element) {
element.fullyQualifiedName + ".binding.FormControlFactoryGen"
}
- def dialogControlFactoryQN(Module element) {
+ def private dialogControlFactoryQN(Module element) {
element.fullyQualifiedName + ".binding.DialogControlFactoryGen"
}
- def viewerContentProviderQN(Module element) {
+ def private viewerContentProviderQN(Module element) {
element.fullyQualifiedName + ".edit.ui.provider.ViewerContentProviderGen"
}
- def proposalCreatorQN(Module element) {
+ def private proposalCreatorQN(Module element) {
element.fullyQualifiedName + ".binding.ProposalCreatorGen"
}
- def menuBuilderQN(Module element) {
+ def private menuBuilderQN(Module element) {
element.fullyQualifiedName + ".edit.action.MenuBuilderGen"
}
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.java b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.xtend
index 924a85691..1ba1fb3c9 100644
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.java
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.xtend
@@ -10,15 +10,26 @@
*******************************************************************************/
package org.eclipse.emf.parsley.dsl.jvmmodel;
-import java.beans.Introspector;
+import com.google.inject.Inject
+import java.beans.Introspector
+import org.eclipse.emf.parsley.dsl.model.Module
+import org.eclipse.emf.parsley.dsl.model.PartSpecification
+import org.eclipse.emf.parsley.generator.common.EmfParsleyProjectFilesGenerator
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+
+import static extension org.eclipse.xtext.EcoreUtil2.*
/**
* @author Lorenzo Bettini
*
*/
-public class GeneratorUtils {
+class GeneratorUtils {
+
+ @Inject extension IQualifiedNameProvider
+
+ @Inject EmfParsleyProjectFilesGenerator projectFilesGenerator
- public String getPropertyNameForGetterSetterMethod(String opName) {
+ def String getPropertyNameForGetterSetterMethod(String opName) {
if (opName.startsWith("get") && opName.length() > 3 && Character.isUpperCase(opName.charAt(3))) {
return Introspector.decapitalize(opName.substring(3));
}
@@ -29,4 +40,15 @@ public class GeneratorUtils {
return opName;
}
+
+ def executableExtensionFactoryQN(Module element) {
+ element.fullyQualifiedName.toString + "." +
+ projectFilesGenerator.extFactoryName(element.fullyQualifiedName.toString)
+ }
+
+ def executableExtensionFactoryQN(PartSpecification element) {
+ element.getContainerOfType(typeof(Module)).executableExtensionFactoryQN
+ }
+
+
}

Back to the top