## org.eclipse.uml2.uml
Interface JoinNode

All Superinterfaces:
  ActivityNode, ControlNode, Element, org.eclipse.emf.ecore.EModelElement, org.eclipse.emf.ecore.EObject, NamedElement, org.eclipse.emf.common.notify.Notifier, RedefinableElement

    public interface JoinNode

extends ControlNode

A representation of the model object 'Join Node'. A join node is a control node that synchronizes multiple flows. Join nodes have a Boolean value specification using the names of the incoming edges to specify the conditions under which the join will emit a token.

The following features are supported:

- `Is Combine Duplicate`
- `Join Spec`

See Also:
  `UMLPackage.getJoinNode()`

Field Summary

Fields inherited from interface org.eclipse.uml2.uml.NamedElement
`SEPARATOR`

Method Summary
`ValueSpecification` `createJoinSpec(java.lang.String name, Type type, org.eclipse.emf.ecore.EClass eClass)` Creates a new `ValueSpecification`, with the specified 'Name', and 'Type', and sets the 'Join Spec' containment reference
`ValueSpecification` `getJoinSpec()` Returns the value of the 'Join Spec' containment reference.
`boolean` `isCombineDuplicate()` Returns the value of the 'Is Combine Duplicate' attribute.
`void` `setIsCombineDuplicate(boolean value)` Sets the value of the '`Is Combine Duplicate`' attribute
`void` `setJoinSpec(ValueSpecification value)` Sets the value of the '`Join Spec`' containment reference
`boolean` `validateIncomingObjectFlow(org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)` If a join node has an incoming object flow, it must have an outgoing object flow, otherwise, it must have an outgoing control flow.
`boolean` `validateOneOutgoingEdge(org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)` A join node has one outgoing edge.

Methods inherited from interface org.eclipse.uml2.uml.ActivityNode
`getActivity, getIncoming, getIncoming, getIncomings, getInGroups, getInInterruptibleRegions, getInPartition, getInPartition, getInPartitions, getInStructuredNode, getOutgoing, getOutgoing, getOutgoings, getRedefinedNode, getRedefinedNode, getRedefinedNodes, setActivity, setInStructuredNode, validateOwned, validateOwnedStructuredNode`

Methods inherited from interface org.eclipse.uml2.uml.RedefinableElement
`getRedefinedElement, getRedefinedElement, getRedefinedElements, getRedefinitionContext, getRedefinitionContext, getRedefinitionContexts, isConsistentWith, isLeaf, isRedefinitionContextValid, setIsLeaf, validateRedefinitionConsistent, validateRedefinitionContextValid`

Methods inherited from interface org.eclipse.uml2.uml.NamedElement

`allNamespaces, allOwningPackages, createDependency, createNameExpression, createUsage, getClientDependencies, getClientDependency, getClientDependency, getLabel, getLabel, getName, getNameExpression, getNamespace, getQualifiedName, getVisibility, isDistinguishableFrom, isSetName, isSetVisibility, separator, setName, setNameExpression, setVisibility, unsetName, unsetVisibility, validateHasNoQualifiedName, validateHasQualifiedName, validateVisibilityNeedsOwnership`

Methods inherited from interface org.eclipse.uml2.uml.Element

`addKeyword, allOwnedElements, applyStereotype, createEAnnotation, createOwnedComment, destroy, getApplicableStereotype, getApplicableStereotypes, getAppliedStereotype, getAppliedStereotypes, getAppliedSubstereotype, getAppliedSubstereotypes, getKeywords, getModel, getNearestPackage, getOwnedComments, getOwnedElements, getOwner, getRelationships, getRelationships, getRequiredStereotype, getRequiredStereotypes, getSourceDirectedRelationships, getSourceDirectedRelationships, getStereotypeApplication, getStereotypeApplications, getTargetDirectedRelationships, getTargetDirectedRelationships, getValue, hasKeyword, hasValue, isStereotypeApplicable, isStereotypeApplied, isStereotypeRequired, mustBeOwned, removeKeyword, setValue, unapplyStereotype, validateHasOwner, validateNotOwnSelf`

Methods inherited from interface org.eclipse.emf.ecore.EModelElement
`getEAnnotation, getEAnnotations`

Methods inherited from interface org.eclipse.emf.ecore.EObject
`eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eIsProxy, eIsSet, eResource, eSet, eUnset`

Methods inherited from interface org.eclipse.emf.common.notify.Notifier
`eAdapters, eDeliver, eNotify, eSetDeliver`

Method Detail

### isCombineDuplicate

    boolean isCombineDuplicate()

  Returns the value of the 'Is Combine Duplicate' attribute. The default value is `"true"`. Tells whether tokens having objects with the same identity are combined into one by the join.

  Returns:
    the value of the 'Is Combine Duplicate' attribute.
  See Also:
    `setIsCombineDuplicate(boolean)`, `UMLPackage.getJoinNode_IsCombineDuplicate()`

### setIsCombineDuplicate

    void setIsCombineDuplicate(boolean value)

  Sets the value of the '`Is Combine Duplicate`' attribute.

  Parameters:
    `value` - the new value of the 'Is Combine Duplicate' attribute.
  See Also:
    `isCombineDuplicate()`

### getJoinSpec

    ValueSpecification getJoinSpec()

  Returns the value of the 'Join Spec' containment reference.

  This feature subsets the following features:

  - '`Owned Element`'
  A specification giving the conditions under which the join with emit a token. Default is "and".

  Returns:
    the value of the 'Join Spec' containment reference.
  See Also:
    `setJoinSpec(ValueSpecification)`, `UMLPackage.getJoinNode_JoinSpec()`

### setJoinSpec

    void setJoinSpec(ValueSpecification value)

  Sets the value of the '`Join Spec`' containment reference.

  Parameters:
    `value` - the new value of the 'Join Spec' containment reference.
  See Also:
    `getJoinSpec()`

### createJoinSpec

    ValueSpecification createJoinSpec(java.lang.String name,
                                      Type type,
                                      org.eclipse.emf.ecore.EClass eClass)

  Creates a new `ValueSpecification`, with the specified 'Name', and 'Type', and sets the 'Join Spec' containment reference.

  Parameters:
    `name` - The 'Name' for the new `ValueSpecification`, or `null`.
    `type` - The 'Type' for the new `ValueSpecification`, or `null`.
    `eClass` - The Ecore class of the `ValueSpecification` to create.
  Returns:
    The new `ValueSpecification`.
  See Also:
    `getJoinSpec()`

### validateOneOutgoingEdge

    boolean validateOneOutgoingEdge(org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                                    java.util.Map<java.lang.Object,java.lang.Object> context)

  A join node has one outgoing edge. self.outgoing->size() = 1

  Parameters:
    `diagnostics` - The chain of diagnostics to which problems are to be appended.
    `context` - The cache of context-specific information.

### validateIncomingObjectFlow

    boolean validateIncomingObjectFlow(org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                                       java.util.Map<java.lang.Object,java.lang.Object> context)

  If a join node has an incoming object flow, it must have an outgoing object flow, otherwise, it must have an outgoing control flow. (self.incoming.select(e | e.isTypeOf(ObjectFlow)->notEmpty() implies self.outgoing.isTypeOf(ObjectFlow)) and (self.incoming.select(e | e.isTypeOf(ObjectFlow)->empty() implies self.outgoing.isTypeOf(ControlFlow))

  Parameters:
    `diagnostics` - The chain of diagnostics to which problems are to be appended.
    `context` - The cache of context-specific information.

Copyright 2003, 2007 IBM Corporation and others. All Rights Reserved.