/*
* Initial version copyright 2008 Lockheed Martin Corporation, except
* as stated in the file entitled Licensing-Information.
*
* All modifications copyright 2009-2012 Data Access Technologies, Inc.
*
* Licensed under the Academic Free License version 3.0
* (http://www.opensource.org/licenses/afl-3.0.php), except as stated
* in the file entitled Licensing-Information.
*/
package fUML.Semantics.Activities.IntermediateActivities;
import fUML.Debug;
import UMLPrimitiveTypes.*;
import fUML.Syntax.*;
import fUML.Syntax.Classes.Kernel.*;
import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
import fUML.Syntax.CommonBehaviors.Communications.*;
import fUML.Syntax.Activities.IntermediateActivities.*;
import fUML.Syntax.Actions.BasicActions.*;
import fUML.Semantics.*;
import fUML.Semantics.Classes.Kernel.*;
import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
import fUML.Semantics.Actions.BasicActions.*;
import fUML.Semantics.Loci.*;
public abstract class Token extends org.modeldriven.fuml.FumlObject {
public fUML.Semantics.Activities.IntermediateActivities.ActivityNodeActivation holder = null;
public fUML.Semantics.Activities.IntermediateActivities.Token transfer(
fUML.Semantics.Activities.IntermediateActivities.ActivityNodeActivation holder) {
// if this token does not have any holder, make the given holder its
// holder.
// Otherwise, remove this token from its holder and return a copy of it
// transfered to a new holder.
Token token = this;
if (this.holder != null) {
this.withdraw();
token = this.copy();
}
token.holder = holder;
return token;
} // transfer
public void withdraw() {
// Remove this token from its holder, withdrawing any offers for it.
if (!this.isWithdrawn()) {
// Debug.println("[withdraw] Taking token with value = " +
// this.getValue());
this.holder.removeToken(this);
this.holder = null;
}
} // withdraw
public abstract boolean equals(
fUML.Semantics.Activities.IntermediateActivities.Token other);
public abstract fUML.Semantics.Activities.IntermediateActivities.Token copy();
public boolean isWithdrawn() {
// Test if this token has been withdrawn.
return this.holder == null;
} // isWithdrawn
public abstract boolean isControl();
public abstract fUML.Semantics.Classes.Kernel.Value getValue();
} // Token