[177252] Avoiding unnecessary generation of model root class methods.
diff --git a/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/genmodel/util/UML2GenModelUtil.java b/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/genmodel/util/UML2GenModelUtil.java
index 7d47c4c..316c943 100644
--- a/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/genmodel/util/UML2GenModelUtil.java
+++ b/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/genmodel/util/UML2GenModelUtil.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UML2GenModelUtil.java,v 1.17 2007/02/14 19:59:49 khussey Exp $
+ * $Id: UML2GenModelUtil.java,v 1.18 2007/03/14 02:29:02 khussey Exp $
  */
 package org.eclipse.uml2.codegen.ecore.genmodel.util;
 
@@ -520,6 +520,32 @@
 			: null;
 	}
 
+	public static boolean isFactoryMethods(GenClass genClass) {
+
+		for (GenClass classExtendsGenClass = genClass.getClassExtendsGenClass(); classExtendsGenClass != null; classExtendsGenClass = classExtendsGenClass
+			.getClassExtendsGenClass()) {
+
+			if (isFactoryMethods(classExtendsGenClass.getGenModel())) {
+				return false;
+			}
+		}
+
+		return isFactoryMethods(genClass.getGenModel());
+	}
+
+	public static boolean isCacheAdapterSupport(GenClass genClass) {
+
+		for (GenClass classExtendsGenClass = genClass.getClassExtendsGenClass(); classExtendsGenClass != null; classExtendsGenClass = classExtendsGenClass
+			.getClassExtendsGenClass()) {
+
+			if (isCacheAdapterSupport(classExtendsGenClass.getGenModel())) {
+				return false;
+			}
+		}
+
+		return isCacheAdapterSupport(genClass.getGenModel());
+	}
+
 	// GenFeature utilities
 
 	public static boolean isCached(GenFeature genFeature) {
diff --git a/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/templates/model/Class.java b/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/templates/model/Class.java
index c419098..881577c 100644
--- a/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/templates/model/Class.java
+++ b/plugins/org.eclipse.uml2.codegen.ecore/src/org/eclipse/uml2/codegen/ecore/templates/model/Class.java
@@ -7740,7 +7740,7 @@
     stringBuffer.append(TEXT_2146);
     if (isImplementation) {
     if (genClass.isModelRoot()) {
-    if (UML2GenModelUtil.isFactoryMethods(genModel)) {
+    if (UML2GenModelUtil.isFactoryMethods(genClass)) {
     stringBuffer.append(TEXT_2147);
     stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.EObject"));
     stringBuffer.append(TEXT_2148);
@@ -7749,7 +7749,7 @@
     stringBuffer.append(genModel.getImportedName("org.eclipse.emf.ecore.util.EcoreUtil"));
     stringBuffer.append(TEXT_2150);
     }
-    if (UML2GenModelUtil.isCacheAdapterSupport(genModel)) {
+    if (UML2GenModelUtil.isCacheAdapterSupport(genClass)) {
     stringBuffer.append(TEXT_2151);
     stringBuffer.append(genClass.getFormattedName());
     stringBuffer.append(TEXT_2152);
diff --git a/plugins/org.eclipse.uml2.codegen.ecore/templates/model/Class/insert.javajetinc b/plugins/org.eclipse.uml2.codegen.ecore/templates/model/Class/insert.javajetinc
index bf4cbd3..7972e13 100644
--- a/plugins/org.eclipse.uml2.codegen.ecore/templates/model/Class/insert.javajetinc
+++ b/plugins/org.eclipse.uml2.codegen.ecore/templates/model/Class/insert.javajetinc
@@ -1,6 +1,6 @@
 <%if (isImplementation) {%>
   <%if (genClass.isModelRoot()) {%>
-    <%if (UML2GenModelUtil.isFactoryMethods(genModel)) {%>
+    <%if (UML2GenModelUtil.isFactoryMethods(genClass)) {%>
 	/**
 	 * Creates a new instance of the specified Ecore class.
 	 * <!-- begin-user-doc -->
@@ -15,7 +15,7 @@
 	}
 
     <%}%>
-    <%if (UML2GenModelUtil.isCacheAdapterSupport(genModel)) {%>
+    <%if (UML2GenModelUtil.isCacheAdapterSupport(genClass)) {%>
 	/**
 	 * Retrieves the cache adapter for this '<em><b><%=genClass.getFormattedName()%></b></em>'.
 	 * <!-- begin-user-doc -->