![JAR search and dependency download from the Maven repository](/logo.png)
net.sf.nakeduml.emf.extraction.ActionExtractor Maven / Gradle / Ivy
package net.sf.nakeduml.emf.extraction;
import java.util.ArrayList;
import java.util.List;
import net.sf.nakeduml.feature.StepDependency;
import net.sf.nakeduml.feature.visit.VisitBefore;
import net.sf.nakeduml.metamodel.actions.internal.NakedAcceptEventActionImpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedCallBehaviorActionImpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedCallOperationActionImpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedCreateObjectActionimpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedOpaqueActionImpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedSendObjectActionImpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedSendSignalActionImpl;
import net.sf.nakeduml.metamodel.actions.internal.NakedStartClassifierBehaviorActionImpl;
import net.sf.nakeduml.metamodel.activities.INakedInputPin;
import net.sf.nakeduml.metamodel.activities.INakedOutputPin;
import net.sf.nakeduml.metamodel.commonbehaviors.INakedBehavior;
import net.sf.nakeduml.metamodel.commonbehaviors.INakedSignal;
import net.sf.nakeduml.metamodel.core.INakedClassifier;
import net.sf.nakeduml.metamodel.core.INakedOperation;
import org.eclipse.uml2.uml.AcceptCallAction;
import org.eclipse.uml2.uml.AcceptEventAction;
import org.eclipse.uml2.uml.Activity;
import org.eclipse.uml2.uml.CallBehaviorAction;
import org.eclipse.uml2.uml.CallOperationAction;
import org.eclipse.uml2.uml.CreateObjectAction;
import org.eclipse.uml2.uml.InputPin;
import org.eclipse.uml2.uml.OpaqueAction;
import org.eclipse.uml2.uml.SendObjectAction;
import org.eclipse.uml2.uml.SendSignalAction;
import org.eclipse.uml2.uml.StartClassifierBehaviorAction;
@StepDependency(phase = EmfExtractionPhase.class,requires = {TypedElementExtractor.class,ActivityStructureExtractor.class},after = {
TypedElementExtractor.class,ActivityStructureExtractor.class})
public class ActionExtractor extends AbstractActionExtractor{
@VisitBefore
public void visitCreateObjectAction(CreateObjectAction emfAction,NakedCreateObjectActionimpl nakedAction){
nakedAction.setClassifier((INakedClassifier) getNakedPeer(emfAction.getClassifier()));
nakedAction.setResult((INakedOutputPin) initializePin(emfAction.getActivity(), emfAction.getResult(), emfAction.getClassifier()));
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitStartClassifierBehaviorAction(StartClassifierBehaviorAction emfAction,NakedStartClassifierBehaviorActionImpl nakedAction){
nakedAction.setTarget((INakedInputPin) initializePin(emfAction.getActivity(), emfAction.getObject(), null));
// List arguments = populatePins(getActivity(emfAction), emfAction.getOutputs());
// nakedAction.set(arguments);
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitCallBehaviorAction(CallBehaviorAction emfAction,NakedCallBehaviorActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
nakedAction.setBehavior((INakedBehavior) getNakedPeer(emfAction.getBehavior()));
// RSA workardound - it forces the called behavior's name into the name
// of
// the action
nakedAction.setName("call" + emfAction.getBehavior().getName());
List arguments = populatePins(emfActivity, emfAction.getArguments());
nakedAction.setArguments(arguments);
List result = populatePins(emfActivity, emfAction.getResults());
nakedAction.setResult(result);
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitOpaqueAction(OpaqueAction emfAction,NakedOpaqueActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
List inputs = new ArrayList(emfAction.getInputValues());
InputPin target = null;
for(InputPin p:inputs){
if(p.hasKeyword("target") || StereotypesHelper.hasStereotype(p, "target")){
target = p;
}
}
if(target != null){
nakedAction.setTarget((INakedInputPin) initializePin(emfActivity, target, null));
inputs.remove(target);
}
List inputValues = populatePins(emfActivity, inputs);
nakedAction.setInputValues(inputValues);
List outputValues = populatePins(emfActivity, emfAction.getOutputValues());
nakedAction.setOutputValues(outputValues);
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitCallOperationAction(CallOperationAction emfAction,NakedCallOperationActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
nakedAction.setOperation((INakedOperation) getNakedPeer(emfAction.getOperation()));
nakedAction.setTarget((INakedInputPin) initializePin(emfActivity, emfAction.getTarget(), emfAction.getOperation().getClass_()));
List arguments = populatePins(emfActivity, emfAction.getArguments());
nakedAction.setArguments(arguments);
List result = populatePins(emfActivity, emfAction.getResults());
nakedAction.setResult(result);
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitSendSignalAction(SendSignalAction emfAction,NakedSendSignalActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
nakedAction.setTarget((INakedInputPin) initializePin(emfActivity, emfAction.getTarget(), null));
nakedAction.setSignal((INakedSignal) getNakedPeer(emfAction.getSignal()));
List arguments = populatePins(emfActivity, emfAction.getArguments());
nakedAction.setArguments(arguments);
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitSendObjectAction(SendObjectAction emfAction,NakedSendObjectActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
nakedAction.setTarget((INakedInputPin) initializePin(emfActivity, emfAction.getTarget(), null));
nakedAction.setRequest((INakedInputPin) initializePin(emfActivity, emfAction.getRequest(), null));
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitAcceptEventAction(AcceptEventAction emfAction,NakedAcceptEventActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
if(!emfAction.getTriggers().isEmpty()){
// we only support one trigger
nakedAction.setEvent(buildEvent(emfActivity, emfAction.getTriggers().iterator().next()));
}
List result = populatePins(emfActivity, emfAction.getResults());
nakedAction.setResult(result);
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
@VisitBefore
public void visitAcceptCallAction(AcceptCallAction emfAction,NakedAcceptEventActionImpl nakedAction){
Activity emfActivity = getActivity(emfAction);
if(!emfAction.getTriggers().isEmpty()){
// we only support one trigger
nakedAction.setEvent(buildEvent(emfActivity, emfAction.getTriggers().iterator().next()));
}
this.addLocalPreAndPostConditions(nakedAction, emfAction);
assignPartition(nakedAction, emfAction);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy