Skip to content

Commit

Permalink
electrum api updated
Browse files Browse the repository at this point in the history
  • Loading branch information
nmacedo committed Jun 12, 2019
1 parent 3d240e0 commit 85c85a5
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 25 deletions.
2 changes: 1 addition & 1 deletion api/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ RUN mvn clean install

EXPOSE 8080
# preferIPv4Stack is needed to keep wildfly-swarm happy
ENTRYPOINT ["java", "-Djava.net.preferIPv4Stack=true", "-jar", "/home/target/alloy4fun-api-swarm.jar"]
ENTRYPOINT ["java", "-Djava.net.preferIPv4Stack=true", "-jar", "/home/target/alloy4fun-api-swarm.jar"]
63 changes: 39 additions & 24 deletions api/src/main/java/AlloyGetInstances.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ public void warning (ErrorWarning msg) {
RestApplication.add(req.sessionId,ans,command);

res = batchAdd(req,warnings);

System.out.println(res);

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(new Runnable() {
Expand Down Expand Up @@ -164,42 +166,55 @@ public JsonObject answerToJson(String sessionId, A4Solution answer, List<ErrorWa
instanceJSON.add("cnt", cnt);

if (answer.satisfiable()) {
try {
Instance sol = answer.debugExtractKInstance();
instanceJSON.add("loop", answer.getLoopState());

JsonArrayBuilder integersArrayJSON = Json.createArrayBuilder();
for (IndexedEntry<TupleSet> e : sol.intTuples()) {
Object atom = e.value().iterator().next().atom(0);
integersArrayJSON.add(atom.toString());
}
instanceJSON.add("integers", integersArrayJSON);
JsonArrayBuilder traceJSON = Json.createArrayBuilder();

JsonArrayBuilder atomsJSON = Json.createArrayBuilder();
JsonArrayBuilder fieldsJSON = Json.createArrayBuilder();

for (Sig signature : answer.getAllReachableSigs()) {
atomsJSON.add(sigToJSON(answer, signature));
try {
Instance sol = answer.debugExtractKInstance();

for (Field field : signature.getFields()) {
fieldsJSON.add(fieldToJSON(answer, signature, field));
for (int i = 0; i < answer.getTraceLength(); i++) {
JsonObjectBuilder stateJSON = Json.createObjectBuilder();

JsonArrayBuilder integersArrayJSON = Json.createArrayBuilder();
for (IndexedEntry<TupleSet> e : sol.intTuples()) {
Object atom = e.value().iterator().next().atom(0);
integersArrayJSON.add(atom.toString());
}
stateJSON.add("integers", integersArrayJSON);

JsonArrayBuilder atomsJSON = Json.createArrayBuilder();
JsonArrayBuilder fieldsJSON = Json.createArrayBuilder();

for (Sig signature : answer.getAllReachableSigs()) {
atomsJSON.add(sigToJSON(answer, signature, i));

for (Field field : signature.getFields()) {
fieldsJSON.add(fieldToJSON(answer, signature, field, i));
}
}
stateJSON.add("atoms", atomsJSON);
stateJSON.add("fields", fieldsJSON);
stateJSON.add("skolem", skolemsToJSON(answer, i));

traceJSON.add(stateJSON);
}
instanceJSON.add("atoms", atomsJSON);
instanceJSON.add("fields", fieldsJSON);
instanceJSON.add("skolem", skolemsToJSON(answer));
} catch (Err er) {
JsonObjectBuilder errorJSON = Json.createObjectBuilder();
errorJSON.add("err", String.format("Evaluator error occurred: %s", er));
return errorJSON.build();
}

instanceJSON.add("instance", traceJSON);
}

return instanceJSON.build();
}

JsonObjectBuilder skolemsToJSON(A4Solution answer) throws Err {
JsonObjectBuilder skolemsToJSON(A4Solution answer, int state) throws Err {
JsonObjectBuilder skolemJSON = Json.createObjectBuilder();
for (ExprVar var : answer.getAllSkolems()) {
A4TupleSet tupleSet = (A4TupleSet) answer.eval(var);
A4TupleSet tupleSet = (A4TupleSet) answer.eval(var,state);
JsonArrayBuilder varTuplesJSON = Json.createArrayBuilder();
for (A4Tuple tuple : tupleSet) {
varTuplesJSON.add(tupleToJSONArray(tuple));
Expand All @@ -216,12 +231,12 @@ JsonArrayBuilder tupleToJSONArray(A4Tuple tuple) {
return tupleJSON;
}

JsonObjectBuilder fieldToJSON(A4Solution answer, Sig signature, Field field) {
JsonObjectBuilder fieldToJSON(A4Solution answer, Sig signature, Field field, int state) {
JsonObjectBuilder fieldJSON = Json.createObjectBuilder();
fieldJSON.add("type", signature.toString());
fieldJSON.add("label", field.label);

Iterator<A4Tuple> tupleIt = answer.eval(field).iterator();
Iterator<A4Tuple> tupleIt = answer.eval(field,state).iterator();
if (tupleIt.hasNext()) {
A4Tuple tuple = tupleIt.next();
fieldJSON.add("arity", tuple.arity());
Expand All @@ -238,7 +253,7 @@ JsonObjectBuilder fieldToJSON(A4Solution answer, Sig signature, Field field) {
return fieldJSON;
}

JsonObjectBuilder sigToJSON(A4Solution answer, Sig signature) {
JsonObjectBuilder sigToJSON(A4Solution answer, Sig signature, int state) {
JsonObjectBuilder atomJSON = Json.createObjectBuilder();
atomJSON.add("type", signature.toString());
atomJSON.add("isSubsetSig", signature instanceof SubsetSig);
Expand All @@ -264,7 +279,7 @@ JsonObjectBuilder sigToJSON(A4Solution answer, Sig signature) {
atomJSON.add("isPrimSig", signature instanceof PrimSig);

JsonArrayBuilder instancesJSON = Json.createArrayBuilder();
for (A4Tuple tuple : answer.eval(signature)) {
for (A4Tuple tuple : answer.eval(signature,state)) {
instancesJSON.add(tuple.atom(0));
}
atomJSON.add("values", instancesJSON);
Expand Down

0 comments on commit 85c85a5

Please sign in to comment.