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

reworked service server algorithm

parent e6ff3b8a
No related branches found
No related tags found
No related merge requests found
...@@ -26,7 +26,7 @@ aspect BalloonExecution{ ...@@ -26,7 +26,7 @@ aspect BalloonExecution{
public Optional<BalloonMarking> BalloonMarking.fireTransition(Transition transition, BalloonCallbackStorage callbackStorage, public Optional<BalloonMarking> BalloonMarking.fireTransition(Transition transition, BalloonCallbackStorage callbackStorage,
InputSignalConnector inputSignalConnector,de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode node, boolean requireFlush) { InputSignalConnector inputSignalConnector,de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode node, boolean requireFlush) {
if(!transition.asDinerosTransition().getStaticTransitionInformation().isSignalTransitionInformation()) return Optional.empty(); //if(!transition.asDinerosTransition().getStaticTransitionInformation().isSignalTransitionInformation()) return Optional.empty();
// synchronize marking modification to prevent concurrent modifications // synchronize marking modification to prevent concurrent modifications
synchronized(this){ synchronized(this){
......
...@@ -40,6 +40,8 @@ aspect BalloonMarking { ...@@ -40,6 +40,8 @@ aspect BalloonMarking {
// TODO: nesting // TODO: nesting
for (PnObject po : page.getObjects()) { for (PnObject po : page.getObjects()) {
System.out.print("Init Balloon Marking: " + po.getId());
if (po.isPlaceObject()) { if (po.isPlaceObject()) {
Place place = po.asDinerosPlace(); Place place = po.asDinerosPlace();
...@@ -122,7 +124,29 @@ aspect BalloonMarking { ...@@ -122,7 +124,29 @@ aspect BalloonMarking {
syn boolean BalloonMarking.isBalloonEnabled(Transition t) { syn boolean BalloonMarking.isBalloonEnabled(Transition t) {
/*int inArcCount = 0;
int filledInPlaceCount = 0;
for (Arc a : this.getPetriNet().allArcs()) {
if (a.getTarget().getId().equals(t.getId())) {
inArcCount++;
for (BalloonMarkedPlace bmp : this.getPlaceList()) {
if (bmp.getPlace().getId().equals(a.getSource().getId())) {
if (bmp.getNumBalloonMarking() > 0) {
filledInPlaceCount++;
}
}
}
}
}
if (inArcCount == filledInPlaceCount) {
return true;
}*/
for (Place place : t.incomingPlaces()) { for (Place place : t.incomingPlaces()) {
System.out.println(">>>> Incomming: " + place.getId() + " -- " + marking(place).size());
if (marking(place).size() == 0) return false; if (marking(place).size() == 0) return false;
} }
return true; return true;
......
...@@ -12,7 +12,8 @@ public class DiNeRosEvent { ...@@ -12,7 +12,8 @@ public class DiNeRosEvent {
public DiNeRosEvent(String eventType, String payload) { public DiNeRosEvent(String eventType, String payload) {
if(eventType.equals(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_SIGNAL_CHANGE) || if(eventType.equals(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_SIGNAL_CHANGE) ||
eventType.equals(DiNeRosEventTypes.NOTIFICATION_WAIT_ENDED) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_WAIT_ENDED) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED) ||
eventType.equals(DiNeRosEventTypes.NOTIFICATION_SERVICE_REQ_CLIENT) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_TOPIC_PUB)) { eventType.equals(DiNeRosEventTypes.NOTIFICATION_SERVICE_REQ_CLIENT) || eventType.equals(DiNeRosEventTypes.NOTIFICATION_TOPIC_PUB) ||
eventType.equals(DiNeRosEventTypes.NOTIFICATION_SERVICE_RES_SERVER)) {
this.eventType = eventType; this.eventType = eventType;
} else { } else {
throw new RuntimeException("Invalid event type used!"); throw new RuntimeException("Invalid event type used!");
......
...@@ -118,7 +118,6 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -118,7 +118,6 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
onServiceResponseAvailableOnServerSide(event.payload); onServiceResponseAvailableOnServerSide(event.payload);
break; break;
} }
} }
private void onTopicPublisherAvailable(java.lang.String placeId) { private void onTopicPublisherAvailable(java.lang.String placeId) {
...@@ -138,12 +137,20 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -138,12 +137,20 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
private void onServiceResponseAvailableOnServerSide(java.lang.String placeId) { private void onServiceResponseAvailableOnServerSide(java.lang.String placeId) {
System.out.println("Active instances:");
for(java.lang.String s : activeServerInstances){
System.out.println("i: " + s);
}
for (java.lang.String entry : responsePlaces) { for (java.lang.String entry : responsePlaces) {
if (entry.equals(placeId)) { if (entry.equals(placeId)) {
System.out.println("Removing from active instance list: " + entry);
activeServerInstances.remove(entry); activeServerInstances.remove(entry);
return; return;
} }
} }
System.err.println("[DiNeROS-Node] [" + nodeName + "] Tried to remove non active instance: " + placeId);
} }
private void onServiceRequestAvailableOnClientSide(java.lang.String placeId) { private void onServiceRequestAvailableOnClientSide(java.lang.String placeId) {
...@@ -192,10 +199,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -192,10 +199,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
@NotNull @NotNull
protected List<Transition> getSignalFilteredTransitions() { protected List<Transition> getSignalFilteredTransitions() {
List<Transition> signalFilteredTransitions = new ArrayList<>();
List<Transition> signalFilteredTransitions = new ArrayList<>();
ClauseValuesDefinition clauseValuesDefinition = new ClauseValuesDefinition(); ClauseValuesDefinition clauseValuesDefinition = new ClauseValuesDefinition();
petriNet.flushAttrAndCollectionCache();
petriNet.flushTreeCache();
for (Transition transition : marking.enabledBalloonTransitions()) { for (Transition transition : marking.enabledBalloonTransitions()) {
if (transition.asDinerosTransition().getStaticTransitionInformation() if (transition.asDinerosTransition().getStaticTransitionInformation()
.asSignalTransitionInformation().getClause() != null) { .asSignalTransitionInformation().getClause() != null) {
...@@ -217,6 +227,11 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -217,6 +227,11 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
} }
} }
} }
//for(Transition t : signalFilteredTransitions){
// System.out.println("Enabled: " + t.getId());
// }
return signalFilteredTransitions; return signalFilteredTransitions;
} }
...@@ -287,12 +302,11 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -287,12 +302,11 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
for (int i = 0; i < limit; i++) { for (int i = 0; i < limit; i++) {
System.out.println("[" + nodeName + "] Copying server page " + key + " (" + i + ")."); System.out.println("[" + nodeName + "] Copying server page " + key + " (" + i + ").");
Page copy = p.treeCopy(); Page copy = ServiceInstanceUtil.treeCopyWithoutArcs(p);
ServiceInstanceUtil.updateInstanceIds(copy, "-INSTANCE-" + i); ServiceInstanceUtil.updateInstanceIds(copy, "-INSTANCE-" + i);
copy.setId(p.getId() + "-INSTANCE-" + i); copy.setId(p.getId() + "-INSTANCE-" + i);
copy.getName().setText(copy.getId()); copy.getName().setText(copy.getId());
ServiceInstanceUtil.updateArcs(copy, "-INSTANCE-" + i); ServiceInstanceUtil.reintegrateArcs(p, copy, "-INSTANCE-" + i);
petriNet.addPage(copy); petriNet.addPage(copy);
try { try {
...@@ -309,6 +323,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -309,6 +323,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
petriNet.flushTreeCache(); petriNet.flushTreeCache();
petriNet.flushAttrAndCollectionCache(); petriNet.flushAttrAndCollectionCache();
marking.flushTreeCache();
marking.flushAttrAndCollectionCache();
callbackStorage.flushTreeCache();
callbackStorage.flushAttrAndCollectionCache();
HashMap<java.lang.String, ArrayList<java.lang.String>> channelServerResElementMap HashMap<java.lang.String, ArrayList<java.lang.String>> channelServerResElementMap
= petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_RES_KEY); = petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_RES_KEY);
...@@ -318,39 +338,59 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -318,39 +338,59 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
} }
} }
/* for(Transition t : petriNet.allTransitions()){
System.out.println("Checking Transition: " + t.getId());
for(Arc a : petriNet.allArcs()){
if(a.getTarget().getId().equals(t.getId())){
System.out.println(">> Match: " + a.getSource().getId());
}
}
for(Place p1 : t.incomingPlaces()){
System.out.println(">> Checking incoming place: " + p1.getId());
}
}*/
connectedNode.newServiceServer(key, StringService._TYPE, connectedNode.newServiceServer(key, StringService._TYPE,
(ServiceResponseBuilder<StringServiceRequest, StringServiceResponse>) (request, response) -> { (ServiceResponseBuilder<StringServiceRequest, StringServiceResponse>) (request, response) -> {
System.out.println("[" + nodeName + "] Assigning instance to request on service " + key); System.out.println("[" + nodeName + "] Assigning instance to request on service " + key);
java.lang.String selectedInstanceId = null; java.lang.String selectedInstanceInId = null;
while(selectedInstanceId == null) { java.lang.String selectedInstanceOutId = null;
while(selectedInstanceInId == null) {
synchronized (this) { synchronized (this) {
for (int i = 0; i < limit; i++) { for (int i = 0; i < limit; i++) {
java.lang.String iterInstanceId = java.lang.String iterInInstanceId =
channelServerReqElementMap.get(key).get(0) + "-INSTANCE-" + i; channelServerReqElementMap.get(key).get(0) + "-INSTANCE-" + i;
if (!activeServerInstances.contains(iterInstanceId)) { java.lang.String iterOutInstanceId =
selectedInstanceId = iterInstanceId; channelServerResElementMap.get(key).get(0) + "-INSTANCE-" + i;
activeServerInstances.add(iterInstanceId); if (!activeServerInstances.contains(iterOutInstanceId)) {
selectedInstanceInId = iterInInstanceId;
selectedInstanceOutId = iterOutInstanceId;
activeServerInstances.add(iterOutInstanceId);
break; break;
} }
} }
} }
} }
System.out.println("[" + nodeName + "] Inserting request in " + selectedInstanceId); System.out.println("[" + nodeName + "] Inserting request in " + selectedInstanceInId);
Place instanceEntryPlace = petriNet.getPlaceById(selectedInstanceId); Place instanceEntryPlace = petriNet.getPlaceById(selectedInstanceInId);
marking.resolveBalloonPlace(instanceEntryPlace).addBalloonMarking( marking.resolveBalloonPlace(instanceEntryPlace).addBalloonMarking(
new BalloonToken(request.getInput(), System.currentTimeMillis())); new BalloonToken(request.getInput(), System.currentTimeMillis()));
this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE)); this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE));
while(activeServerInstances.contains(selectedInstanceId)){} while(activeServerInstances.contains(selectedInstanceOutId)){}
System.out.println("[" + nodeName + "] Instance " + selectedInstanceId + " is ready to return"); System.out.println("[" + nodeName + "] Instance " + selectedInstanceOutId + " is ready to return");
for(java.lang.String entry : responsePlaces){ for(java.lang.String entry : responsePlaces){
if(entry.equals(selectedInstanceId)){ if(entry.equals(selectedInstanceOutId)){
// set response value based on output token // set response value based on output token
response.setOutput(marking.resolveBalloonPlace(petriNet. response.setOutput(marking.resolveBalloonPlace(petriNet.
getPlaceById(entry)).getBalloonMarking(0).getValue()); getPlaceById(entry)).getBalloonMarking(0).getValue());
marking.resolveBalloonPlace(petriNet.
getPlaceById(entry)).getBalloonMarking(0).removeSelf();
break; break;
} }
} }
...@@ -358,79 +398,6 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -358,79 +398,6 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
break; break;
} }
} }
/* connectedNode.newServiceServer(key, StringService._TYPE,
(ServiceResponseBuilder<StringServiceRequest, StringServiceResponse>) (request, response) -> {
java.lang.String instanceId = UUID.randomUUID().toString().replace("-", "");
Page copy = null;
System.out.println("[" + nodeName + "] Copying server page.");
// create a suffixed deep copy
for (Page p : petriNet.allPages()) {
if (p.getServiceName() != null && p.getServiceName().equals(key)) {
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 {
System.out.println("[" + nodeName + "] Initializing BalloonMarking for " + copy.getId());
marking.initializePageBalloonMarking(copy, false);
System.out.println("[" + nodeName + "] Initializing CallbackStorage for " + copy.getId());
callbackStorage.initializePageCallbackStorage(copy, petriNet, false);
petriNet.flushCollectionCache();
System.out.println("[" + nodeName + "] Finished Initialization CallbackStorage for " + copy.getId());
} catch (IOException | ParserConfigurationException | SAXException e) {
e.printStackTrace();
}
break;
}
}
// HashMap<java.lang.String, ArrayList<java.lang.String>> channelServerResElementMap
// = petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_RES_KEY);
HashMap<java.lang.String, ArrayList<java.lang.String>> channelServerResElementMap
= petriNet.getChannelElemensByKey(PnmlConstants.CHANNEL_PLACE_TYPE_SERVER_REQ_KEY);
for (java.lang.String resKey : channelServerResElementMap.keySet()) {
if (resKey.equals(key)) {
responsePlaceToInstance.put(channelServerResElementMap.
get(resKey).get(0) + "-INSTANCE-" + instanceId, instanceId);
activeServerInstances.add(instanceId);
Place instanceEntryPlace = petriNet.getPlaceById(channelServerResElementMap.
get(resKey).get(0) + "-INSTANCE-" + instanceId);
marking.resolveBalloonPlace(instanceEntryPlace).addBalloonMarking(
new BalloonToken(request.getInput(), System.currentTimeMillis()));
this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE));
break;
}
}
while(activeServerInstances.contains(instanceId)){}
for(Map.Entry<java.lang.String, java.lang.String> entry : responsePlaceToInstance.entrySet()){
if(entry.getValue().equals(instanceId)){
// set response value based on output token
response.setOutput(marking.resolveBalloonPlace(petriNet.
getPlaceById(entry.getKey())).getBalloonMarking(0).getValue());
responsePlaceToInstance.remove(entry.getKey());
break;
}
}
try {
assert copy != null;
marking.deinitializePage(copy, callbackStorage);
} catch (IOException | SAXException | ParserConfigurationException e) {
e.printStackTrace();
}
ServiceInstanceUtil.removeServiceServerInstance(petriNet, key + "-INSTANCE-" + instanceId);
});*/
} }
// init publishers // init publishers
......
...@@ -2,6 +2,8 @@ package de.tudresden.inf.st.pnml.engine.transform; ...@@ -2,6 +2,8 @@ package de.tudresden.inf.st.pnml.engine.transform;
import de.tudresden.inf.st.pnml.jastadd.model.*; import de.tudresden.inf.st.pnml.jastadd.model.*;
import java.util.*;
public class ServiceInstanceUtil { public class ServiceInstanceUtil {
public static void updateInstanceIds(Page page, String suffix) { public static void updateInstanceIds(Page page, String suffix) {
...@@ -23,21 +25,156 @@ public class ServiceInstanceUtil { ...@@ -23,21 +25,156 @@ public class ServiceInstanceUtil {
} }
} }
public static void updateArcs(Page page, String suffix){ public static void reintegrateArcs(Page original, Page copy, String suffix) {
Set<Arc> originalArcs = new HashSet<>();
getArcsInPage(original, originalArcs);
for (Arc a : originalArcs) {
Page originalArcPage = Objects.requireNonNull(getObjectInPage(original, a.getId()))._2;
Page arcPage = Objects.requireNonNull(getObjectInPage(copy, originalArcPage.getId() + suffix))._1.asPage();
Pair<PnObject, Page> source = getObjectInPage(copy, a.getSource().getId() + suffix);
Pair<PnObject, Page> target = getObjectInPage(copy, a.getTarget().getId() + suffix);
Arc copyArc = new Arc();
assert source != null;
copyArc.setSource(source._1.asNode());
assert target != null;
copyArc.setTarget(target._1.asNode());
copyArc.setId(a.getId() + suffix);
Name n = new Name();
n.setText(a.getName().getText() + suffix);
copyArc.setName(n);
arcPage.addObject(copyArc);
System.out.println(
"Created arc: " + copyArc.getId()
+ " from " + copyArc.getSource().getId()
+ " to " + copyArc.getTarget().getId()
+ " in page " + arcPage.getId());
}
}
private static Pair<PnObject, Page> getObjectInPage(Page page, String id) {
if (page.getId().equals(id)) {
return new Pair<>(page, page);
}
for (PnObject o : page.getObjects()) {
if (o.getId().equals(id)) {
return new Pair<>(o, page);
}
if (o.isPageNode()) {
getObjectInPage(o.asPage(), id);
}
}
return null;
}
private static void getArcsInPage(Page page, Set<Arc> arcs) {
for (PnObject o : page.getObjects()) {
if (o.isArcNode()) {
arcs.add(o.asArc());
}
if (o.isPageNode()) {
getArcsInPage(o.asPage(), arcs);
}
}
}
public static Page treeCopyWithoutArcs(Page currentPage) {
return treeCopyWithoutArcsInternal(currentPage, null);
}
private static Page treeCopyWithoutArcsInternal(Page currentPage, Page parent) {
Map<String, PnObject> rMap = new HashMap<>();
if (parent == null) {
parent = new Page();
parent.setId(currentPage.getId());
parent.setToolspecificList(currentPage.getToolspecificList().treeCopy());
parent.setName(currentPage.getName().treeCopy());
}
for (PnObject pnObject : currentPage.getObjects()) {
if (pnObject.isPageNode()) {
Page copyPage = new Page();
copyPage.setId(pnObject.asPage().getId());
copyPage.setToolspecificList(pnObject.asPage().getToolspecificList().treeCopy());
copyPage.setName(pnObject.getName().treeCopy());
parent.addObject(copyPage);
treeCopyWithoutArcsInternal(pnObject.asPage(), copyPage);
}
if (pnObject.isPlaceObject()) {
DinerosPlace copyP = new DinerosPlace();
copyP.setId(pnObject.getId());
copyP.setName(pnObject.getName().treeCopy());
copyP.setInitialMarking(pnObject.asDinerosPlace().getInitialMarking().treeCopy());
copyP.setToolspecificList(pnObject.getToolspecificList().treeCopy());
parent.addObject(copyP);
rMap.put(copyP.getId(), copyP);
}
if (pnObject.isTransitionObject()) {
DinerosTransition copyT = new DinerosTransition();
copyT.setId(pnObject.getId());
copyT.setName(pnObject.getName().treeCopy());
copyT.setToolspecificList(pnObject.getToolspecificList().treeCopy());
parent.addObject(copyT);
rMap.put(copyT.getId(), copyT);
}
}
for (PnObject pnObject : currentPage.getObjects()) {
if (pnObject.isTransitionObject() &&
pnObject.asDinerosTransition().isRefTransition()) {
RefTransition copyRt = new RefTransition();
copyRt.setId(pnObject.getId());
copyRt.setName(pnObject.getName().treeCopy());
copyRt.setRef(rMap.get(pnObject.asDinerosTransition().
asRefTransition().getRef().getId()).asDinerosTransition());
copyRt.setToolspecificList(pnObject.getToolspecificList().treeCopy());
parent.addObject(copyRt);
}
if (pnObject.isPlaceObject() &&
pnObject.asDinerosPlace().isRefPlace()) {
RefPlace copyRp = new RefPlace();
copyRp.setId(pnObject.getId());
copyRp.setName(pnObject.getName().treeCopy());
copyRp.setRef(rMap.get(pnObject.asDinerosPlace().
asRefPlace().getRef().getId()).asDinerosPlace());
copyRp.setToolspecificList(pnObject.getToolspecificList().treeCopy());
parent.addObject(copyRp);
}
}
return parent;
}
/*public static void updateArcs(Page page, String suffix){
for(PnObject pnObject : page.getObjects()){ for(PnObject pnObject : page.getObjects()){
if(pnObject.isArcNode()){ if(pnObject.isArcNode()){
for(PnObject pnObjectIn : page.getObjects()){ for(PnObject pnObjectIn : page.getObjects()){
if(pnObjectIn.isPlaceObject() && if((pnObjectIn.isPlaceObject() || pnObjectIn.isTransitionObject()) &&
pnObjectIn.asDinerosPlace().getId() pnObjectIn.getId()
.equals(pnObject.asArc().getSource().getId() + suffix)){ .equals(pnObject.asArc().getSource().getId() + suffix)){
pnObject.asArc().setSource(pnObjectIn.asNode()); pnObject.asArc().setSource(pnObjectIn.asNode());
System.out.println("Updating Arc " + pnObject.getId() + " -> new Source: " + pnObjectIn.getId());
} }
if(pnObjectIn.isPlaceObject() && if((pnObjectIn.isPlaceObject() || pnObjectIn.isTransitionObject()) &&
pnObjectIn.asDinerosPlace().getId() pnObjectIn.getId()
.equals(pnObject.asArc().getTarget().getId() + suffix)){ .equals(pnObject.asArc().getTarget().getId() + suffix)){
pnObject.asArc().setTarget(pnObjectIn.asNode()); pnObject.asArc().setTarget(pnObjectIn.asNode());
System.out.println("Updating Arc " + pnObject.getId() + " -> new Target: " + pnObjectIn.getId());
} }
} }
} }
...@@ -46,17 +183,45 @@ public class ServiceInstanceUtil { ...@@ -46,17 +183,45 @@ public class ServiceInstanceUtil {
updateArcs(pnObject.asPage(), suffix); updateArcs(pnObject.asPage(), suffix);
} }
} }
} }*/
public static void removeServiceServerInstance(PetriNet petriNet, String pageId){ /* public static void removeIllegalRefsToArcs(Page page, String suffix){
for(PnObject pnObject : page.getObjects()){
if(pnObject.isPlaceObject()){
for (int i = 0; i < pnObject.asDinerosPlace().getInArcs().size(); i++){
if(!pnObject.asDinerosPlace().getInArcs().get(i).getId().contains(suffix)){
System.out.println("Removing ref on " +
pnObject.asDinerosPlace().getInArcs().get(i).getId() + " on " + pnObject.getId());
pnObject.asDinerosPlace().getInArcs().get(i).removeSelf();
}
}
for (int i = 0; i < pnObject.asDinerosPlace().getOutArcs().size(); i++){
if(!pnObject.asDinerosPlace().getOutArcs().get(i).getId().contains(suffix)){
System.out.println("Removing ref on " +
pnObject.asDinerosPlace().getOutArcs().get(i).getId() + " on " + pnObject.getId());
pnObject.asDinerosPlace().getOutArcs().get(i).removeSelf();
}
}
}
for(Page page : petriNet.allPages()){ if(pnObject.isTransitionObject()){
if(page.getId().equals(pageId)) { for (int i = 0; i < pnObject.asDinerosTransition().getInArcs().size(); i++){
page.removeSelf(); if(!pnObject.asDinerosTransition().getInArcs().get(i).getId().contains(suffix)){
petriNet.flushTreeCache(); System.out.println("Removing ref on " +
petriNet.flushCollectionCache(); pnObject.asDinerosTransition().getInArcs().get(i).getId() + " on " + pnObject.getId());
pnObject.asDinerosTransition().getInArcs().get(i).removeSelf();
}
}
for (int i = 0; i < pnObject.asDinerosTransition().getOutArcList().size(); i++){
if(!pnObject.asDinerosTransition().getOutArcs().get(i).getId().contains(suffix)){
System.out.println("Removing ref on " +
pnObject.asDinerosTransition().getOutArcs().get(i).getId() + " on " + pnObject.getId());
pnObject.asDinerosTransition().getOutArcs().get(i).removeSelf();
}
} }
} }
} }
}*/
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment