blob: 54d085566f431a7757dbb88dfa49e0481f6c6c91 [file] [log] [blame]
/*
* Copyright (c) 2005, 2018 IBM Corporation, CEA, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* IBM - initial API and implementation
* Christian W. Damus (CEA) - 251963
* Kenn Hussey (CEA) - 418466, 451350
* Kenn Hussey - 535301
*
*/
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>Call Operation Action</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A CallOperationAction is a CallAction that transmits an Operation call request to the target object, where it may cause the invocation of associated Behavior. The argument values of the CallOperationAction are passed on the input Parameters of the Operation. If call is synchronous, the execution of the CallOperationAction waits until the execution of the invoked Operation completes and the values of output Parameters of the Operation are placed on the result OutputPins. If the call is asynchronous, the CallOperationAction completes immediately and no results values can be provided.
* <p>From package UML::Actions.</p>
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link org.eclipse.uml2.uml.CallOperationAction#getOperation <em>Operation</em>}</li>
* <li>{@link org.eclipse.uml2.uml.CallOperationAction#getTarget <em>Target</em>}</li>
* </ul>
*
* @see org.eclipse.uml2.uml.UMLPackage#getCallOperationAction()
* @model
* @generated
*/
public interface CallOperationAction
extends CallAction {
/**
* Returns the value of the '<em><b>Operation</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The Operation being invoked.
* <p>From package UML::Actions.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Operation</em>' reference.
* @see #setOperation(Operation)
* @see org.eclipse.uml2.uml.UMLPackage#getCallOperationAction_Operation()
* @model required="true" ordered="false"
* @generated
*/
Operation getOperation();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.CallOperationAction#getOperation <em>Operation</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Operation</em>' reference.
* @see #getOperation()
* @generated
*/
void setOperation(Operation value);
/**
* Returns the value of the '<em><b>Target</b></em>' containment reference.
* <p>
* This feature subsets the following features:
* </p>
* <ul>
* <li>'{@link org.eclipse.uml2.uml.Action#getInputs() <em>Input</em>}'</li>
* </ul>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The InputPin that provides the target object to which the Operation call request is sent.
* <p>From package UML::Actions.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Target</em>' containment reference.
* @see #setTarget(InputPin)
* @see org.eclipse.uml2.uml.UMLPackage#getCallOperationAction_Target()
* @model containment="true" resolveProxies="true" required="true" ordered="false"
* @generated
*/
InputPin getTarget();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.CallOperationAction#getTarget <em>Target</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Target</em>' containment reference.
* @see #getTarget()
* @generated
*/
void setTarget(InputPin value);
/**
* Creates a new {@link org.eclipse.uml2.uml.InputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and sets the '<em><b>Target</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.InputPin}, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' for the new {@link org.eclipse.uml2.uml.InputPin}, or <code>null</code>.
* @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 #getTarget()
* @generated
*/
InputPin createTarget(String name, Type type, EClass eClass);
/**
* Creates a new {@link org.eclipse.uml2.uml.InputPin},with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and sets the '<em><b>Target</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.InputPin}, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' for the new {@link org.eclipse.uml2.uml.InputPin}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.InputPin}.
* @see #getTarget()
* @generated
*/
InputPin createTarget(String name, Type type);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* If onPort has no value, the operation must be an owned or inherited feature of the type of the target InputPin, otherwise the Port given by onPort must be an owned or inherited feature of the type of the target InputPin, and the Port must have a required or provided Interface with the operation as an owned or inherited feature.
* if onPort=null then target.type.oclAsType(Classifier).allFeatures()->includes(operation)
* else target.type.oclAsType(Classifier).allFeatures()->includes(onPort) and onPort.provided->union(onPort.required).allFeatures()->includes(operation)
* endif
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateTypeTargetPin(DiagnosticChain diagnostics,
Map<Object, Object> context);
} // CallOperationAction