package fr.inria.diverse.iot2.iot2.aspects;
import fr.inria.diverse.iot2.iot2.iot2.InitialNode;
import fr.inria.diverse.k3.al.annotationprocessor.Aspect;
import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod;
import java.util.ArrayList;
import fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect;
import fr.inria.diverse.iot2.iot2.aspects.Context;
import fr.inria.diverse.iot2.iot2.aspects.ControlToken;
import fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspectInitialNodeAspectProperties;
import fr.inria.diverse.iot2.iot2.aspects.Token;
@Aspect(className = InitialNode.class)
@SuppressWarnings("all")
public class InitialNodeAspect extends ActivityNodeAspect {
@OverrideAspectMethod
public static void execute(final InitialNode _self, final Context c) {
fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspectInitialNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspectInitialNodeAspectContext.getSelf(_self);
if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.InitialNode){
fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspect._privk3_execute(_self_, (fr.inria.diverse.iot2.iot2.iot2.InitialNode)_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()); };
}
@OverrideAspectMethod
public static boolean hasOffers(final InitialNode _self) {
fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspectInitialNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspectInitialNodeAspectContext.getSelf(_self);
Object result = null;
if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.InitialNode){
result = fr.inria.diverse.iot2.iot2.aspects.InitialNodeAspect._privk3_hasOffers(_self_, (fr.inria.diverse.iot2.iot2.iot2.InitialNode)_self);
} else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.ActivityNode){
result = fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect.hasOffers((fr.inria.diverse.iot2.iot2.iot2.ActivityNode)_self);
} else { throw new IllegalArgumentException("Unhandled parameter types: " + java.util.Arrays.<Object>asList(_self).toString()); };
return (boolean)result;
}
private static void super_execute(final InitialNode _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 InitialNodeAspectInitialNodeAspectProperties _self_, final InitialNode _self, final Context c) {
ControlToken r = new ControlToken();
r.holder = _self;
ArrayList<Token> list = new ArrayList<Token>();
list.add(r);
ActivityNodeAspect.sendOffers(_self, list);
c.output.executedNodes.add(_self);
}
private static boolean super_hasOffers(final InitialNode _self) {
fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspectActivityNodeAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspectActivityNodeAspectContext.getSelf(_self);
return fr.inria.diverse.iot2.iot2.aspects.ActivityNodeAspect._privk3_hasOffers(_self_, _self);
}
protected static boolean _privk3_hasOffers(final InitialNodeAspectInitialNodeAspectProperties _self_, final InitialNode _self) {
return false;
}
}