blob: 8d8d7db167d2ae2069acfdd92723e08b0493ab91 [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
* Kenn Hussey (CEA) - 327039, 418466, 451350
* Christian W. Damus (CEA) - 251963
* 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>Send Signal Action</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A SendSignalAction is an InvocationAction that creates a Signal instance and transmits it to the target object. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instance is sent out and cannot receive reply values.
* <p>From package UML::Actions.</p>
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link org.eclipse.uml2.uml.SendSignalAction#getSignal <em>Signal</em>}</li>
* <li>{@link org.eclipse.uml2.uml.SendSignalAction#getTarget <em>Target</em>}</li>
* </ul>
*
* @see org.eclipse.uml2.uml.UMLPackage#getSendSignalAction()
* @model
* @generated
*/
public interface SendSignalAction
extends InvocationAction {
/**
* 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 Signal instance 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#getSendSignalAction_Target()
* @model containment="true" resolveProxies="true" required="true" ordered="false"
* @generated
*/
InputPin getTarget();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.SendSignalAction#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);
/**
* Returns the value of the '<em><b>Signal</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The Signal whose instance is transmitted to the target.
* <p>From package UML::Actions.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Signal</em>' reference.
* @see #setSignal(Signal)
* @see org.eclipse.uml2.uml.UMLPackage#getSendSignalAction_Signal()
* @model required="true" ordered="false"
* @generated
*/
Signal getSignal();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.SendSignalAction#getSignal <em>Signal</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Signal</em>' reference.
* @see #getSignal()
* @generated
*/
void setSignal(Signal value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The number and order of argument InputPins must be the same as the number and order of attributes of the signal.
* argument->size()=signal.allAttributes()->size()
* @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 validateNumberOrder(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* If onPort is not empty, the Port given by onPort must be an owned or inherited feature of the type of the target InputPin.
* not onPort->isEmpty() implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)
* @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);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The type, ordering, and multiplicity of an argument InputPin must be the same as the corresponding attribute of the signal.
* let attribute: OrderedSet(Property) = signal.allAttributes() in
* Sequence{1..argument->size()}->forAll(i |
* argument->at(i).type.conformsTo(attribute->at(i).type) and
* argument->at(i).isOrdered = attribute->at(i).isOrdered and
* argument->at(i).compatibleWith(attribute->at(i)))
* @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 validateTypeOrderingMultiplicity(DiagnosticChain diagnostics,
Map<Object, Object> context);
} // SendSignalAction