diff --git a/src/main/java/com/yablochkov/ocppstub/EventHandler.java b/src/main/java/com/yablochkov/ocppstub/EventHandler.java index 40d0b3b..5340093 100644 --- a/src/main/java/com/yablochkov/ocppstub/EventHandler.java +++ b/src/main/java/com/yablochkov/ocppstub/EventHandler.java @@ -76,12 +76,15 @@ public class EventHandler implements ServerCoreEventHandler, ServerEvents { @Override public StopTransactionConfirmation handleStopTransactionRequest(UUID sessionIndex, StopTransactionRequest request) { log.info("Stop transaction request {}", request); - transactionService.stopByRequest(sessionIndex, request.getTransactionId()); + var transactionId = request.getTransactionId(); + transactionService.stopByRequest(sessionIndex, transactionId); + log.info("Prepare stop confirmation"); var confirmation = new StopTransactionConfirmation(); Optional.ofNullable(request.getIdTag()) .ifPresent((idTag) -> confirmation.setIdTagInfo(new IdTagInfo(AuthorizationStatus.Expired))); - log.info("Stop transaction {}, with idTag {} for session {}", request.getTransactionId(), request.getIdTag(), sessionIndex); + + log.info("Stop transaction {}, with idTag {} for session {}", transactionId, request.getIdTag(), sessionIndex); return confirmation; } diff --git a/src/main/java/com/yablochkov/ocppstub/TransactionService.java b/src/main/java/com/yablochkov/ocppstub/TransactionService.java index 07904e0..6faa631 100644 --- a/src/main/java/com/yablochkov/ocppstub/TransactionService.java +++ b/src/main/java/com/yablochkov/ocppstub/TransactionService.java @@ -15,6 +15,7 @@ import eu.chargetime.ocpp.model.core.StartTransactionConfirmation; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; @@ -55,9 +56,12 @@ public class TransactionService { var identity = sessionService.getIdentityBySessionId(sessionIndex); log.info("Try to stop transaction for {}, with id {}", identity, transactionId); - if (Objects.nonNull(identity)) { - transactionMap.remove(identity); - } + Optional.ofNullable(identity) + .map(transactionMap::remove) + .filter(Objects::nonNull) + .ifPresentOrElse( + (id) -> log.info("Transaction id {} removed ({} requested)", id, transactionId), + () -> log.info("Nothing to remove for {}", transactionId)); } public RemoteStartTransactionConfirmation remoteStart(String id, Integer connectorId) {