use of de.rwth.idsg.steve.ocpp.ws.data.OcppJsonResult in project steve by RWTH-i5-IDSG.
the class AbstractCallHandler method accept.
@Override
public void accept(CommunicationContext context) {
OcppJsonCall call = (OcppJsonCall) context.getIncomingMessage();
String messageId = call.getMessageId();
ResponseType response;
try {
response = dispatch(call.getPayload(), context.getChargeBoxId());
} catch (Exception e) {
log.error("Exception occurred", e);
context.setOutgoingMessage(ErrorFactory.payloadProcessingError(messageId, e.getMessage()));
return;
}
OcppJsonResult result = new OcppJsonResult();
result.setPayload(response);
result.setMessageId(messageId);
context.setOutgoingMessage(result);
}
use of de.rwth.idsg.steve.ocpp.ws.data.OcppJsonResult in project steve by RWTH-i5-IDSG.
the class Deserializer method handleResult.
/**
* Do NOT catch and handle exceptions for incoming RESPONSEs. Let the processing fail.
* There is no mechanism in OCPP to report back such erroneous messages.
*/
private void handleResult(CommunicationContext context, String messageId, JsonParser parser) {
FutureResponseContext responseContext = futureResponseContextStore.get(context.getSession(), messageId);
if (responseContext == null) {
throw new SteveException("A result message was received as response to a not-sent call. The message was: %s", context.getIncomingString());
}
ResponseType res;
try {
parser.nextToken();
JsonNode responsePayload = parser.readValueAsTree();
res = mapper.treeToValue(responsePayload, responseContext.getResponseClass());
} catch (IOException e) {
throw new SteveException("Deserialization of incoming response payload failed", e);
}
OcppJsonResult result = new OcppJsonResult();
result.setMessageId(messageId);
result.setPayload(res);
context.setIncomingMessage(result);
context.createResultHandler(responseContext.getTask());
}
use of de.rwth.idsg.steve.ocpp.ws.data.OcppJsonResult in project steve by RWTH-i5-IDSG.
the class IncomingPipeline method accept.
@Override
public void accept(CommunicationContext context) {
deserializer.accept(context);
// When the incoming could not be deserialized
if (context.isSetOutgoingError()) {
serializer.accept(context);
sender.accept(context);
return;
}
OcppJsonMessage msg = context.getIncomingMessage();
if (msg instanceof OcppJsonCall) {
handler.accept(context);
serializer.accept(context);
sender.accept(context);
} else if (msg instanceof OcppJsonResult) {
context.getResultHandler().accept((OcppJsonResult) msg);
} else if (msg instanceof OcppJsonError) {
context.getErrorHandler().accept((OcppJsonError) msg);
}
}
use of de.rwth.idsg.steve.ocpp.ws.data.OcppJsonResult in project steve by RWTH-i5-IDSG.
the class OcppJsonChargePoint method onMessage.
@OnWebSocketMessage
public void onMessage(Session session, String msg) {
try {
OcppJsonResponse response = deserializer.extractResponse(msg);
ResponseContext ctx = responseContextMap.remove(response.getMessageId());
if (response instanceof OcppJsonResult) {
ctx.responseHandler.accept(((OcppJsonResult) response).getPayload());
} else if (response instanceof OcppJsonError) {
ctx.errorHandler.accept((OcppJsonError) response);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (receivedResponsesSignal != null) {
receivedResponsesSignal.countDown();
}
}
}
Aggregations