Skip to content
Snippets Groups Projects
Commit ea31a964 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

added missing callback linkage

parent 76f56d54
No related branches found
No related tags found
No related merge requests found
......@@ -164,10 +164,14 @@ aspect BalloonExecution{
return storage;
}
public BalloonCallbackStorage BalloonCallbackStorage.initializeSubnetCallbackStorage(List<Transition> transitions,PetriNet petriNet,boolean requireFlush){
for(Transition newT:transitions){
syn BalloonCallbackStorage BalloonCallbackStorage.initializePageCallbackStorage(Page page, PetriNet petriNet, boolean requireFlush) {
for (PnObject pnObject : page.getObjects()) {
if (pnObject.isTransitionObject()) {
Transition newT = pnObject.asDinerosTransition();
if (newT.asDinerosTransition().getStaticTransitionInformation().isSignalTransitionInformation()) {
BalloonTransition balloonTransition = new BalloonTransition();
......@@ -175,13 +179,14 @@ aspect BalloonExecution{
this.addTransition(balloonTransition);
for (Transition t : petriNet.allTransitions()) {
int splitIdx=newT.getId().lastIndexOf("-");
int splitIdx = newT.getId().indexOf("-");
if (t.getId().equals(newT.getId().substring(0, splitIdx))) {
balloonTransition.setBalloonCallbacks(resolveBalloonTransition(t).getBalloonCallbacks());
}
}
}
}
}
if (requireFlush) {
this.flushTreeCache();
......
......@@ -35,9 +35,14 @@ aspect BalloonMarking {
return marking;
}
public BalloonMarking BalloonMarking.initializeSubnetBalloonMarking(List<Place> subnetPlaces, boolean requireFlush) throws IOException, SAXException, ParserConfigurationException {
public BalloonMarking BalloonMarking.initializePageBalloonMarking(Page page, boolean requireFlush) throws IOException, SAXException, ParserConfigurationException {
for (Place place : subnetPlaces) {
// TODO: nesting
for (PnObject po : page.getObjects()) {
if (po.isPlaceObject()) {
Place place = po.asDinerosPlace();
BalloonMarkedPlace markedPlace = new BalloonMarkedPlace();
markedPlace.setPlace(place);
......@@ -51,6 +56,7 @@ aspect BalloonMarking {
this.addPlace(markedPlace);
}
}
if (requireFlush) {
this.flushTreeCache();
......@@ -59,18 +65,24 @@ aspect BalloonMarking {
return this;
}
public BalloonMarking BalloonMarking.deinitializeSubnet(List<Place> subnetPlaces, List<Transition> subnetTransitions, BalloonCallbackStorage bcs) throws IOException, SAXException, ParserConfigurationException{
public BalloonMarking BalloonMarking.deinitializePage(Page page, BalloonCallbackStorage bcs) throws IOException, SAXException, ParserConfigurationException{
for(Place place:subnetPlaces){
// TODO: nesting
for (PnObject po : page.getObjects()) {
if (po.isPlaceObject()) {
Place place = po.asDinerosPlace();
System.out.println("Deinit: " + place.getId());
this.resolveBalloonPlace(place).removeSelf();
}
for(Transition transition : subnetTransitions){
if (po.isTransitionObject()) {
Transition transition = po.asDinerosTransition();
if (transition.asDinerosTransition().getStaticTransitionInformation().isSignalTransitionInformation()) {
bcs.resolveBalloonTransition(transition).removeSelf();
}
}
}
return this;
}
......
package de.tudresden.inf.st.pnml.engine.ros;
import de.tudresden.inf.st.pnml.jastadd.model.*;
public class DiNeRosDefaultSubscriber implements DiNeRosSubscriber{
@Override
public boolean execute(BalloonMarking balloonMarking, BalloonCallbackStorage balloonCallbackStorage, PetriNet petriNet,
String subnet, InputSignalConnector inputSignalConnector, DiNeRosNode node) {
return DiNeRosNodeUtil.defaultSubNetExecute(balloonMarking, balloonCallbackStorage, petriNet, subnet, inputSignalConnector, node);
}
}
\ No newline at end of file
......@@ -302,17 +302,25 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
(ServiceResponseBuilder<StringServiceRequest, StringServiceResponse>) (request, response) -> {
java.lang.String instanceId = UUID.randomUUID().toString().replace("-", "");
Page copy = null;
// create a suffixed deep copy
for (Page p : petriNet.allPages()) {
if (p.getServiceName() != null && p.getServiceName().equals(key)) {
Page copy = p.treeCopy();
copy = p.treeCopy();
ServiceInstanceUtil.updateInstanceIds(copy, "-INSTANCE-" + instanceId);
copy.setId(p.getId() + "-INSTANCE-" + instanceId);
copy.getName().setText(copy.getId());
petriNet.addPage(copy);
petriNet.flushTreeCache();
petriNet.flushCollectionCache();
try {
marking.initializePageBalloonMarking(copy, true);
callbackStorage.initializePageCallbackStorage(copy, petriNet, true);
} catch (IOException | ParserConfigurationException | SAXException e) {
e.printStackTrace();
}
break;
}
}
......@@ -344,6 +352,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
break;
}
}
try {
marking.deinitializePage(copy, callbackStorage);
} catch (IOException | SAXException | ParserConfigurationException e) {
e.printStackTrace();
}
ServiceInstanceUtil.removeServiceServerInstance(petriNet, key + "-INSTANCE-" + instanceId);
});
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment