package fr.inria.diverse.iot2.iot2.aspects; import fr.inria.diverse.iot2.iot2.iot2.ActivityEdge; import fr.inria.diverse.iot2.iot2.iot2.ForkNode; import fr.inria.diverse.k3.al.annotationprocessor.Aspect; import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.EList; import fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect; import fr.inria.diverse.iot2.iot2.aspects.Context; import fr.inria.diverse.iot2.iot2.aspects.ForkNodeAspectForkNodeAspectProperties; import fr.inria.diverse.iot2.iot2.aspects.ForkedToken; import fr.inria.diverse.iot2.iot2.aspects.Token; @Aspect(className = ForkNode.class) @SuppressWarnings("all") public class ForkNodeAspect extends ActivityNodeAspect { @OverrideAspectMethod public static void execute(final ForkNode _self, final Context c) { fr.inria.diverse.iot2.iot2.aspects.ForkNodeAspectForkNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.ForkNodeAspectForkNodeAspectContext.getSelf(_self); if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.ForkNode){ fr.inria.diverse.iot2.iot2.aspects.ForkNodeAspect._privk3_execute(_self_, (fr.inria.diverse.iot2.iot2.iot2.ForkNode)_self,c); } else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.ActivityNode){ fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect.execute((fr.inria.diverse.iot2.iot2.iot2.ActivityNode)_self,c); } else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.NamedElement){ fr.inria.diverse.iot2.iot2.aspects.NamedElementAspect.execute((fr.inria.diverse.iot2.iot2.iot2.NamedElement)_self,c); } else { throw new IllegalArgumentException("Unhandled parameter types: " + java.util.Arrays.<Object>asList(_self).toString()); }; } private static void super_execute(final ForkNode _self, final Context c) { fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspectActivityNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspectActivityNodeAspectContext.getSelf(_self); fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect._privk3_execute(_self_, _self,c); } protected static void _privk3_execute(final ForkNodeAspectForkNodeAspectProperties _self_, final ForkNode _self, final Context c) { c.output.executedNodes.add(_self); List<Token> tokens = ActivityNodeAspect.takeOfferdTokens(_self); ArrayList<Token> forkedTokens = new ArrayList<Token>(); for (final Token token : tokens) { { ForkedToken forkedToken = new ForkedToken(); forkedToken.baseToken = token; EList<ActivityEdge> _outgoing = _self.getOutgoing(); int _size = _outgoing.size(); forkedToken.remainingOffersCount = Integer.valueOf(_size); forkedTokens.add(forkedToken); } } ActivityNodeAspect.addTokens(_self, forkedTokens); ActivityNodeAspect.sendOffers(_self, forkedTokens); } }