448085: plugin generator does not depend on the inferrer

Change-Id: I1007ffe65bf2e81a4fd3a67f688f9c68c45da891
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=448085
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 4c15385..0450fbd 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 @@
 	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 fc6f47b..0000000
--- 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 e69134d..12f2442 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 @@
 
 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 @@
       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 986687b..daf7293 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.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.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 @@
 	@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 @@
 		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.java
deleted file mode 100644
index 924a856..0000000
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.java
+++ /dev/null
@@ -1,32 +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.jvmmodel;
-
-import java.beans.Introspector;
-
-/**
- * @author Lorenzo Bettini
- *
- */
-public class GeneratorUtils {
-
-	public String getPropertyNameForGetterSetterMethod(String opName) {
-		if (opName.startsWith("get") && opName.length() > 3 && Character.isUpperCase(opName.charAt(3))) {
-			return Introspector.decapitalize(opName.substring(3));
-		}
-
-		if (opName.startsWith("is") && opName.length() > 2 && Character.isUpperCase(opName.charAt(2))) {
-			return Introspector.decapitalize(opName.substring(2));
-		}
-
-		return opName;
-	}
-}
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.xtend b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.xtend
new file mode 100644
index 0000000..1ba1fb3
--- /dev/null
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/GeneratorUtils.xtend
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.jvmmodel;
+
+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
+ *
+ */
+class GeneratorUtils {
+	
+	@Inject extension IQualifiedNameProvider
+	
+	@Inject EmfParsleyProjectFilesGenerator projectFilesGenerator
+
+	def String getPropertyNameForGetterSetterMethod(String opName) {
+		if (opName.startsWith("get") && opName.length() > 3 && Character.isUpperCase(opName.charAt(3))) {
+			return Introspector.decapitalize(opName.substring(3));
+		}
+
+		if (opName.startsWith("is") && opName.length() > 2 && Character.isUpperCase(opName.charAt(2))) {
+			return Introspector.decapitalize(opName.substring(2));
+		}
+
+		return opName;
+	}
+
+	def executableExtensionFactoryQN(Module element) {
+   		element.fullyQualifiedName.toString + "." +
+   		projectFilesGenerator.extFactoryName(element.fullyQualifiedName.toString)
+   	}
+
+   	def executableExtensionFactoryQN(PartSpecification element) {
+   		element.getContainerOfType(typeof(Module)).executableExtensionFactoryQN
+   	}
+
+	
+}