package org.scribble.del;
import org.scribble.ast.ConnectionAction;
import org.scribble.ast.ScribNode;
import org.scribble.main.ScribbleException;
import org.scribble.visit.InlinedProtocolUnfolder;
import org.scribble.visit.ProtocolDefInliner;
import org.scribble.visit.env.UnfoldingEnv;
import org.scribble.visit.util.RoleCollector;
// FIXME: factor with MessageTransferDel
public abstract class ConnectionActionDel extends SimpleInteractionNodeDel
{
public ConnectionActionDel()
{
}
@Override
public ConnectionAction<?> leaveProtocolInlining(ScribNode parent, ScribNode child, ProtocolDefInliner inl, ScribNode visited) throws ScribbleException
{
ConnectionAction<?> c = (ConnectionAction<?>) visited;
ConnectionAction<?> inlined = (ConnectionAction<?>) c.clone();
inl.pushEnv(inl.popEnv().setTranslation(inlined));
return (ConnectionAction<?>) super.leaveProtocolInlining(parent, child, inl, c);
}
/*@Override
public void enterChoiceUnguardedSubprotocolCheck(ScribNode parent, ScribNode child, ChoiceUnguardedSubprotocolChecker checker) throws ScribbleException
{
ChoiceUnguardedSubprotocolEnv env = checker.popEnv();
env = env.disablePrune();
checker.pushEnv(env);
}*/
@Override
public void enterInlinedProtocolUnfolding(ScribNode parent, ScribNode child, InlinedProtocolUnfolder unf) throws ScribbleException
{
UnfoldingEnv env = unf.popEnv();
env = env.disableUnfold();
unf.pushEnv(env);
}
@Override
public ScribNode leaveRoleCollection(ScribNode parent, ScribNode child, RoleCollector coll, ScribNode visited)
{
ConnectionAction<?> c = (ConnectionAction<?>) visited;
coll.addName(c.src.toName());
coll.addName(c.dest.toName());
return visited;
}
/*@Override
public ScribNode leaveMessageIdCollection(ScribNode parent, ScribNode child, MessageIdCollector coll, ScribNode visited)
{
Connect<?> c = (Connect<?>) visited;
if (c.msg.isMessageSigNode() || c.msg.isMessageSigNameNode())
{
coll.addName((MessageId<?>) c.msg.toMessage().getId());
}
else
{
throw new RuntimeException("Shouldn't get in here: " + c.msg);
}
return visited;
}*/
/*@Override
public ScribNode leaveEnablingMessageCollection(ScribNode parent, ScribNode child, EnablingMessageCollector coll, ScribNode visited)
{
Connect<?> mt = (Connect<?>) visited;
coll.addEnabling(mt.src.toName(), mt.getDestinations().get(0).toName(), mt.msg.toMessage().getId()); // FIXME: multicast
return visited;
}*/
}