@Override public void handleRequest(ChargingStationId chargingStationId, String callId, String payload, WebSocketWrapper webSocketWrapper) { Starttransaction request = gson.fromJson(payload, Starttransaction.class); AttributeMap<String, String> attributes = new AttributeMap<String, String>(). putIfValueNotNull(AttributeMapKeys.RESERVATION_ID, request.getReservationId() != null ? request.getReservationId().toString() : null); StartTransactionInfo startTransactionInfo = new StartTransactionInfo(new EvseId(request.getConnectorId()), request.getMeterStart(), request.getTimestamp(), new TextualToken(request.getIdTag()), attributes); FutureEventCallback futureEventCallback = new StartTransactionFutureEventCallback(callId, webSocketWrapper, chargingStationId, protocolIdentifier, startTransactionInfo, domainService, addOnIdentity); // futureEventCallback will handle authorize result and trigger a startTransaction command domainService.authorize(chargingStationId, request.getIdTag(), futureEventCallback, addOnIdentity); } }
@Override public StartTransactionResponse startTransaction(final StartTransactionRequest parameters, final String chargeBoxIdentity) { final ChargingStationId chargingStationId = new ChargingStationId(chargeBoxIdentity); StartTransactionInfo startTransactionInfo = new StartTransactionInfo(new EvseId(parameters.getConnectorId()), parameters.getMeterStart(), parameters.getTimestamp(), new TextualToken(parameters.getIdTag()), Collections.<String, String>emptyMap()); final StartTransactionFutureEventCallback future = new StartTransactionFutureEventCallback(domainService, chargingStationId, PROTOCOL_IDENTIFIER, startTransactionInfo, addOnIdentity); FutureRequestHandler<StartTransactionResponse, StartTransactionFutureResult> handler = new FutureRequestHandler<>(context.getMessageContext(), continuationTimeout); return handler.handle(future, new CallInitiator() { @Override public void initiateCall() { domainService.startTransaction(chargingStationId, new EvseId(parameters.getConnectorId()), new TextualToken(parameters.getIdTag()), future, addOnIdentity); } }, new StartTransactionResponseFactory(), new ResponseFactory<StartTransactionResponse>() { @Override public StartTransactionResponse createResponse() { LOG.error("Error while handling 'startTransaction' request"); StartTransactionResponse response = new StartTransactionResponse(); IdTagInfo tagInfo = new IdTagInfo(); tagInfo.setStatus(AuthorizationStatus.INVALID); response.setIdTagInfo(tagInfo); return response; } }); }
@Override public StartTransactionResponse startTransaction(final StartTransactionRequest parameters, final String chargeBoxIdentity) { final ChargingStationId chargingStationId = new ChargingStationId(chargeBoxIdentity); AttributeMap<String, String> attributes = new AttributeMap<String, String>(). putIfValueNotNull(AttributeMapKeys.RESERVATION_ID, parameters.getReservationId() != null ? parameters.getReservationId().toString() : null); StartTransactionInfo startTransactionInfo = new StartTransactionInfo(new EvseId(parameters.getConnectorId()), parameters.getMeterStart(), parameters.getTimestamp(), new TextualToken(parameters.getIdTag()), attributes); final StartTransactionFutureEventCallback future = new StartTransactionFutureEventCallback(domainService, chargingStationId, PROTOCOL_IDENTIFIER, startTransactionInfo, addOnIdentity); FutureRequestHandler<StartTransactionResponse, StartTransactionFutureResult> handler = new FutureRequestHandler<>(context.getMessageContext(), continuationTimeout); return handler.handle(future, new CallInitiator() { @Override public void initiateCall() { domainService.startTransaction(chargingStationId, new EvseId(parameters.getConnectorId()), new TextualToken(parameters.getIdTag()), future, addOnIdentity); } }, new StartTransactionResponseFactory(), new ResponseFactory<StartTransactionResponse>() { @Override public StartTransactionResponse createResponse() { LOG.error("Error while handling 'startTransaction' request"); StartTransactionResponse response = new StartTransactionResponse(); IdTagInfo tagInfo = new IdTagInfo(); tagInfo.setStatus(AuthorizationStatus.INVALID); response.setIdTagInfo(tagInfo); return response; } }); }
NumberedTransactionId transactionId = new NumberedTransactionId(chargingStationId, protocolIdentifier, transaction.getId().intValue()); IdentifyingToken identifyingToken = resultEvent.getIdentifyingToken(); StartTransactionInfo extendedStartTransactionInfo = new StartTransactionInfo(startTransactionInfo.getEvseId(), startTransactionInfo.getMeterStart(), startTransactionInfo.getTimestamp(), identifyingToken, startTransactionInfo.getAttributes());
StartTransactionInfo extendedStartTransactionInfo = new StartTransactionInfo(startTransaction.getEvseId(), startTransaction.getMeterStart(), startTransaction.getTimestamp(), identifyingToken, startTransaction.getAttributes());