*** empty log message ***
diff --git a/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java b/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java
index 355a907..b87e808 100644
--- a/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java
+++ b/deprecated/examples/org.eclipse.uml2.examples.ui/src/org/eclipse/uml2/examples/ui/actions/CreateExtensionAction.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - Initial API and implementation
*
- * $Id: CreateExtensionAction.java,v 1.2 2004/05/28 05:13:28 khussey Exp $
+ * $Id: CreateExtensionAction.java,v 1.3 2004/06/02 17:55:34 khussey Exp $
*/
package org.eclipse.uml2.examples.ui.actions;
@@ -80,7 +80,7 @@
.getEClassifier(((org.eclipse.uml2.Class) referencedMetaclasses
.next()).getName());
- if (!stereotype.getExtendedEClasses().contains(eClassifier)) {
+ if (!stereotype.getAllExtendedEClasses().contains(eClassifier)) {
choiceOfValues.add(eClassifier);
}
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java
index c9ae155..a165bea 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Stereotype.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - Initial API and implementation
*
- * $Id: Stereotype.java,v 1.4 2004/05/28 05:13:45 khussey Exp $
+ * $Id: Stereotype.java,v 1.5 2004/06/02 17:55:37 khussey Exp $
*/
package org.eclipse.uml2;
@@ -50,12 +50,20 @@
public Extension createExtension(EClass eClass, boolean required);
/**
- * Retrieves the set of Ecore classes extended by this stereotype,
- * including the Ecore classes extended by its super(stereo)types.
+ * Retrieves the set of Ecore classes extended by this stereotype, including
+ * the Ecore classes extended by its super(stereo)types.
*
- * @return The Ecore classes extended by this stereotype.
+ * @return The Ecore classes extended by this stereotype and its
+ * super(stereo)types.
*/
- public Set getExtendedEClasses();
+ public Set getAllExtendedEClasses();
+
+ /**
+ * Retrieves the metaclasses extended by this stereotype.
+ *
+ * @return The metaclasses extended by this stereotype.
+ */
+ public Set getExtendedMetaclasses();
/**
* Retrieves the profile that owns this stereotype.
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
index 6ba6895..50dd028 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - Initial API and implementation
*
- * $Id: StereotypeImpl.java,v 1.15 2004/06/02 05:02:25 khussey Exp $
+ * $Id: StereotypeImpl.java,v 1.16 2004/06/02 17:55:37 khussey Exp $
*/
package org.eclipse.uml2.impl;
@@ -720,21 +720,47 @@
*
* @see org.eclipse.uml2.Stereotype#getExtendedEClasses()
*/
- public Set getExtendedEClasses() {
+ public Set getAllExtendedEClasses() {
try {
- Method method = getClass().getMethod("getExtendedEClasses", null); //$NON-NLS-1$
- Set extendedEClasses = (Set) getCacheAdapter().get(this, method);
+ Method method = getClass().getMethod("getAllExtendedEClasses", null); //$NON-NLS-1$
+ Set allExtendedEClasses = (Set) getCacheAdapter().get(this, method);
- if (null == extendedEClasses) {
- extendedEClasses = StereotypeOperations
- .getExtendedEClasses(this);
- getCacheAdapter().put(this, method, extendedEClasses);
+ if (null == allExtendedEClasses) {
+ allExtendedEClasses = StereotypeOperations
+ .getAllExtendedEClasses(this);
+ getCacheAdapter().put(this, method, allExtendedEClasses);
}
- return extendedEClasses;
+ return allExtendedEClasses;
} catch (Exception e) {
- return StereotypeOperations.getExtendedEClasses(this);
+ return StereotypeOperations.getAllExtendedEClasses(this);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.uml2.Stereotype#getExtendedMetaclasses()
+ */
+ public Set getExtendedMetaclasses() {
+
+ try {
+ Method method = getClass()
+ .getMethod("getExtendedMetaclasses", null); //$NON-NLS-1$
+ Set extendedMetaclasses = (Set) getCacheAdapter().get(eResource(),
+ this, method);
+
+ if (null == extendedMetaclasses) {
+ extendedMetaclasses = StereotypeOperations
+ .getExtendedMetaclasses(this);
+ getCacheAdapter().put(eResource(), this, method,
+ extendedMetaclasses);
+ }
+
+ return extendedMetaclasses;
+ } catch (Exception e) {
+ return StereotypeOperations.getExtendedMetaclasses(this);
}
}
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java
index a2a24b6..79b9f06 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/internal/operation/StereotypeOperations.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - Initial API and implementation
*
- * $Id: StereotypeOperations.java,v 1.7 2004/06/01 20:05:27 khussey Exp $
+ * $Id: StereotypeOperations.java,v 1.8 2004/06/02 17:55:37 khussey Exp $
*/
package org.eclipse.uml2.internal.operation;
@@ -161,14 +161,15 @@
*
* @param stereotype
* The stereotype for which to retrieve the Ecore classes.
- * @return The Ecore classes extended by the stereotype.
+ * @return The Ecore classes extended by the stereotype and its
+ * super(stereo)types.
*/
- public static Set getExtendedEClasses(Stereotype stereotype) {
- Set extendedEClasses = new HashSet();
+ public static Set getAllExtendedEClasses(Stereotype stereotype) {
+ Set allExtendedEClasses = new HashSet();
- getExtendedEClassesHelper(stereotype, extendedEClasses);
+ getAllExtendedEClassesHelper(stereotype, allExtendedEClasses);
- return extendedEClasses;
+ return allExtendedEClasses;
}
/**
@@ -178,38 +179,32 @@
*
* @param stereotype
* The stereotype for which to add the Ecore classes.
- * @param extendedEClasses
+ * @param allExtendedEClasses
* The set to which to add the Ecore classes.
*/
- protected static void getExtendedEClassesHelper(Stereotype stereotype,
- Set extendedEClasses) {
+ protected static void getAllExtendedEClassesHelper(Stereotype stereotype,
+ Set allExtendedEClasses) {
- ownedAttributesLoop : for (Iterator ownedAttributes = stereotype
- .getOwnedAttributes().iterator(); ownedAttributes.hasNext();) {
+ extendedMetaclassesLoop : for (Iterator extendedMetaclasses = stereotype
+ .getExtendedMetaclasses().iterator(); extendedMetaclasses.hasNext();) {
- Property property = (Property) ownedAttributes.next();
- Type type = property.getType();
+ EClassifier eClassifier = UML2Package.eINSTANCE
+ .getEClassifier(((org.eclipse.uml2.Class) extendedMetaclasses
+ .next()).getName());
- if (org.eclipse.uml2.Class.class.isInstance(type)
- && Extension.class.isInstance(property.getAssociation())) {
+ if (EClass.class.isInstance(eClassifier)) {
- EClassifier eClassifier = UML2Package.eINSTANCE
- .getEClassifier(type.getName());
+ for (Iterator eClasses = allExtendedEClasses.iterator(); eClasses
+ .hasNext();) {
- if (EClass.class.isInstance(eClassifier)) {
+ EClass eClass = (EClass) eClasses.next();
- for (Iterator eClasses = extendedEClasses.iterator(); eClasses
- .hasNext();) {
-
- EClass eClass = (EClass) eClasses.next();
-
- if (((EClass) eClassifier).isSuperTypeOf(eClass)) {
- continue ownedAttributesLoop;
- }
+ if (((EClass) eClassifier).isSuperTypeOf(eClass)) {
+ continue extendedMetaclassesLoop;
}
-
- extendedEClasses.add(eClassifier);
}
+
+ allExtendedEClasses.add(eClassifier);
}
}
@@ -220,13 +215,42 @@
.getGeneral();
if (Stereotype.class.isInstance(general)) {
- getExtendedEClassesHelper((Stereotype) general,
- extendedEClasses);
+ getAllExtendedEClassesHelper((Stereotype) general,
+ allExtendedEClasses);
}
}
}
/**
+ * Retrieves the metaclasses extended by the specified stereotype.
+ *
+ * @param stereotype
+ * The stereotype for which to retrieve the metaclasses.
+ * @return The metaclasses extended by the stereotype.
+ */
+ public static Set getExtendedMetaclasses(Stereotype stereotype) {
+ Set extendedMetaclasses = new HashSet();
+
+ if (null != stereotype) {
+
+ for (Iterator ownedAttributes = stereotype.getOwnedAttributes()
+ .iterator(); ownedAttributes.hasNext();) {
+
+ Property property = (Property) ownedAttributes.next();
+ Type type = property.getType();
+
+ if (org.eclipse.uml2.Class.class.isInstance(type)
+ && Extension.class.isInstance(property.getAssociation())) {
+
+ extendedMetaclasses.add(type);
+ }
+ }
+ }
+
+ return extendedMetaclasses;
+ }
+
+ /**
* Applies the specified stereotype to the specified element.
*
* @param stereotype
@@ -285,7 +309,7 @@
throw new IllegalArgumentException(String.valueOf(eClass));
}
- for (Iterator extendedEClasses = stereotype.getExtendedEClasses()
+ for (Iterator extendedEClasses = stereotype.getAllExtendedEClasses()
.iterator(); extendedEClasses.hasNext();) {
if (eClass.isSuperTypeOf((EClass) extendedEClasses.next())) {
@@ -387,7 +411,7 @@
&& null != getEClass(stereotype, appliedVersion)) {
for (Iterator extendedEClasses = stereotype
- .getExtendedEClasses().iterator(); extendedEClasses
+ .getAllExtendedEClasses().iterator(); extendedEClasses
.hasNext();) {
if (((EClass) extendedEClasses.next())