diff options
author | Lorenzo Bettini | 2014-10-21 16:03:43 +0000 |
---|---|---|
committer | Lorenzo Bettini | 2014-10-21 16:03:43 +0000 |
commit | a1dbabd157121fb0b6d1385154de617d5131229d (patch) | |
tree | e3733e26787521c4a868a424893e261d99c0e921 | |
parent | e76f48a292a2dde9a5e9ab49bb8392f631e4de2a (diff) | |
download | org.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.java | 1 | ||||
-rw-r--r-- | dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslJvmModelInferrerTests.xtend | 105 | ||||
-rw-r--r-- | dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/generator/EmfParsleyDslPluginXmlGenerator.xtend | 6 | ||||
-rw-r--r-- | dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend | 51 | ||||
-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 + } + + } |