[141183] Improving handling of expressions by migrating resource handler.
diff --git a/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/actions/GenerateUML2StereotypesAction.java b/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/actions/GenerateUML2StereotypesAction.java
index 8de2f74..cffd2b6 100644
--- a/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/actions/GenerateUML2StereotypesAction.java
+++ b/examples/org.eclipse.uml2.examples.uml.ui/src/org/eclipse/uml2/examples/uml/ui/actions/GenerateUML2StereotypesAction.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - initial API and implementation
*
- * $Id: GenerateUML2StereotypesAction.java,v 1.1 2006/04/25 20:58:28 khussey Exp $
+ * $Id: GenerateUML2StereotypesAction.java,v 1.2 2006/05/11 04:16:43 khussey Exp $
*/
package org.eclipse.uml2.examples.uml.ui.actions;
@@ -76,6 +76,22 @@
stringExpressionMetaclass, 0, 1).setAggregation(
AggregationKind.COMPOSITE_LITERAL);
+ Stereotype expressionStereotype = generateOwnedStereotype(
+ profile, "Expression", false); //$NON-NLS-1$
+ org.eclipse.uml2.uml.Class opaqueExpressionMetaclass = getReferencedUMLMetaclass(
+ profile, UMLPackage.Literals.OPAQUE_EXPRESSION);
+ generateExtension(expressionStereotype,
+ opaqueExpressionMetaclass, false);
+ org.eclipse.uml2.uml.Class valueSpecificationMetaclass = getReferencedUMLMetaclass(
+ profile, UMLPackage.Literals.VALUE_SPECIFICATION);
+ generateOwnedAttribute(expressionStereotype,
+ "operand", //$NON-NLS-1$
+ valueSpecificationMetaclass, 0,
+ LiteralUnlimitedNatural.UNLIMITED).setAggregation(
+ AggregationKind.COMPOSITE_LITERAL);
+ generateOwnedAttribute(expressionStereotype, "symbol", //$NON-NLS-1$
+ stringPrimitiveType, 0, 1);
+
Stereotype messageStereotype = generateOwnedStereotype(
profile, "Message", false); //$NON-NLS-1$
org.eclipse.uml2.uml.Class messageMetaclass = getReferencedUMLMetaclass(
@@ -87,6 +103,24 @@
generateOwnedAttribute(messageStereotype, "signature", //$NON-NLS-1$
namedElementMetaclass, 0, 1);
+ Stereotype opaqueExpressionStereotype = generateOwnedStereotype(
+ profile, "OpaqueExpression", false); //$NON-NLS-1$
+ org.eclipse.uml2.uml.Class expressionMetaclass = getReferencedUMLMetaclass(
+ profile, UMLPackage.Literals.EXPRESSION);
+ generateExtension(opaqueExpressionStereotype,
+ expressionMetaclass, false);
+ org.eclipse.uml2.uml.Class behaviorMetaclass = getReferencedUMLMetaclass(
+ profile, UMLPackage.Literals.BEHAVIOR);
+ generateOwnedAttribute(opaqueExpressionStereotype,
+ "behavior", //$NON-NLS-1$
+ behaviorMetaclass, 0, 1);
+ generateOwnedAttribute(opaqueExpressionStereotype,
+ "body", //$NON-NLS-1$
+ stringPrimitiveType, 0, 1);
+ generateOwnedAttribute(opaqueExpressionStereotype,
+ "language", //$NON-NLS-1$
+ stringPrimitiveType, 0, 1);
+
Stereotype templateSignatureStereotype = generateOwnedStereotype(
profile, "TemplateSignature", false); //$NON-NLS-1$
org.eclipse.uml2.uml.Class templateSignatureMetaclass = getReferencedUMLMetaclass(
diff --git a/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.properties b/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.properties
index a77b5d6..38e2cc3 100644
--- a/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.properties
+++ b/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.properties
@@ -7,7 +7,7 @@
# Contributors:
# IBM - initial API and implementation
#
-# $Id: UML2.profile.properties,v 1.1 2006/04/25 20:58:30 khussey Exp $
+# $Id: UML2.profile.properties,v 1.2 2006/05/11 04:16:57 khussey Exp $
# NLS_MESSAGEFORMAT_VAR
@@ -16,6 +16,8 @@
UML2__Comment = comment
UML2__Message = message
UML2__TemplateSignature = templateSignature
+UML2__Expression = expression
+UML2__OpaqueExpression = opaqueExpression
_label_UML2 = UML2 Profile
_label_UML2__Action = UML2 Action
@@ -35,3 +37,12 @@
_label_UML2__TemplateSignature__base_TemplateSignature = Base Template Signature
_label_UML2__TemplateSignature__nestedSignature = Nested Signature
_label_UML2__TemplateSignature__nestingSignature = Nesting Signature
+_label_UML2__Expression = UML2 Expression
+_label_UML2__Expression__base_OpaqueExpression = Base Opaque Expression
+_label_UML2__Expression__operand = Operand
+_label_UML2__Expression__symbol = Symbol
+_label_UML2__OpaqueExpression = UML2 Opaque Expression
+_label_UML2__OpaqueExpression__base_Expression = Base Expression
+_label_UML2__OpaqueExpression__behavior = Behavior
+_label_UML2__OpaqueExpression__body = Body
+_label_UML2__OpaqueExpression__language = Language
diff --git a/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.uml b/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.uml
index fe82f1d..03c5e33 100644
--- a/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.uml
+++ b/plugins/org.eclipse.uml2.uml.resources/profiles/UML2.profile.uml
@@ -54,6 +54,33 @@
<eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//TemplateSignature"/>
</eStructuralFeatures>
</eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_3Bb8Z-CPEdqoz4RYXIwjlw" name="Expression">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Bb8aOCPEdqoz4RYXIwjlw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="Expression"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_3Bb8aeCPEdqoz4RYXIwjlw" name="base_OpaqueExpression" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//OpaqueExpression"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_3Bb8auCPEdqoz4RYXIwjlw" name="operand" ordered="false" upperBound="-1" containment="true">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//ValueSpecification"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_3Bb8a-CPEdqoz4RYXIwjlw" name="symbol" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_3Bb8bOCPEdqoz4RYXIwjlw" name="OpaqueExpression">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Bb8beCPEdqoz4RYXIwjlw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="OpaqueExpression"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_3Bb8buCPEdqoz4RYXIwjlw" name="base_Expression" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Expression"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_3Bb8b-CPEdqoz4RYXIwjlw" name="behavior" ordered="false">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/2.0.0/UML#//Behavior"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_3Bb8cOCPEdqoz4RYXIwjlw" name="body" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_3Bb8ceCPEdqoz4RYXIwjlw" name="language" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
</contents>
</eAnnotations>
<elementImport xmi:type="uml:ElementImport" xmi:id="_elementImport.0">
@@ -147,7 +174,52 @@
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateSignature_TemplateSignature-extension_TemplateSignature-_lowerValue"/>
</ownedEnd>
</packagedElement>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_VFz_ANSUEdqN9tnr0j3PAQ">
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="Expression" name="Expression">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Expression-base_OpaqueExpression" name="base_OpaqueExpression" association="OpaqueExpression_Expression">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueExpression"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Expression-operand" name="operand" aggregation="composite">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Expression-operand-_upperValue" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-operand-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Expression-symbol" name="symbol">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Expression-symbol-_upperValue" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-symbol-_lowerValue"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="OpaqueExpression_Expression" name="OpaqueExpression_Expression" memberEnd="OpaqueExpression_Expression-extension_Expression Expression-base_OpaqueExpression">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="OpaqueExpression_Expression-extension_Expression" name="extension_Expression" type="Expression" aggregation="composite" association="OpaqueExpression_Expression">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression_Expression-extension_Expression-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="OpaqueExpression" name="OpaqueExpression">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-base_Expression" name="base_Expression" association="Expression_OpaqueExpression">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Expression"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-behavior" name="behavior">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-behavior-_upperValue" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-behavior-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-body" name="body">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-body-_upperValue" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-body-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="OpaqueExpression-language" name="language">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-language-_upperValue" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-language-_lowerValue"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="Expression_OpaqueExpression" name="Expression_OpaqueExpression" memberEnd="Expression_OpaqueExpression-extension_OpaqueExpression OpaqueExpression-base_Expression">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Expression_OpaqueExpression-extension_OpaqueExpression" name="extension_OpaqueExpression" type="OpaqueExpression" aggregation="composite" association="Expression_OpaqueExpression">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression_OpaqueExpression-extension_OpaqueExpression-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_profileApplication.0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VFz_AdSUEdqN9tnr0j3PAQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_vy-HUYinEdqtvbnfB2L_5w"/>
</eAnnotations>
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java
index 9eadf35..2adfa6d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - initial API and implementation
*
- * $Id: ElementOperations.java,v 1.39 2006/05/09 17:53:38 khussey Exp $
+ * $Id: ElementOperations.java,v 1.40 2006/05/11 04:16:53 khussey Exp $
*/
package org.eclipse.uml2.uml.internal.operations;
@@ -1008,8 +1008,10 @@
boolean resolve) {
Element owningElement = null;
- for (Element owner = element; (owningElement = (Element) owner.eGet(
- UMLPackage.Literals.ELEMENT__OWNER, resolve)) != null
+ for (Element owner = element; ((owningElement = (Element) owner.eGet(
+ UMLPackage.Literals.ELEMENT__OWNER, resolve)) == null
+ ? owner = owningElement = getBaseElement(owner.eContainer())
+ : owningElement) != null
&& !(eClass.isInstance(owningElement));) {
owner = owner.getOwner();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java
index 67cc089..fc76b59 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - initial API and implementation
*
- * $Id: UML22UMLExtendedMetaData.java,v 1.1 2006/04/26 15:48:53 khussey Exp $
+ * $Id: UML22UMLExtendedMetaData.java,v 1.2 2006/05/11 04:16:53 khussey Exp $
*/
package org.eclipse.uml2.uml.resource;
@@ -2336,6 +2336,7 @@
typeMap = new HashMap();
typeMap.put(UMLPackage.Literals.INTERACTION, "uml:EventOccurrence"); //$NON-NLS-1$
+ typeMap.put(UMLPackage.Literals.INTERACTION_OPERAND, "uml:EventOccurrence"); //$NON-NLS-1$
featureMap = new HashMap();
featureMap.put("fragment", typeMap); //$NON-NLS-1$
typeToTypeMap.put("uml:Stop", featureMap); //$NON-NLS-1$
@@ -2375,6 +2376,13 @@
featureMap = new HashMap();
featureMap.put("packagedElement", typeMap); //$NON-NLS-1$
typeToTypeMap.put("uml:Permission", featureMap); //$NON-NLS-1$
+
+ typeMap = new HashMap();
+ typeMap.put(UMLPackage.Literals.NAMED_ELEMENT, "uml:OpaqueExpression"); //$NON-NLS-1$
+ featureMap = new HashMap();
+ featureMap.put("mapping", typeMap); //$NON-NLS-1$
+ featureMap.put("selector", typeMap); //$NON-NLS-1$
+ typeToTypeMap.put("uml:Expression", featureMap); //$NON-NLS-1$
}
return typeToTypeMap;
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
index 9039a7c..2468c03 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - initial API and implementation
*
- * $Id: UML22UMLResourceHandler.java,v 1.18 2006/05/11 00:48:42 khussey Exp $
+ * $Id: UML22UMLResourceHandler.java,v 1.19 2006/05/11 04:16:53 khussey Exp $
*/
package org.eclipse.uml2.uml.resource;
@@ -47,6 +47,7 @@
import org.eclipse.uml2.common.util.UML2Util;
import org.eclipse.uml2.uml.Action;
import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Behavior;
import org.eclipse.uml2.uml.BehavioralFeature;
import org.eclipse.uml2.uml.BehavioredClassifier;
import org.eclipse.uml2.uml.CallBehaviorAction;
@@ -64,6 +65,7 @@
import org.eclipse.uml2.uml.ExecutionEvent;
import org.eclipse.uml2.uml.ExecutionOccurrenceSpecification;
import org.eclipse.uml2.uml.ExecutionSpecification;
+import org.eclipse.uml2.uml.Expression;
import org.eclipse.uml2.uml.Extension;
import org.eclipse.uml2.uml.ExtensionEnd;
import org.eclipse.uml2.uml.FunctionBehavior;
@@ -123,10 +125,16 @@
protected static final String STEREOTYPE__COMMENT = "Comment"; //$NON-NLS-1$
+ protected static final String STEREOTYPE__EXPRESSION = "Expression"; //$NON-NLS-1$
+
protected static final String STEREOTYPE__MESSAGE = "Message"; //$NON-NLS-1$
+ protected static final String STEREOTYPE__OPAQUE_EXPRESSION = "OpaqueExpression"; //$NON-NLS-1$
+
protected static final String STEREOTYPE__TEMPLATE_SIGNATURE = "TemplateSignature"; //$NON-NLS-1$
+ protected static final String TAG_DEFINITION__BEHAVIOR = "behavior"; //$NON-NLS-1$
+
protected static final String TAG_DEFINITION__BODY = "body"; //$NON-NLS-1$
protected static final String TAG_DEFINITION__BODY_EXPRESSION = "bodyExpression"; //$NON-NLS-1$
@@ -139,8 +147,12 @@
protected static final String TAG_DEFINITION__NESTING_SIGNATURE = "nestingSignature"; //$NON-NLS-1$
+ protected static final String TAG_DEFINITION__OPERAND = "operand"; //$NON-NLS-1$
+
protected static final String TAG_DEFINITION__SIGNATURE = "signature"; //$NON-NLS-1$
+ protected static final String TAG_DEFINITION__SYMBOL = "symbol"; //$NON-NLS-1$
+
protected AnyType getExtension(XMLResource resource, EObject eObject) {
return (AnyType) resource.getEObjectToExtensionMap().get(eObject);
}
@@ -561,6 +573,55 @@
return executionOccurrenceSpecification;
}
+ public Object caseExpression(Expression expression) {
+ AnyType extension = getExtension(resource, expression);
+
+ if (extension != null) {
+ Stereotype stereotype = getUML2Stereotype(expression,
+ STEREOTYPE__OPAQUE_EXPRESSION);
+
+ Object value = getValue(extension.getAnyAttribute(),
+ "behavior", true); //$NON-NLS-1$
+
+ if (value instanceof String) {
+ EObject eObject = resource.getEObject((String) value);
+
+ if (eObject instanceof Behavior) {
+ UMLUtil.setTaggedValue(expression, stereotype,
+ TAG_DEFINITION__BEHAVIOR, eObject);
+ }
+ }
+
+ value = getValue(extension.getAnyAttribute(), "body", true); //$NON-NLS-1$
+
+ if (value instanceof String) {
+ UMLUtil.setTaggedValue(expression, stereotype,
+ TAG_DEFINITION__BODY, value);
+ }
+
+ value = getValue(extension.getMixed(), "body", true); //$NON-NLS-1$
+
+ if (value instanceof AnyType) {
+ value = getValue(((AnyType) value).getMixed(), "text"); //$NON-NLS-1$
+
+ if (value instanceof String) {
+ UMLUtil.setTaggedValue(expression, stereotype,
+ TAG_DEFINITION__BODY, value);
+ }
+ }
+
+ value = getValue(extension.getAnyAttribute(),
+ "language", true); //$NON-NLS-1$
+
+ if (value instanceof String) {
+ UMLUtil.setTaggedValue(expression, stereotype,
+ TAG_DEFINITION__LANGUAGE, value);
+ }
+ }
+
+ return super.caseExpression(expression);
+ }
+
public Object caseExtensionEnd(ExtensionEnd extensionEnd) {
String name = extensionEnd.getName();
@@ -1074,6 +1135,38 @@
if (value instanceof String) {
opaqueExpression.getBodies().add(value);
}
+
+ Stereotype stereotype = getUML2Stereotype(opaqueExpression,
+ STEREOTYPE__EXPRESSION);
+
+ Collection values = getValues(extension.getMixed(),
+ "operand", true); //$NON-NLS-1$
+
+ if (!values.isEmpty()) {
+
+ if (UMLUtil.safeApplyStereotype(opaqueExpression,
+ stereotype) != null) {
+
+ EList operands = (EList) opaqueExpression.getValue(
+ stereotype, TAG_DEFINITION__OPERAND);
+
+ for (Iterator v = values.iterator(); v.hasNext();) {
+ value = v.next();
+
+ if (value instanceof ValueSpecification) {
+ operands.add(value);
+ }
+ }
+ }
+ }
+
+ value = getValue(extension.getAnyAttribute(),
+ "symbol", true); //$NON-NLS-1$
+
+ if (value instanceof String) {
+ UMLUtil.setTaggedValue(opaqueExpression, stereotype,
+ TAG_DEFINITION__SYMBOL, value);
+ }
}
return super.caseOpaqueExpression(opaqueExpression);