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

fixed fatJar signature, simplified loop usage

parent 4c4edcb7
No related branches found
No related tags found
No related merge requests found
...@@ -134,19 +134,8 @@ dependencies { ...@@ -134,19 +134,8 @@ dependencies {
jar { jar {
manifest { manifest {
// attributes "Main-Class": "de.tudresden.inf.st.pnml.engine.Main" attributes "Main-Class": "de.tudresden.inf.st.pnml.engine.Main"
} }
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveBaseName = 'pnml-engine'
} }
task fatJar(type: Jar) { task fatJar(type: Jar) {
...@@ -159,7 +148,13 @@ task fatJar(type: Jar) { ...@@ -159,7 +148,13 @@ task fatJar(type: Jar) {
configurations.runtimeClasspath.collect {it.isDirectory() ? it : zipTree(it) } configurations.runtimeClasspath.collect {it.isDirectory() ? it : zipTree(it) }
} }
manifest.attributes "Main-Class": "${mainClassName}" manifest.attributes "Main-Class": "de.tudresden.inf.st.sample.Main"
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveBaseName = 'pnml-relast-engine'
} }
// Generated files // Generated files
......
aspect BalloonMarking { aspect BalloonMarking {
inh BalloonMarking OutputSignalPlace.balloonMarking();
eq PetriNetDoc.getChild().balloonMarking() = null;
eq BalloonMarking.getPetriNet().balloonMarking() = this;
eq BalloonCallbackStorage.getPetriNet().marking() = null; eq BalloonCallbackStorage.getPetriNet().marking() = null;
eq BalloonMarking.getPetriNet().marking() = null; eq BalloonMarking.getPetriNet().marking() = null;
// updates automatically based on dependencies to the corresponding place
syn String OutputSignalBinding.outputSignalValue(){
OutputSignalPlace osp = this.containingPlace().asOutputSignalPlace();
BalloonMarking marking = osp.balloonMarking();
BalloonMarkedPlace markedPlace = marking.resolveBalloonPlaceById(this.getPlaceID());
JastAddList<EqualityOutputMapping> eomList = this.getEqualityOMListNoTransform();
JastAddList<ThresholdOutputMapping> tomList = this.getThresholdOMListNoTransform();
JastAddList<RangeOutputMapping> romList = this.getRangeOMListNoTransform();
// eom
int result = -1;
for (EqualityOutputMapping eom : eomList) {
if ((eom.getValue() == markedPlace.getNumBalloonMarking()) && result == -1) {
result = eom.getResult();
break;
}
}
// tom
// if (result > -1) {
for (ThresholdOutputMapping tom : tomList) {
if (tom.getValue() <= markedPlace.getNumBalloonMarking()) {
result = tom.getResult();
break;
}
}
// }
// rom
// if (result > -1) {
for (RangeOutputMapping rom : romList) {
if ((rom.getLowerBound() <= markedPlace.getNumBalloonMarking()) && (rom.getUpperBound() >= markedPlace.getNumBalloonMarking())) {
result = rom.getResult();
break;
}
}
// }
// 0 (disabled Signal) is default
if (result == -1) {
result = 0;
}
String output = String.valueOf(result) + "-" + this.getOutputSignalID();
return output;
}
public BalloonMarking PetriNet.initializeBalloonMarking() throws IOException, SAXException, ParserConfigurationException { public BalloonMarking PetriNet.initializeBalloonMarking() throws IOException, SAXException, ParserConfigurationException {
BalloonMarking marking = new BalloonMarking(); BalloonMarking marking = new BalloonMarking();
......
...@@ -5,13 +5,15 @@ import de.tudresden.inf.st.pnml.jastadd.model.BalloonTransition; ...@@ -5,13 +5,15 @@ import de.tudresden.inf.st.pnml.jastadd.model.BalloonTransition;
import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; import de.tudresden.inf.st.pnml.jastadd.model.PetriNet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class TransitionCallbackService { public class TransitionCallbackService {
public static TransitionCallbackService INSTANCE = null; public static TransitionCallbackService INSTANCE = null;
private BalloonCallbackStorage balloonCallbackStorage = null; private Map<String, BalloonCallbackStorage> balloonCallbackStorages = new HashMap<>();
private TransitionCallbackService() {} private TransitionCallbackService() {}
...@@ -23,17 +25,16 @@ public class TransitionCallbackService { ...@@ -23,17 +25,16 @@ public class TransitionCallbackService {
return INSTANCE; return INSTANCE;
} }
public void init(BalloonCallbackStorage balloonCallbackStorage) { public void init(String petriNetId, BalloonCallbackStorage balloonCallbackStorage) {
this.balloonCallbackStorage = balloonCallbackStorage; balloonCallbackStorages.put(petriNetId, balloonCallbackStorage);
} }
public void registerCallback(PetriNet petriNet, String transitionId, TransitionCallback transitionCallback){ public void registerCallback(PetriNet petriNet, String transitionId, TransitionCallback transitionCallback){
if(balloonCallbackStorage == null){ if(balloonCallbackStorages.get(petriNet.getId()) == null){
return; return;
} }
BalloonTransition balloonTransition = balloonCallbackStorage.resolveBalloonTransition(petriNet.getTransitionById(transitionId));
List<TransitionCallback> transitionCallbacks = new ArrayList<>(); List<TransitionCallback> transitionCallbacks = new ArrayList<>();
transitionCallbacks.add(transitionCallback); transitionCallbacks.add(transitionCallback);
registerCallback(petriNet, transitionId, transitionCallbacks); registerCallback(petriNet, transitionId, transitionCallbacks);
...@@ -42,11 +43,11 @@ public class TransitionCallbackService { ...@@ -42,11 +43,11 @@ public class TransitionCallbackService {
public void registerCallback(PetriNet petriNet, String transitionId, List<TransitionCallback> transitionCallbacks){ public void registerCallback(PetriNet petriNet, String transitionId, List<TransitionCallback> transitionCallbacks){
if(balloonCallbackStorage == null){ if(balloonCallbackStorages.get(petriNet.getId()) == null){
return; return;
} }
BalloonTransition balloonTransition = balloonCallbackStorage.resolveBalloonTransition(petriNet.getTransitionById(transitionId)); BalloonTransition balloonTransition = balloonCallbackStorages.get(petriNet.getId()).resolveBalloonTransition(petriNet.getTransitionById(transitionId));
balloonTransition.setBalloonCallbacks(transitionCallbacks); balloonTransition.setBalloonCallbacks(transitionCallbacks);
} }
......
...@@ -14,4 +14,11 @@ public class DiNeRosDefaultNode extends DiNeRosNode{ ...@@ -14,4 +14,11 @@ public class DiNeRosDefaultNode extends DiNeRosNode{
public DiNeRosDefaultNode(String nodeName, PetriNet petriNet, BalloonMarking marking, BalloonCallbackStorage callbackStorage) { public DiNeRosDefaultNode(String nodeName, PetriNet petriNet, BalloonMarking marking, BalloonCallbackStorage callbackStorage) {
super(nodeName, petriNet, marking, callbackStorage); super(nodeName, petriNet, marking, callbackStorage);
} }
@Override
protected void nodeLoop() {
System.out.println("No node loop implemented ..");
}
} }
...@@ -33,12 +33,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -33,12 +33,13 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
public final java.lang.String nodeName; public final java.lang.String nodeName;
public final PetriNet petriNet; public final PetriNet petriNet;
protected BalloonMarking marking; protected BalloonMarking marking;
private BalloonCallbackStorage callbackStorage; protected BalloonCallbackStorage callbackStorage;
private final Map<java.lang.String, DiNeRosSubscriber> dinerosSubscribers = new HashMap<>(); private final Map<java.lang.String, DiNeRosSubscriber> dinerosSubscribers = new HashMap<>();
private final Map<java.lang.String, DiNeRosServer> dinerosServiceServers = new HashMap<>(); private final Map<java.lang.String, DiNeRosServer> dinerosServiceServers = new HashMap<>();
private final Map<InputSignalTransition, Publisher<std_msgs.String>> dinerosPublishers = new HashMap<>(); private final Map<InputSignalTransition, Publisher<std_msgs.String>> dinerosPublishers = new HashMap<>();
private final Map<InputSignalTransition, ServiceClient<StringServiceRequest, StringServiceResponse>> dinerosServiceClients = new HashMap<>(); private final Map<InputSignalTransition, ServiceClient<StringServiceRequest, StringServiceResponse>> dinerosServiceClients = new HashMap<>();
protected ConnectedNode connectedNode; protected ConnectedNode connectedNode;
private boolean stopNode = false;
public DiNeRosNode(java.lang.String nodeName, PetriNet petriNet) { public DiNeRosNode(java.lang.String nodeName, PetriNet petriNet) {
this.nodeName = nodeName; this.nodeName = nodeName;
...@@ -58,49 +59,30 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -58,49 +59,30 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
this.callbackStorage = callbackStorage; this.callbackStorage = callbackStorage;
} }
protected void nodeLoop() { private final void internalNodeLoop() {
this.connectedNode.executeCancellableLoop(new CancellableLoop() { this.connectedNode.executeCancellableLoop(new CancellableLoop() {
@Override @Override
protected void loop() throws InterruptedException { protected void loop() {
if(!stopNode) {
System.out.println("No main loop specified for node " + nodeName + " Executing default..."); nodeLoop();
Thread.sleep(1000);
} }
});
} }
});
@Override
public GraphName getDefaultNodeName() {
return GraphName.of(nodeName);
} }
/* @Override protected abstract void nodeLoop();
public void onStart(ConnectedNode connectedNode) {
Subscriber<std_msgs.String> subscriber = connectedNode.newSubscriber("chatter", std_msgs.String._TYPE); protected final void stop(){
subscriber.addMessageListener(new MessageListener<String>() { stopNode = true;
@Override this.connectedNode.shutdown();
public void onNewMessage(std_msgs.String message) {
System.out.println("I heard: \"" + message.getData() + "\"");
} }
});
connectedNode.newServiceServer("sampleService", StringService._TYPE, @Override
(ServiceResponseBuilder<StringServiceRequest, StringServiceResponse>) (request, response) -> { public GraphName getDefaultNodeName() {
return GraphName.of(nodeName);
System.out.println("Service Input: \"" + request.getInput() + "\"");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
} }
System.out.println("Finished sleep.");
response.setOutput("...");
});
}*/
@Override @Override
public void onStart(final ConnectedNode connectedNode) { public void onStart(final ConnectedNode connectedNode) {
...@@ -114,8 +96,8 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -114,8 +96,8 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
if (t.asInputSignalTransition().getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT) if (t.asInputSignalTransition().getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC_LIMITED_OUT)
|| t.asInputSignalTransition().getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT)) { || t.asInputSignalTransition().getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_OUT)) {
final Publisher<std_msgs.String> publisher = connectedNode.newPublisher(t.asInputSignalTransition(). final Publisher<String> publisher = connectedNode.newPublisher(t.asInputSignalTransition().
getStaticTransitionInformation().asTopicTransitionInformation().getTopic(), std_msgs.String._TYPE); getStaticTransitionInformation().asTopicTransitionInformation().getTopic(), String._TYPE);
dinerosPublishers.put(t.asInputSignalTransition(), publisher); dinerosPublishers.put(t.asInputSignalTransition(), publisher);
...@@ -128,7 +110,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -128,7 +110,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
|| t.asInputSignalTransition().getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN)) { || t.asInputSignalTransition().getStaticTransitionInformation().getType().equals(PnmlConstants.TRANSITION_TYPE_TOPIC_UNLIMITED_IN)) {
Subscriber<String> subscriber = connectedNode.newSubscriber(t.asInputSignalTransition() Subscriber<String> subscriber = connectedNode.newSubscriber(t.asInputSignalTransition()
.getStaticTransitionInformation().asTopicTransitionInformation().getTopic(), std_msgs.String._TYPE); .getStaticTransitionInformation().asTopicTransitionInformation().getTopic(), String._TYPE);
subscriber.addMessageListener(message -> { subscriber.addMessageListener(message -> {
...@@ -258,7 +240,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -258,7 +240,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
} }
} }
this.nodeLoop(); this.internalNodeLoop();
} }
public List<Transition> getSubnetTransitionsByIds(List<java.lang.String> ids, PetriNet petriNet) { public List<Transition> getSubnetTransitionsByIds(List<java.lang.String> ids, PetriNet petriNet) {
......
...@@ -27,7 +27,7 @@ public class DiNeRosNodeUtil { ...@@ -27,7 +27,7 @@ public class DiNeRosNodeUtil {
return hasFired; return hasFired;
} }
private static boolean hasEnabledTransition(PetriNet petriNet, String subnet, BalloonMarking balloonMarking){ public static boolean hasEnabledTransition(PetriNet petriNet, String subnet, BalloonMarking balloonMarking){
for(Transition transition : petriNet.allTransitions()) { for(Transition transition : petriNet.allTransitions()) {
if (transition.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet)) { if (transition.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(subnet)) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment