blob: 2999b7e7ccf7f0c529b10f4aebdeb356eaf06bdb [file] [log] [blame]
/*
* Copyright (c) 2005 IBM Corporation 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:
* IBM - initial API and implementation
*
* $Id: StructuralFeatureAction.java,v 1.1 2005/11/14 22:25:58 khussey Exp $
*/
package org.eclipse.uml2.uml;
import java.util.Map;
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.ecore.EClass;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Structural Feature Action</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* This abstract action class statically specifies the structural feature being accessed. The object to access is specified dynamically, by referring to an input pin on which the object will be placed at runtime. The type of the value of this pin is the classifier that owns the specified structural feature, and the value's multiplicity is 1..1.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.uml2.uml.StructuralFeatureAction#getStructuralFeature <em>Structural Feature</em>}</li>
* <li>{@link org.eclipse.uml2.uml.StructuralFeatureAction#getObject <em>Object</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.uml2.uml.UMLPackage#getStructuralFeatureAction()
* @model abstract="true"
* @generated
*/
public interface StructuralFeatureAction
extends Action {
/**
* Returns the value of the '<em><b>Structural Feature</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Structural feature to be read.
* <!-- end-model-doc -->
* @return the value of the '<em>Structural Feature</em>' reference.
* @see #setStructuralFeature(StructuralFeature)
* @see org.eclipse.uml2.uml.UMLPackage#getStructuralFeatureAction_StructuralFeature()
* @model required="true" ordered="false"
* @generated
*/
StructuralFeature getStructuralFeature();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.StructuralFeatureAction#getStructuralFeature <em>Structural Feature</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Structural Feature</em>' reference.
* @see #getStructuralFeature()
* @generated
*/
void setStructuralFeature(StructuralFeature value);
/**
* Returns the value of the '<em><b>Object</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Gives the input pin from which the object whose structural feature is to be read or written is obtained.
*
*
* <!-- end-model-doc -->
* @return the value of the '<em>Object</em>' containment reference.
* @see #setObject(InputPin)
* @see org.eclipse.uml2.uml.UMLPackage#getStructuralFeatureAction_Object()
* @model containment="true" resolveProxies="false" required="true" ordered="false"
* @generated
*/
InputPin getObject();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.StructuralFeatureAction#getObject <em>Object</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Object</em>' containment reference.
* @see #getObject()
* @generated
*/
void setObject(InputPin value);
/**
* Creates a {@link org.eclipse.uml2.uml.InputPin} and sets the '<em><b>Object</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.InputPin} to create.
* @return The new {@link org.eclipse.uml2.uml.InputPin}.
* @see #getObject()
* @generated
*/
InputPin createObject(EClass eClass);
/**
* Creates a {@link org.eclipse.uml2.uml.InputPin} and sets the '<em><b>Object</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @return The new {@link org.eclipse.uml2.uml.InputPin}.
* @see #getObject()
* @generated
*/
InputPin createObject();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The structural feature must not be static.
* self.structuralFeature.isStatic = #false
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateNotStatic(DiagnosticChain diagnostics, Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The type of the object input pin is the same as the classifier of the object passed on this pin.
* true
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateSameType(DiagnosticChain diagnostics, Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The multiplicity of the input pin must be 1..1.
* self.object.multiplicity.is(1,1)
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Visibility of structural feature must allow access to the object performing the action.
* let host : Classifier = self.context in
* self.structuralFeature.visibility = #public
* or host = self.structuralFeature.featuringClassifier.type
* or (self.structuralFeature.visibility = #protected and host.allSupertypes
* ->includes(self.structuralFeature.featuringClassifier.type)))
*
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateVisibility(DiagnosticChain diagnostics, Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A structural feature has exactly one featuringClassifier.
* self.structuralFeature.featuringClassifier->size() = 1
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateOneFeaturingClassifier(DiagnosticChain diagnostics,
Map context);
} // StructuralFeatureAction