Bug 317241
Tentative patch
diff --git a/plugins/org.eclipse.gmf.codegen/plugin.xml b/plugins/org.eclipse.gmf.codegen/plugin.xml
index 284f066..5ec2784 100644
--- a/plugins/org.eclipse.gmf.codegen/plugin.xml
+++ b/plugins/org.eclipse.gmf.codegen/plugin.xml
@@ -155,5 +155,18 @@
           namespace="xpt">
        <library class="org.eclipse.gmf.internal.codegen.util.XpandFacadeAccess"/>
     </unit>
+    <unit

+          name="GenPackageUtils"

+          namespace="gmf">

+       <library

+             class="org.eclipse.gmf.internal.codegen.util.GenPackageUtils">

+          <metamodel

+                nsURI="http://www.eclipse.org/emf/2002/GenModel">

+          </metamodel>

+          <metamodel

+                nsURI="http://www.eclipse.org/emf/2002/Ecore">

+          </metamodel>

+       </library>

+    </unit>

   </extension>
 </plugin>
diff --git a/plugins/org.eclipse.gmf.codegen/templates.nativestubs/gmf/GenPackageUtils.qvto b/plugins/org.eclipse.gmf.codegen/templates.nativestubs/gmf/GenPackageUtils.qvto
new file mode 100644
index 0000000..4dfdf33
--- /dev/null
+++ b/plugins/org.eclipse.gmf.codegen/templates.nativestubs/gmf/GenPackageUtils.qvto
@@ -0,0 +1,17 @@
+

+modeltype genModel uses "http://www.eclipse.org/emf/2002/GenModel";

+modeltype ecore uses "http://www.eclipse.org/emf/2002/Ecore";

+

+library GenPackageUtils;

+

+helper getGenPackageQualifiedPackageInterfaceName(genPackage : genmodel::GenPackage) : String {

+	return null;

+}

+

+helper getGenPackageQualifiedFactoryInterfaceName(genPackage : genmodel::GenPackage) : String {

+	return null;

+}

+

+helper getGenPackageQualifiedInterfaceName(genClass : genmodel::GenClass) : String {

+	return null;

+}

diff --git a/plugins/org.eclipse.gmf.codegen/templates.qvtlib/org/eclipse/gmf/internal/codegen/util/GenPackageUtils.java b/plugins/org.eclipse.gmf.codegen/templates.qvtlib/org/eclipse/gmf/internal/codegen/util/GenPackageUtils.java
new file mode 100644
index 0000000..9c06de8
--- /dev/null
+++ b/plugins/org.eclipse.gmf.codegen/templates.qvtlib/org/eclipse/gmf/internal/codegen/util/GenPackageUtils.java
@@ -0,0 +1,29 @@
+package org.eclipse.gmf.internal.codegen.util;

+

+import org.eclipse.emf.codegen.ecore.genmodel.GenClass;

+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;

+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;

+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;

+

+public class GenPackageUtils {

+	

+	@Operation(contextual = false, kind = Kind.HELPER)

+	public static  String getGenPackageQualifiedPackageInterfaceName(GenPackage genPackage)

+	{

+	  return genPackage.getQualifiedPackageInterfaceName();

+	}

+

+	@Operation(contextual = false, kind = Kind.HELPER)

+	public String getGenPackageQualifiedFactoryInterfaceName(GenPackage genPackage)

+	{

+	  return genPackage.getQualifiedFactoryInterfaceName();

+	}

+	

+	@Operation(contextual = false, kind = Kind.HELPER)

+	public static  String getGenPackageQualifiedInterfaceName(GenClass genClass)

+	{

+	  return genClass.getQualifiedInterfaceName();

+	}

+	

+	

+}

diff --git a/plugins/org.eclipse.gmf.codegen/templates/MetaModel.qvto b/plugins/org.eclipse.gmf.codegen/templates/MetaModel.qvto
index 001bde0..2a52288 100644
--- a/plugins/org.eclipse.gmf.codegen/templates/MetaModel.qvto
+++ b/plugins/org.eclipse.gmf.codegen/templates/MetaModel.qvto
@@ -12,6 +12,7 @@
 import xpt.StringOperations;
 import xpt.GenModelUtils;
 import gmf.CodeGenerationUtils;
+import gmf.GenPackageUtils;

 
 modeltype genmodel uses "http://www.eclipse.org/emf/2002/GenModel";
 modeltype ecore uses "http://www.eclipse.org/emf/2002/Ecore";
@@ -30,14 +31,14 @@
 -- GenPackageImpl#getQualifiedPackageInterfaceName()
 --
 helper getQualifiedPackageInterfaceName(gp : genmodel::GenPackage) : String {
-	return (if gp.genModel.suppressEMFMetaData then getQualifiedPackageClassName(gp) else getReflectionPackageName(gp) + '.' + getPackageInterfaceName(gp) endif)
+	return getGenPackageQualifiedPackageInterfaceName(gp)

 }
 
 --
 -- GenPackageImpl#getQualifiedFactoryInterfaceName()
 --
 helper getQualifiedFactoryInterfaceName(gp : genmodel::GenPackage) : String {
-	return getReflectionPackageName(gp) + '.' + getPrefixedName(gp, 'Factory')
+	return getGenPackageQualifiedFactoryInterfaceName(gp)

 }
 
 --
@@ -66,7 +67,7 @@
 -- GenClass#getQualifiedInterfaceName
 --
 helper getQualifiedInterfaceName(gc : genmodel::GenClass) : String {
-	return (if null <> gc.ecoreClass.instanceClassName then gc.ecoreClass.instanceClassName.xpandReplaceAll('\\$', '\\.') else getInterfacePackageName(gc.genPackage) + '.' + gc.ecoreClass.name endif)
+	return getGenPackageQualifiedInterfaceName(gc)

 }
 
 --