From 92763574e3a74a43f237d12e6a2edf54b0f96526 Mon Sep 17 00:00:00 2001 From: Julien Herr Date: Tue, 29 Aug 2023 14:34:35 +0200 Subject: [PATCH 1/4] refacto: Use constructor injection everywhere possible Remove @Autowired and @PostContruct everywhere possible Use Lombok @RequiredArgsConstructor everywhere possible --- .../idsg/steve/config/OcppConfiguration.java | 14 ++-------- .../steve/config/WebSocketConfiguration.java | 12 ++++----- .../ChargePointService12_InvokerImpl.java | 2 -- .../ChargePointService15_InvokerImpl.java | 2 -- .../ChargePointService16_InvokerImpl.java | 2 -- .../idsg/steve/ocpp/soap/ClientProvider.java | 6 ++--- .../ocpp/soap/MessageHeaderInterceptor.java | 12 +++++---- .../ocpp/ws/AbstractWebSocketEndpoint.java | 26 ++++++++++--------- .../ws/ocpp12/Ocpp12WebSocketEndpoint.java | 16 +++++------- .../ws/ocpp15/Ocpp15WebSocketEndpoint.java | 16 ++++-------- .../ws/ocpp16/Ocpp16WebSocketEndpoint.java | 16 ++++-------- .../ws/pipeline/OutgoingCallPipeline.java | 2 -- .../impl/ChargePointRepositoryImpl.java | 9 ++----- .../impl/ChargingProfileRepositoryImpl.java | 5 ++-- .../impl/GenericRepositoryImpl.java | 5 ++-- .../impl/OcppServerRepositoryImpl.java | 1 + .../impl/OcppTagRepositoryImpl.java | 8 ++---- .../impl/ReservationRepositoryImpl.java | 8 ++---- .../impl/SettingsRepositoryImpl.java | 5 ++-- .../impl/TransactionRepositoryImpl.java | 8 +++--- .../repository/impl/UserRepositoryImpl.java | 7 ++--- .../CentralSystemService16_Service.java | 13 +++++----- .../service/ChargePointHelperService.java | 25 ++++++++++++------ .../service/ChargePointService12_Client.java | 9 ++++--- .../service/ChargePointService15_Client.java | 17 +++++++++--- .../service/ChargePointService16_Client.java | 17 +++++++++--- .../service/GithubReleaseCheckService.java | 6 ++--- .../rwth/idsg/steve/service/MailService.java | 22 +++++++++------- .../steve/service/NotificationService.java | 5 ++-- .../steve/service/TransactionStopService.java | 7 ++--- .../controller/AboutSettingsController.java | 13 +++++----- .../web/controller/AjaxCallController.java | 16 ++++++------ .../controller/ChargePointsController.java | 7 ++--- .../ChargingProfilesController.java | 7 ++--- .../steve/web/controller/HomeController.java | 7 ++--- .../web/controller/Ocpp12Controller.java | 15 ++++++----- .../web/controller/Ocpp15Controller.java | 12 ++++++--- .../web/controller/Ocpp16Controller.java | 17 ++++++------ .../web/controller/OcppTagsController.java | 6 ++--- .../steve/web/controller/TaskController.java | 5 ++-- .../TransactionsReservationsController.java | 13 +++++----- .../steve/web/controller/UsersController.java | 7 ++--- 42 files changed, 218 insertions(+), 210 deletions(-) diff --git a/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java b/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java index 99bf012a4..22ee0994b 100644 --- a/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java +++ b/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java @@ -21,6 +21,7 @@ import de.rwth.idsg.steve.ocpp.soap.LoggingFeatureProxy; import de.rwth.idsg.steve.ocpp.soap.MediatorInInterceptor; import de.rwth.idsg.steve.ocpp.soap.MessageIdInterceptor; +import ocpp.cs._2010._08.CentralSystemService; import org.apache.cxf.Bus; import org.apache.cxf.bus.spring.SpringBus; import org.apache.cxf.common.logging.LogUtils; @@ -30,12 +31,10 @@ import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import org.apache.cxf.message.Message; import org.apache.cxf.phase.PhaseInterceptor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import javax.annotation.PostConstruct; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -57,16 +56,7 @@ public class OcppConfiguration { LogUtils.setLoggerClass(Slf4jLogger.class); } - @Autowired private ocpp.cs._2010._08.CentralSystemService ocpp12Server; - @Autowired private ocpp.cs._2012._06.CentralSystemService ocpp15Server; - @Autowired private ocpp.cs._2015._10.CentralSystemService ocpp16Server; - - @Autowired - @Qualifier("MessageHeaderInterceptor") - private PhaseInterceptor messageHeaderInterceptor; - - @PostConstruct - public void init() { + public OcppConfiguration(CentralSystemService ocpp12Server, ocpp.cs._2012._06.CentralSystemService ocpp15Server, ocpp.cs._2015._10.CentralSystemService ocpp16Server, @Qualifier("MessageHeaderInterceptor") PhaseInterceptor messageHeaderInterceptor) { List> interceptors = asList(new MessageIdInterceptor(), messageHeaderInterceptor); List logging = singletonList(LoggingFeatureProxy.INSTANCE.get()); diff --git a/src/main/java/de/rwth/idsg/steve/config/WebSocketConfiguration.java b/src/main/java/de/rwth/idsg/steve/config/WebSocketConfiguration.java index 23b1c0cb1..1d266da38 100644 --- a/src/main/java/de/rwth/idsg/steve/config/WebSocketConfiguration.java +++ b/src/main/java/de/rwth/idsg/steve/config/WebSocketConfiguration.java @@ -24,8 +24,8 @@ import de.rwth.idsg.steve.ocpp.ws.ocpp15.Ocpp15WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.ocpp16.Ocpp16WebSocketEndpoint; import de.rwth.idsg.steve.service.ChargePointHelperService; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; @@ -42,13 +42,13 @@ @EnableWebSocket @Configuration @Slf4j +@RequiredArgsConstructor public class WebSocketConfiguration implements WebSocketConfigurer { - @Autowired private ChargePointHelperService chargePointHelperService; - - @Autowired private Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint; - @Autowired private Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint; - @Autowired private Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint; + private final ChargePointHelperService chargePointHelperService; + private final Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint; + private final Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint; + private final Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint; public static final String PATH_INFIX = "/websocket/CentralSystemService/"; public static final long PING_INTERVAL = TimeUnit.MINUTES.toMinutes(15); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java index 58cdd14ab..0260180b6 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java @@ -35,7 +35,6 @@ import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2010._08.ChargePointService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -48,7 +47,6 @@ public class ChargePointService12_InvokerImpl implements ChargePointService12_In private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - @Autowired public ChargePointService12_InvokerImpl(OutgoingCallPipeline pipeline, Ocpp12WebSocketEndpoint endpoint, ClientProvider clientProvider) { this.wsHelper = new ChargePointServiceInvoker(pipeline, endpoint, Ocpp12TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java index 1dbccca10..a312581b7 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java @@ -41,7 +41,6 @@ import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2012._06.ChargePointService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -54,7 +53,6 @@ public class ChargePointService15_InvokerImpl implements ChargePointService15_In private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - @Autowired public ChargePointService15_InvokerImpl(OutgoingCallPipeline pipeline, Ocpp15WebSocketEndpoint endpoint, ClientProvider clientProvider) { this.wsHelper = new ChargePointServiceInvoker(pipeline, endpoint, Ocpp15TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java index 49681c293..6d0ca7527 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java @@ -27,7 +27,6 @@ import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2015._10.ChargePointService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -40,7 +39,6 @@ public class ChargePointService16_InvokerImpl implements ChargePointService16_In private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - @Autowired public ChargePointService16_InvokerImpl(OutgoingCallPipeline pipeline, Ocpp16WebSocketEndpoint endpoint, ClientProvider clientProvider) { this.wsHelper = new ChargePointServiceInvoker(pipeline, endpoint, Ocpp16TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/soap/ClientProvider.java b/src/main/java/de/rwth/idsg/steve/ocpp/soap/ClientProvider.java index 0421f3a0f..f12859c4f 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/soap/ClientProvider.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/soap/ClientProvider.java @@ -28,7 +28,6 @@ import org.jetbrains.annotations.Nullable; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.xml.ws.soap.SOAPBinding; @@ -42,10 +41,9 @@ @Component public class ClientProvider { - @Nullable private TLSClientParameters tlsClientParams; + @Nullable private final TLSClientParameters tlsClientParams; - @PostConstruct - private void init() { + public ClientProvider() { if (shouldInitSSL()) { tlsClientParams = new TLSClientParameters(); tlsClientParams.setSSLSocketFactory(setupSSL()); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java b/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java index be328575f..d971325c2 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java @@ -36,7 +36,6 @@ import org.apache.cxf.ws.addressing.AddressingProperties; import org.apache.cxf.ws.addressing.ContextUtils; import org.apache.cxf.ws.addressing.EndpointReferenceType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.xml.namespace.QName; @@ -60,15 +59,18 @@ @Component("MessageHeaderInterceptor") public class MessageHeaderInterceptor extends AbstractPhaseInterceptor { - @Autowired private OcppServerRepository ocppServerRepository; - @Autowired private ChargePointHelperService chargePointHelperService; - @Autowired private ScheduledExecutorService executorService; + private final OcppServerRepository ocppServerRepository; + private final ChargePointHelperService chargePointHelperService; + private final ScheduledExecutorService executorService; private static final String BOOT_OPERATION_NAME = "BootNotification"; private static final String CHARGEBOX_ID_HEADER = "ChargeBoxIdentity"; - public MessageHeaderInterceptor() { + public MessageHeaderInterceptor(OcppServerRepository ocppServerRepository, ChargePointHelperService chargePointHelperService, ScheduledExecutorService executorService) { super(Phase.PRE_INVOKE); + this.ocppServerRepository = ocppServerRepository; + this.chargePointHelperService = chargePointHelperService; + this.executorService = executorService; } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java index 92c2fb396..53a15901b 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java @@ -24,12 +24,13 @@ import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.ws.data.CommunicationContext; import de.rwth.idsg.steve.ocpp.ws.data.SessionContext; +import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; +import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; import de.rwth.idsg.steve.repository.OcppServerRepository; import de.rwth.idsg.steve.service.notification.OcppStationWebSocketConnected; import de.rwth.idsg.steve.service.notification.OcppStationWebSocketDisconnected; import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.socket.BinaryMessage; import org.springframework.web.socket.CloseStatus; @@ -54,30 +55,31 @@ * @since 17.03.2015 */ public abstract class AbstractWebSocketEndpoint extends ConcurrentWebSocketHandler implements SubProtocolCapable { - - @Autowired private ScheduledExecutorService service; - @Autowired private OcppServerRepository ocppServerRepository; - @Autowired private FutureResponseContextStore futureResponseContextStore; - @Autowired private ApplicationEventPublisher applicationEventPublisher; - public static final String CHARGEBOX_ID_KEY = "CHARGEBOX_ID_KEY"; + private final ScheduledExecutorService service; + private final OcppServerRepository ocppServerRepository; + private final FutureResponseContextStore futureResponseContextStore; private final SessionContextStore sessionContextStore = new SessionContextStore(); private final List> connectedCallbackList = new ArrayList<>(); private final List> disconnectedCallbackList = new ArrayList<>(); private final Object sessionContextLock = new Object(); - private IncomingPipeline pipeline; - - public abstract OcppVersion getVersion(); + private final IncomingPipeline pipeline; - public void init(IncomingPipeline pipeline) { - this.pipeline = pipeline; + public AbstractWebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, AbstractCallHandler server, AbstractTypeStore store) { + this.service = service; + this.ocppServerRepository = ocppServerRepository; + this.futureResponseContextStore = futureResponseContextStore; + Deserializer deserializer = new Deserializer(futureResponseContextStore, store); + this.pipeline = new IncomingPipeline(deserializer, server); connectedCallbackList.add((chargeBoxId) -> applicationEventPublisher.publishEvent(new OcppStationWebSocketConnected(chargeBoxId))); disconnectedCallbackList.add((chargeBoxId) -> applicationEventPublisher.publishEvent(new OcppStationWebSocketDisconnected(chargeBoxId))); } + public abstract OcppVersion getVersion(); + @Override public List getSubProtocols() { return Collections.singletonList(getVersion().getValue()); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java index a8cd42ba5..b2525906d 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java @@ -23,11 +23,13 @@ import de.rwth.idsg.steve.ocpp.OcppProtocol; import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.soap.CentralSystemService12_SoapServer; +import de.rwth.idsg.steve.ocpp.ws.AbstractTypeStore; import de.rwth.idsg.steve.ocpp.ws.AbstractWebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; +import de.rwth.idsg.steve.repository.OcppServerRepository; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import ocpp.cs._2010._08.AuthorizeRequest; @@ -39,10 +41,10 @@ import ocpp.cs._2010._08.StartTransactionRequest; import ocpp.cs._2010._08.StatusNotificationRequest; import ocpp.cs._2010._08.StopTransactionRequest; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; +import java.util.concurrent.ScheduledExecutorService; /** * @author Sevket Goekay @@ -51,14 +53,8 @@ @Component public class Ocpp12WebSocketEndpoint extends AbstractWebSocketEndpoint { - @Autowired private CentralSystemService12_SoapServer server; - @Autowired private FutureResponseContextStore futureResponseContextStore; - - @PostConstruct - public void init() { - Deserializer deserializer = new Deserializer(futureResponseContextStore, Ocpp12TypeStore.INSTANCE); - IncomingPipeline pipeline = new IncomingPipeline(deserializer, new Ocpp12CallHandler(server)); - super.init(pipeline); + public Ocpp12WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService12_SoapServer server) { + super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp12CallHandler(server), Ocpp12TypeStore.INSTANCE); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java index 7ce9750dc..c44f5b376 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java @@ -28,6 +28,7 @@ import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; +import de.rwth.idsg.steve.repository.OcppServerRepository; import lombok.RequiredArgsConstructor; import ocpp.cs._2012._06.AuthorizeRequest; import ocpp.cs._2012._06.BootNotificationRequest; @@ -39,10 +40,10 @@ import ocpp.cs._2012._06.StartTransactionRequest; import ocpp.cs._2012._06.StatusNotificationRequest; import ocpp.cs._2012._06.StopTransactionRequest; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; +import java.util.concurrent.ScheduledExecutorService; /** * @author Sevket Goekay @@ -50,15 +51,8 @@ */ @Component public class Ocpp15WebSocketEndpoint extends AbstractWebSocketEndpoint { - - @Autowired private CentralSystemService15_SoapServer server; - @Autowired private FutureResponseContextStore futureResponseContextStore; - - @PostConstruct - public void init() { - Deserializer deserializer = new Deserializer(futureResponseContextStore, Ocpp15TypeStore.INSTANCE); - IncomingPipeline pipeline = new IncomingPipeline(deserializer, new Ocpp15CallHandler(server)); - super.init(pipeline); + public Ocpp15WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService15_SoapServer server) { + super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp15CallHandler(server), Ocpp15TypeStore.INSTANCE); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java index 2b22bf704..56fdac743 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java @@ -28,6 +28,7 @@ import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; +import de.rwth.idsg.steve.repository.OcppServerRepository; import lombok.RequiredArgsConstructor; import ocpp.cs._2015._10.AuthorizeRequest; import ocpp.cs._2015._10.BootNotificationRequest; @@ -39,10 +40,10 @@ import ocpp.cs._2015._10.StartTransactionRequest; import ocpp.cs._2015._10.StatusNotificationRequest; import ocpp.cs._2015._10.StopTransactionRequest; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; +import java.util.concurrent.ScheduledExecutorService; /** * @author Sevket Goekay @@ -50,15 +51,8 @@ */ @Component public class Ocpp16WebSocketEndpoint extends AbstractWebSocketEndpoint { - - @Autowired private CentralSystemService16_SoapServer server; - @Autowired private FutureResponseContextStore futureResponseContextStore; - - @PostConstruct - public void init() { - Deserializer deserializer = new Deserializer(futureResponseContextStore, Ocpp16TypeStore.INSTANCE); - IncomingPipeline pipeline = new IncomingPipeline(deserializer, new Ocpp16CallHandler(server)); - super.init(pipeline); + public Ocpp16WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService16_SoapServer server) { + super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp16CallHandler(server), Ocpp16TypeStore.INSTANCE); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/pipeline/OutgoingCallPipeline.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/pipeline/OutgoingCallPipeline.java index 69a20705b..0073ca379 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/pipeline/OutgoingCallPipeline.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/pipeline/OutgoingCallPipeline.java @@ -21,7 +21,6 @@ import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; import de.rwth.idsg.steve.ocpp.ws.data.CommunicationContext; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.function.Consumer; @@ -38,7 +37,6 @@ public class OutgoingCallPipeline implements Consumer { private final Consumer chainedConsumers; - @Autowired public OutgoingCallPipeline(FutureResponseContextStore store) { chainedConsumers = OutgoingCallPipeline.start(Serializer.INSTANCE) .andThen(Sender.INSTANCE) diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/ChargePointRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/ChargePointRepositoryImpl.java index 727c5d93d..858072805 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/ChargePointRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/ChargePointRepositoryImpl.java @@ -31,6 +31,7 @@ import de.rwth.idsg.steve.web.dto.ConnectorStatusForm; import jooq.steve.db.tables.records.AddressRecord; import jooq.steve.db.tables.records.ChargeBoxRecord; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import ocpp.cs._2015._10.RegistrationStatus; import org.joda.time.DateTime; @@ -45,7 +46,6 @@ import org.jooq.Table; import org.jooq.exception.DataAccessException; import org.jooq.impl.DSL; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.util.CollectionUtils; @@ -65,18 +65,13 @@ * @since 14.08.2014 */ @Slf4j +@RequiredArgsConstructor @Repository public class ChargePointRepositoryImpl implements ChargePointRepository { private final DSLContext ctx; private final AddressRepository addressRepository; - @Autowired - public ChargePointRepositoryImpl(DSLContext ctx, AddressRepository addressRepository) { - this.ctx = ctx; - this.addressRepository = addressRepository; - } - @Override public Optional getRegistrationStatus(String chargeBoxId) { String status = ctx.select(CHARGE_BOX.REGISTRATION_STATUS) diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/ChargingProfileRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/ChargingProfileRepositoryImpl.java index fb17ed7f4..f4a9a7353 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/ChargingProfileRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/ChargingProfileRepositoryImpl.java @@ -28,6 +28,7 @@ import de.rwth.idsg.steve.web.dto.ChargingProfileQueryForm; import jooq.steve.db.tables.records.ChargingProfileRecord; import jooq.steve.db.tables.records.ChargingSchedulePeriodRecord; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import ocpp.cp._2015._10.ChargingProfilePurposeType; import org.jetbrains.annotations.NotNull; @@ -38,7 +39,6 @@ import org.jooq.SelectConditionStep; import org.jooq.exception.DataAccessException; import org.jooq.impl.DSL; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.util.CollectionUtils; @@ -57,10 +57,11 @@ * @since 12.11.2018 */ @Slf4j +@RequiredArgsConstructor @Repository public class ChargingProfileRepositoryImpl implements ChargingProfileRepository { - @Autowired private DSLContext ctx; + private final DSLContext ctx; // ------------------------------------------------------------------------- // OCPP operations diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/GenericRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/GenericRepositoryImpl.java index 1c458b059..85c92954c 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/GenericRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/GenericRepositoryImpl.java @@ -23,13 +23,13 @@ import de.rwth.idsg.steve.repository.dto.DbVersion; import de.rwth.idsg.steve.utils.DateTimeUtils; import de.rwth.idsg.steve.web.dto.Statistics; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; import org.jooq.DSLContext; import org.jooq.Field; import org.jooq.Record2; import org.jooq.Record8; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import static de.rwth.idsg.steve.utils.CustomDSL.date; @@ -47,10 +47,11 @@ * @since 14.08.2014 */ @Slf4j +@RequiredArgsConstructor @Repository public class GenericRepositoryImpl implements GenericRepository { - @Autowired private DSLContext ctx; + private final DSLContext ctx; @Override public Statistics getStats() { diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/OcppServerRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/OcppServerRepositoryImpl.java index 89319f5f4..1d9b5ac6f 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/OcppServerRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/OcppServerRepositoryImpl.java @@ -41,6 +41,7 @@ import org.jooq.Record1; import org.jooq.SelectConditionStep; import org.jooq.impl.DSL; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.util.CollectionUtils; diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/OcppTagRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/OcppTagRepositoryImpl.java index 5cd882688..b9eaaf066 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/OcppTagRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/OcppTagRepositoryImpl.java @@ -26,6 +26,7 @@ import jooq.steve.db.tables.OcppTagActivity; import jooq.steve.db.tables.records.OcppTagActivityRecord; import jooq.steve.db.tables.records.OcppTagRecord; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; import org.jooq.DSLContext; @@ -36,7 +37,6 @@ import org.jooq.SelectQuery; import org.jooq.TableField; import org.jooq.exception.DataAccessException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.sql.SQLIntegrityConstraintViolationException; @@ -53,16 +53,12 @@ * @since 14.08.2014 */ @Slf4j +@RequiredArgsConstructor @Repository public class OcppTagRepositoryImpl implements OcppTagRepository { private final DSLContext ctx; - @Autowired - public OcppTagRepositoryImpl(DSLContext ctx) { - this.ctx = ctx; - } - @Override @SuppressWarnings("unchecked") public List getOverview(OcppTagQueryForm form) { diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/ReservationRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/ReservationRepositoryImpl.java index 7441d6755..5252d3ad5 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/ReservationRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/ReservationRepositoryImpl.java @@ -25,6 +25,7 @@ import de.rwth.idsg.steve.repository.dto.Reservation; import de.rwth.idsg.steve.utils.DateTimeUtils; import de.rwth.idsg.steve.web.dto.ReservationQueryForm; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; import org.jooq.DSLContext; @@ -36,7 +37,6 @@ import org.jooq.SelectQuery; import org.jooq.exception.DataAccessException; import org.jooq.impl.DSL; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.util.List; @@ -51,16 +51,12 @@ * @since 14.08.2014 */ @Slf4j +@RequiredArgsConstructor @Repository public class ReservationRepositoryImpl implements ReservationRepository { private final DSLContext ctx; - @Autowired - public ReservationRepositoryImpl(DSLContext ctx) { - this.ctx = ctx; - } - @Override @SuppressWarnings("unchecked") public List getReservations(ReservationQueryForm form) { diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/SettingsRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/SettingsRepositoryImpl.java index 756ea325c..219000f0c 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/SettingsRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/SettingsRepositoryImpl.java @@ -24,9 +24,9 @@ import de.rwth.idsg.steve.repository.dto.MailSettings; import de.rwth.idsg.steve.web.dto.SettingsForm; import jooq.steve.db.tables.records.SettingsRecord; +import lombok.RequiredArgsConstructor; import org.jooq.DSLContext; import org.jooq.exception.DataAccessException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.nio.charset.StandardCharsets; @@ -43,6 +43,7 @@ * @author Sevket Goekay * @since 06.11.2015 */ +@RequiredArgsConstructor @Repository public class SettingsRepositoryImpl implements SettingsRepository { @@ -53,7 +54,7 @@ public class SettingsRepositoryImpl implements SettingsRepository { StandardCharsets.UTF_8 ); - @Autowired private DSLContext ctx; + private final DSLContext ctx; @Override public SettingsForm getForm() { diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java index 0ba4b3b1a..5f1c7dc98 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java @@ -27,6 +27,7 @@ import jooq.steve.db.enums.TransactionStopEventActor; import jooq.steve.db.tables.records.ConnectorMeterValueRecord; import jooq.steve.db.tables.records.TransactionStartRecord; +import lombok.RequiredArgsConstructor; import org.joda.time.DateTime; import org.jooq.Condition; import org.jooq.DSLContext; @@ -36,6 +37,7 @@ import org.jooq.RecordMapper; import org.jooq.SelectQuery; import org.jooq.Table; +import org.jooq.impl.DSL; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -54,16 +56,12 @@ * @author Sevket Goekay * @since 14.08.2014 */ +@RequiredArgsConstructor @Repository public class TransactionRepositoryImpl implements TransactionRepository { private final DSLContext ctx; - @Autowired - public TransactionRepositoryImpl(DSLContext ctx) { - this.ctx = ctx; - } - @Override public List getTransactions(TransactionQueryForm form) { return getInternal(form).fetch() diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/UserRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/UserRepositoryImpl.java index b24646dc1..c930eefee 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/UserRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/UserRepositoryImpl.java @@ -26,6 +26,7 @@ import de.rwth.idsg.steve.web.dto.UserQueryForm; import jooq.steve.db.tables.records.AddressRecord; import jooq.steve.db.tables.records.UserRecord; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jooq.DSLContext; import org.jooq.Field; @@ -37,7 +38,6 @@ import org.jooq.SelectQuery; import org.jooq.exception.DataAccessException; import org.jooq.impl.DSL; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import java.util.List; @@ -52,11 +52,12 @@ * @since 25.11.2015 */ @Slf4j +@RequiredArgsConstructor @Repository public class UserRepositoryImpl implements UserRepository { - @Autowired private DSLContext ctx; - @Autowired private AddressRepository addressRepository; + private final DSLContext ctx; + private final AddressRepository addressRepository; @Override public List getOverview(UserQueryForm form) { diff --git a/src/main/java/de/rwth/idsg/steve/service/CentralSystemService16_Service.java b/src/main/java/de/rwth/idsg/steve/service/CentralSystemService16_Service.java index 2ff468d46..a7608c8d4 100644 --- a/src/main/java/de/rwth/idsg/steve/service/CentralSystemService16_Service.java +++ b/src/main/java/de/rwth/idsg/steve/service/CentralSystemService16_Service.java @@ -30,6 +30,7 @@ import de.rwth.idsg.steve.service.notification.OcppTransactionEnded; import de.rwth.idsg.steve.service.notification.OcppTransactionStarted; import jooq.steve.db.enums.TransactionStopEventActor; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import ocpp.cs._2015._10.AuthorizationStatus; import ocpp.cs._2015._10.AuthorizeRequest; @@ -57,7 +58,6 @@ import ocpp.cs._2015._10.StopTransactionRequest; import ocpp.cs._2015._10.StopTransactionResponse; import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; @@ -68,15 +68,16 @@ * @since 13.03.2018 */ @Slf4j +@RequiredArgsConstructor @Service public class CentralSystemService16_Service { - @Autowired private OcppServerRepository ocppServerRepository; - @Autowired private SettingsRepository settingsRepository; + private final OcppServerRepository ocppServerRepository; + private final SettingsRepository settingsRepository; - @Autowired private OcppTagService ocppTagService; - @Autowired private ApplicationEventPublisher applicationEventPublisher; - @Autowired private ChargePointHelperService chargePointHelperService; + private final OcppTagService ocppTagService; + private final ApplicationEventPublisher applicationEventPublisher; + private final ChargePointHelperService chargePointHelperService; public BootNotificationResponse bootNotification(BootNotificationRequest parameters, String chargeBoxIdentity, OcppProtocol ocppProtocol) { diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java index d32ea1667..e067be2a0 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java @@ -40,7 +40,6 @@ import lombok.extern.slf4j.Slf4j; import ocpp.cs._2015._10.RegistrationStatus; import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -67,21 +66,31 @@ @Service public class ChargePointHelperService { - private final boolean autoRegisterUnknownStations = CONFIG.getOcpp().isAutoRegisterUnknownStations(); - private final Striped isRegisteredLocks = Striped.lock(16); + private final boolean autoRegisterUnknownStations; + private final Striped isRegisteredLocks; - @Autowired private GenericRepository genericRepository; + private final GenericRepository genericRepository; // SOAP-based charge points are stored in DB with an endpoint address - @Autowired private ChargePointRepository chargePointRepository; + private final ChargePointRepository chargePointRepository; // For WebSocket-based charge points, the active sessions are stored in memory - @Autowired private Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint; - @Autowired private Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint; - @Autowired private Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint; + private final Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint; + private final Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint; + private final Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint; private final UnidentifiedIncomingObjectService unknownChargePointService = new UnidentifiedIncomingObjectService(100); + public ChargePointHelperService(GenericRepository genericRepository, ChargePointRepository chargePointRepository, Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint, Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint, Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint) { + this.autoRegisterUnknownStations = CONFIG.getOcpp().isAutoRegisterUnknownStations(); + this.isRegisteredLocks = Striped.lock(16); + this.genericRepository = genericRepository; + this.chargePointRepository = chargePointRepository; + this.ocpp12WebSocketEndpoint = ocpp12WebSocketEndpoint; + this.ocpp15WebSocketEndpoint = ocpp15WebSocketEndpoint; + this.ocpp16WebSocketEndpoint = ocpp16WebSocketEndpoint; + } + public Optional getRegistrationStatus(String chargeBoxId) { Lock l = isRegisteredLocks.get(chargeBoxId); l.lock(); diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java index 0f23cabb1..252efd592 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java @@ -40,8 +40,8 @@ import de.rwth.idsg.steve.web.dto.ocpp.ResetParams; import de.rwth.idsg.steve.web.dto.ocpp.UnlockConnectorParams; import de.rwth.idsg.steve.web.dto.ocpp.UpdateFirmwareParams; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -51,14 +51,15 @@ * @author Sevket Goekay */ @Slf4j +@RequiredArgsConstructor @Service @Qualifier("ChargePointService12_Client") public class ChargePointService12_Client { - @Autowired protected ScheduledExecutorService executorService; - @Autowired protected TaskStore taskStore; + protected final ScheduledExecutorService executorService; + protected final TaskStore taskStore; - @Autowired private ChargePointService12_InvokerImpl invoker12; + private final ChargePointService12_InvokerImpl invoker12; protected OcppVersion getVersion() { return OcppVersion.V_12; diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java index 8de7f4255..2ee3fed2e 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java @@ -19,6 +19,7 @@ package de.rwth.idsg.steve.service; import de.rwth.idsg.steve.ocpp.ChargePointService12_Invoker; +import de.rwth.idsg.steve.ocpp.ChargePointService12_InvokerImpl; import de.rwth.idsg.steve.ocpp.ChargePointService15_Invoker; import de.rwth.idsg.steve.ocpp.ChargePointService15_InvokerImpl; import de.rwth.idsg.steve.ocpp.OcppVersion; @@ -29,6 +30,7 @@ import de.rwth.idsg.steve.ocpp.task.ReserveNowTask; import de.rwth.idsg.steve.ocpp.task.SendLocalListTask; import de.rwth.idsg.steve.repository.ReservationRepository; +import de.rwth.idsg.steve.repository.TaskStore; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import de.rwth.idsg.steve.repository.dto.InsertReservationParams; import de.rwth.idsg.steve.service.dto.EnhancedReserveNowParams; @@ -40,11 +42,11 @@ import de.rwth.idsg.steve.web.dto.ocpp.SendLocalListParams; import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.util.List; +import java.util.concurrent.ScheduledExecutorService; /** * @author Sevket Goekay @@ -54,10 +56,17 @@ @Qualifier("ChargePointService15_Client") public class ChargePointService15_Client extends ChargePointService12_Client { - @Autowired protected OcppTagService ocppTagService; - @Autowired protected ReservationRepository reservationRepository; + protected final OcppTagService ocppTagService; + protected final ReservationRepository reservationRepository; - @Autowired private ChargePointService15_InvokerImpl invoker15; + private final ChargePointService15_InvokerImpl invoker15; + + public ChargePointService15_Client(ScheduledExecutorService executorService, TaskStore taskStore, ChargePointService12_InvokerImpl invoker12, OcppTagService ocppTagService, ReservationRepository reservationRepository, ChargePointService15_InvokerImpl invoker15) { + super(executorService, taskStore, invoker12); + this.ocppTagService = ocppTagService; + this.reservationRepository = reservationRepository; + this.invoker15 = invoker15; + } @Override protected OcppVersion getVersion() { diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java index be73c9ee8..008b09bf0 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java @@ -20,7 +20,9 @@ import de.rwth.idsg.steve.SteveException; import de.rwth.idsg.steve.ocpp.ChargePointService12_Invoker; +import de.rwth.idsg.steve.ocpp.ChargePointService12_InvokerImpl; import de.rwth.idsg.steve.ocpp.ChargePointService15_Invoker; +import de.rwth.idsg.steve.ocpp.ChargePointService15_InvokerImpl; import de.rwth.idsg.steve.ocpp.ChargePointService16_Invoker; import de.rwth.idsg.steve.ocpp.ChargePointService16_InvokerImpl; import de.rwth.idsg.steve.ocpp.OcppVersion; @@ -29,6 +31,8 @@ import de.rwth.idsg.steve.ocpp.task.SetChargingProfileTask; import de.rwth.idsg.steve.ocpp.task.TriggerMessageTask; import de.rwth.idsg.steve.repository.ChargingProfileRepository; +import de.rwth.idsg.steve.repository.ReservationRepository; +import de.rwth.idsg.steve.repository.TaskStore; import de.rwth.idsg.steve.repository.dto.ChargingProfile; import de.rwth.idsg.steve.service.dto.EnhancedSetChargingProfileParams; import de.rwth.idsg.steve.web.dto.ocpp.ClearChargingProfileParams; @@ -37,10 +41,11 @@ import de.rwth.idsg.steve.web.dto.ocpp.TriggerMessageParams; import lombok.extern.slf4j.Slf4j; import ocpp.cp._2015._10.ChargingProfilePurposeType; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import java.util.concurrent.ScheduledExecutorService; + /** * @author Sevket Goekay * @since 13.03.2018 @@ -50,8 +55,14 @@ @Qualifier("ChargePointService16_Client") public class ChargePointService16_Client extends ChargePointService15_Client { - @Autowired private ChargePointService16_InvokerImpl invoker16; - @Autowired private ChargingProfileRepository chargingProfileRepository; + private final ChargePointService16_InvokerImpl invoker16; + private final ChargingProfileRepository chargingProfileRepository; + + public ChargePointService16_Client(ScheduledExecutorService executorService, TaskStore taskStore, ChargePointService12_InvokerImpl invoker12, OcppTagService ocppTagService, ReservationRepository reservationRepository, ChargePointService15_InvokerImpl invoker15, ChargePointService16_InvokerImpl invoker16, ChargingProfileRepository chargingProfileRepository) { + super(executorService, taskStore, invoker12, ocppTagService, reservationRepository, invoker15); + this.invoker16 = invoker16; + this.chargingProfileRepository = chargingProfileRepository; + } @Override protected OcppVersion getVersion() { diff --git a/src/main/java/de/rwth/idsg/steve/service/GithubReleaseCheckService.java b/src/main/java/de/rwth/idsg/steve/service/GithubReleaseCheckService.java index 26ec04acf..1111a2c7c 100644 --- a/src/main/java/de/rwth/idsg/steve/service/GithubReleaseCheckService.java +++ b/src/main/java/de/rwth/idsg/steve/service/GithubReleaseCheckService.java @@ -32,7 +32,6 @@ import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; -import javax.annotation.PostConstruct; import java.io.File; import java.util.Collections; @@ -55,10 +54,9 @@ public class GithubReleaseCheckService implements ReleaseCheckService { private static final String FILE_SEPARATOR = File.separator; - private RestTemplate restTemplate; + private final RestTemplate restTemplate; - @PostConstruct - private void init() { + public GithubReleaseCheckService() { HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setReadTimeout(API_TIMEOUT_IN_MILLIS); factory.setConnectTimeout(API_TIMEOUT_IN_MILLIS); diff --git a/src/main/java/de/rwth/idsg/steve/service/MailService.java b/src/main/java/de/rwth/idsg/steve/service/MailService.java index ef382f5b0..e7dd4395f 100644 --- a/src/main/java/de/rwth/idsg/steve/service/MailService.java +++ b/src/main/java/de/rwth/idsg/steve/service/MailService.java @@ -23,10 +23,8 @@ import de.rwth.idsg.steve.repository.SettingsRepository; import de.rwth.idsg.steve.repository.dto.MailSettings; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.PostConstruct; import jakarta.mail.Authenticator; import jakarta.mail.Message; import jakarta.mail.MessagingException; @@ -48,18 +46,24 @@ @Slf4j @Service public class MailService { + private final SettingsRepository settingsRepository; + private final ScheduledExecutorService executorService; - @Autowired private SettingsRepository settingsRepository; - @Autowired private ScheduledExecutorService executorService; - - private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); - private final Lock readLock = readWriteLock.readLock(); - private final Lock writeLock = readWriteLock.writeLock(); + private final Lock readLock; + private final Lock writeLock; private MailSettings settings; private Session session; - @PostConstruct + public MailService(SettingsRepository settingsRepository, ScheduledExecutorService executorService) { + this.settingsRepository = settingsRepository; + this.executorService = executorService; + ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); + readLock = readWriteLock.readLock(); + writeLock = readWriteLock.writeLock(); + loadSettingsFromDB(); + } + public void loadSettingsFromDB() { writeLock.lock(); try { diff --git a/src/main/java/de/rwth/idsg/steve/service/NotificationService.java b/src/main/java/de/rwth/idsg/steve/service/NotificationService.java index 402d8ea7b..eb8584672 100644 --- a/src/main/java/de/rwth/idsg/steve/service/NotificationService.java +++ b/src/main/java/de/rwth/idsg/steve/service/NotificationService.java @@ -29,9 +29,9 @@ import de.rwth.idsg.steve.service.notification.OcppStationWebSocketDisconnected; import de.rwth.idsg.steve.service.notification.OcppTransactionEnded; import de.rwth.idsg.steve.service.notification.OcppTransactionStarted; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; @@ -48,10 +48,11 @@ * @since 22.01.2016 */ @Slf4j +@RequiredArgsConstructor @Service public class NotificationService { - @Autowired private MailService mailService; + private final MailService mailService; @EventListener public void ocppStationBooted(OccpStationBooted notification) { diff --git a/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java b/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java index b6fc11e93..2976566c5 100644 --- a/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java +++ b/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java @@ -28,10 +28,10 @@ import jooq.steve.db.enums.TransactionStopEventActor; import jooq.steve.db.tables.records.TransactionStartRecord; import lombok.Builder; +import lombok.RequiredArgsConstructor; import ocpp.cs._2012._06.UnitOfMeasure; import org.jetbrains.annotations.Nullable; import org.joda.time.DateTime; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Comparator; @@ -44,11 +44,12 @@ * @author Sevket Goekay * @since 09.12.2018 */ +@RequiredArgsConstructor @Service public class TransactionStopService { - @Autowired private TransactionRepository transactionRepository; - @Autowired private OcppServerRepository ocppServerRepository; + private final TransactionRepository transactionRepository; + private final OcppServerRepository ocppServerRepository; public void stop(List transactionPkList) { transactionPkList.stream() diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/AboutSettingsController.java b/src/main/java/de/rwth/idsg/steve/web/controller/AboutSettingsController.java index 4faff293a..671db8bce 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/AboutSettingsController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/AboutSettingsController.java @@ -25,9 +25,9 @@ import de.rwth.idsg.steve.service.ReleaseCheckService; import de.rwth.idsg.steve.web.dto.EndpointInfo; import de.rwth.idsg.steve.web.dto.SettingsForm; +import lombok.RequiredArgsConstructor; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -44,15 +44,16 @@ * * @author Sevket Goekay */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager") public class AboutSettingsController { - @Autowired private GenericRepository genericRepository; - @Autowired private LogController logController; - @Autowired private SettingsRepository settingsRepository; - @Autowired private MailService mailService; - @Autowired private ReleaseCheckService releaseCheckService; + private final GenericRepository genericRepository; + private final LogController logController; + private final SettingsRepository settingsRepository; + private final MailService mailService; + private final ReleaseCheckService releaseCheckService; // ------------------------------------------------------------------------- // Paths diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java b/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java index 8f662b58d..a1146bc17 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java @@ -25,7 +25,6 @@ import de.rwth.idsg.steve.repository.ReservationRepository; import de.rwth.idsg.steve.repository.TransactionRepository; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; @@ -33,7 +32,6 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; -import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @@ -51,14 +49,16 @@ produces = MediaType.APPLICATION_JSON_VALUE) public class AjaxCallController { - @Autowired private ChargePointRepository chargePointRepository; - @Autowired private TransactionRepository transactionRepository; - @Autowired private ReservationRepository reservationRepository; + private final ChargePointRepository chargePointRepository; + private final TransactionRepository transactionRepository; + private final ReservationRepository reservationRepository; - private ObjectMapper objectMapper; + private final ObjectMapper objectMapper; - @PostConstruct - private void init() { + public AjaxCallController(ChargePointRepository chargePointRepository, TransactionRepository transactionRepository, ReservationRepository reservationRepository) { + this.chargePointRepository = chargePointRepository; + this.transactionRepository = transactionRepository; + this.reservationRepository = reservationRepository; objectMapper = new ObjectMapper(); objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); } diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/ChargePointsController.java b/src/main/java/de/rwth/idsg/steve/web/controller/ChargePointsController.java index 6097cb46d..a27a88e99 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/ChargePointsController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/ChargePointsController.java @@ -28,7 +28,7 @@ import de.rwth.idsg.steve.web.dto.ChargePointForm; import de.rwth.idsg.steve.web.dto.ChargePointQueryForm; import jooq.steve.db.tables.records.ChargeBoxRecord; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -48,12 +48,13 @@ * @author Sevket Goekay * */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager/chargepoints") public class ChargePointsController { - @Autowired protected ChargePointRepository chargePointRepository; - @Autowired protected ChargePointHelperService chargePointHelperService; + private final ChargePointRepository chargePointRepository; + private final ChargePointHelperService chargePointHelperService; protected static final String PARAMS = "params"; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/ChargingProfilesController.java b/src/main/java/de/rwth/idsg/steve/web/controller/ChargingProfilesController.java index a3ee7dd87..5cffb0ec7 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/ChargingProfilesController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/ChargingProfilesController.java @@ -25,7 +25,7 @@ import de.rwth.idsg.steve.web.dto.ChargingProfileAssignmentQueryForm; import de.rwth.idsg.steve.web.dto.ChargingProfileForm; import de.rwth.idsg.steve.web.dto.ChargingProfileQueryForm; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -40,12 +40,13 @@ * @author Sevket Goekay * @since 12.11.2018 */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager/chargingProfiles") public class ChargingProfilesController { - @Autowired private ChargePointRepository chargePointRepository; - @Autowired private ChargingProfileRepository repository; + private final ChargePointRepository chargePointRepository; + private final ChargingProfileRepository repository; private static final String PARAMS = "params"; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/HomeController.java b/src/main/java/de/rwth/idsg/steve/web/controller/HomeController.java index 07bd07d10..5647f8f1b 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/HomeController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/HomeController.java @@ -24,7 +24,7 @@ import de.rwth.idsg.steve.utils.ConnectorStatusCountFilter; import de.rwth.idsg.steve.utils.ConnectorStatusFilter; import de.rwth.idsg.steve.web.dto.ConnectorStatusForm; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -38,12 +38,13 @@ * @author Sevket Goekay * */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager", method = RequestMethod.GET) public class HomeController { - @Autowired private ChargePointRepository chargePointRepository; - @Autowired private ChargePointHelperService chargePointHelperService; + private final ChargePointRepository chargePointRepository; + private final ChargePointHelperService chargePointHelperService; private static final String PARAMS = "params"; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java index 1553f0c9a..0543b7f96 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java @@ -33,7 +33,6 @@ import de.rwth.idsg.steve.web.dto.ocpp.ResetParams; import de.rwth.idsg.steve.web.dto.ocpp.UnlockConnectorParams; import de.rwth.idsg.steve.web.dto.ocpp.UpdateFirmwareParams; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -55,12 +54,16 @@ @RequestMapping(value = "/manager/operations/v1.2") public class Ocpp12Controller { - @Autowired protected ChargePointHelperService chargePointHelperService; - @Autowired protected OcppTagService ocppTagService; + protected final ChargePointHelperService chargePointHelperService; + protected final OcppTagService ocppTagService; - @Autowired - @Qualifier("ChargePointService12_Client") - private ChargePointService12_Client client12; + private final ChargePointService12_Client client12; + + public Ocpp12Controller(ChargePointHelperService chargePointHelperService, OcppTagService ocppTagService, @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12) { + this.chargePointHelperService = chargePointHelperService; + this.ocppTagService = ocppTagService; + this.client12 = client12; + } protected static final String PARAMS = "params"; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java index a5c96e913..e325774b5 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java @@ -19,8 +19,10 @@ package de.rwth.idsg.steve.web.controller; import de.rwth.idsg.steve.ocpp.OcppVersion; +import de.rwth.idsg.steve.service.ChargePointHelperService; import de.rwth.idsg.steve.service.ChargePointService12_Client; import de.rwth.idsg.steve.service.ChargePointService15_Client; +import de.rwth.idsg.steve.service.OcppTagService; import de.rwth.idsg.steve.web.dto.ocpp.CancelReservationParams; import de.rwth.idsg.steve.web.dto.ocpp.ConfigurationKeyEnum; import de.rwth.idsg.steve.web.dto.ocpp.ConfigurationKeyReadWriteEnum; @@ -29,7 +31,6 @@ import de.rwth.idsg.steve.web.dto.ocpp.MultipleChargePointSelect; import de.rwth.idsg.steve.web.dto.ocpp.ReserveNowParams; import de.rwth.idsg.steve.web.dto.ocpp.SendLocalListParams; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -51,9 +52,12 @@ @RequestMapping(value = "/manager/operations/v1.5") public class Ocpp15Controller extends Ocpp12Controller { - @Autowired - @Qualifier("ChargePointService15_Client") - private ChargePointService15_Client client15; + private final ChargePointService15_Client client15; + + public Ocpp15Controller(ChargePointHelperService chargePointHelperService, OcppTagService ocppTagService, @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12, @Qualifier("ChargePointService15_Client") ChargePointService15_Client client15) { + super(chargePointHelperService, ocppTagService, client12); + this.client15 = client15; + } // ------------------------------------------------------------------------- // Paths diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java index ca33490e1..36017dd12 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java @@ -20,9 +20,7 @@ import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.repository.ChargingProfileRepository; -import de.rwth.idsg.steve.service.ChargePointService12_Client; -import de.rwth.idsg.steve.service.ChargePointService15_Client; -import de.rwth.idsg.steve.service.ChargePointService16_Client; +import de.rwth.idsg.steve.service.*; import de.rwth.idsg.steve.web.dto.ocpp.ChangeConfigurationParams; import de.rwth.idsg.steve.web.dto.ocpp.ClearChargingProfileParams; import de.rwth.idsg.steve.web.dto.ocpp.ConfigurationKeyEnum; @@ -32,7 +30,6 @@ import de.rwth.idsg.steve.web.dto.ocpp.SetChargingProfileParams; import de.rwth.idsg.steve.web.dto.ocpp.TriggerMessageParams; import ocpp.cs._2015._10.RegistrationStatus; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -58,11 +55,9 @@ @RequestMapping(value = "/manager/operations/v1.6") public class Ocpp16Controller extends Ocpp15Controller { - @Autowired - @Qualifier("ChargePointService16_Client") - private ChargePointService16_Client client16; + private final ChargePointService16_Client client16; - @Autowired private ChargingProfileRepository chargingProfileRepository; + private final ChargingProfileRepository chargingProfileRepository; // ------------------------------------------------------------------------- // Paths @@ -73,6 +68,12 @@ public class Ocpp16Controller extends Ocpp15Controller { private static final String SET_CHARGING_PATH = "/SetChargingProfile"; private static final String TRIGGER_MESSAGE_PATH = "/TriggerMessage"; + public Ocpp16Controller(ChargePointHelperService chargePointHelperService, OcppTagService ocppTagService, @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12, @Qualifier("ChargePointService15_Client") ChargePointService15_Client client15, @Qualifier("ChargePointService16_Client") ChargePointService16_Client client16, ChargingProfileRepository chargingProfileRepository) { + super(chargePointHelperService, ocppTagService, client12, client15); + this.client16 = client16; + this.chargingProfileRepository = chargingProfileRepository; + } + // ------------------------------------------------------------------------- // Helpers // ------------------------------------------------------------------------- diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java b/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java index 2325f389c..47c5bab84 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java @@ -25,7 +25,7 @@ import de.rwth.idsg.steve.web.dto.OcppTagForm; import de.rwth.idsg.steve.web.dto.OcppTagQueryForm; import jooq.steve.db.tables.records.OcppTagActivityRecord; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -36,17 +36,17 @@ import javax.validation.Valid; import java.util.Collections; -import java.util.List; /** * @author Sevket Goekay * @since 26.11.2015 */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager/ocppTags") public class OcppTagsController { - @Autowired protected OcppTagService ocppTagService; + protected final OcppTagService ocppTagService; protected static final String PARAMS = "params"; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/TaskController.java b/src/main/java/de/rwth/idsg/steve/web/controller/TaskController.java index 48f0603e4..399e494c9 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/TaskController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/TaskController.java @@ -24,8 +24,8 @@ import de.rwth.idsg.steve.ocpp.task.GetCompositeScheduleTask; import de.rwth.idsg.steve.ocpp.task.GetConfigurationTask; import de.rwth.idsg.steve.repository.TaskStore; +import lombok.RequiredArgsConstructor; import ocpp.cp._2015._10.GetCompositeScheduleResponse; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; @@ -36,11 +36,12 @@ * @author Sevket Goekay * @since 29.12.2014 */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager/operations/tasks") public class TaskController { - @Autowired private TaskStore taskStore; + private final TaskStore taskStore; // ------------------------------------------------------------------------- // Paths diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/TransactionsReservationsController.java b/src/main/java/de/rwth/idsg/steve/web/controller/TransactionsReservationsController.java index 78e58e92d..dc6c16032 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/TransactionsReservationsController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/TransactionsReservationsController.java @@ -26,7 +26,7 @@ import de.rwth.idsg.steve.service.TransactionStopService; import de.rwth.idsg.steve.web.dto.ReservationQueryForm; import de.rwth.idsg.steve.web.dto.TransactionQueryForm; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -45,15 +45,16 @@ * @author Sevket Goekay * @since 15.08.2014 */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager", method = RequestMethod.GET) public class TransactionsReservationsController { - @Autowired private TransactionRepository transactionRepository; - @Autowired private ReservationRepository reservationRepository; - @Autowired private ChargePointRepository chargePointRepository; - @Autowired private OcppTagService ocppTagService; - @Autowired private TransactionStopService transactionStopService; + private final TransactionRepository transactionRepository; + private final ReservationRepository reservationRepository; + private final ChargePointRepository chargePointRepository; + private final OcppTagService ocppTagService; + private final TransactionStopService transactionStopService; private static final String PARAMS = "params"; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/UsersController.java b/src/main/java/de/rwth/idsg/steve/web/controller/UsersController.java index 09cb47919..55bc20711 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/UsersController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/UsersController.java @@ -25,7 +25,7 @@ import de.rwth.idsg.steve.utils.mapper.UserFormMapper; import de.rwth.idsg.steve.web.dto.UserForm; import de.rwth.idsg.steve.web.dto.UserQueryForm; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; @@ -40,12 +40,13 @@ * @author Sevket Goekay * @since 25.11.2015 */ +@RequiredArgsConstructor @Controller @RequestMapping(value = "/manager/users") public class UsersController { - @Autowired private OcppTagService ocppTagService; - @Autowired private UserRepository userRepository; + private final OcppTagService ocppTagService; + private final UserRepository userRepository; private static final String PARAMS = "params"; From 1769bcff29d14b230d9134d4fa46946009e40547 Mon Sep 17 00:00:00 2001 From: Julien Herr Date: Tue, 29 Aug 2023 15:37:47 +0200 Subject: [PATCH 2/4] fix: Remove cycling dependency --- .../ChargePointService12_InvokerImpl.java | 6 ++- .../ChargePointService15_InvokerImpl.java | 6 ++- .../ChargePointService16_InvokerImpl.java | 6 ++- .../ocpp/ws/AbstractWebSocketEndpoint.java | 26 ++-------- .../ocpp/ws/ChargePointServiceInvoker.java | 4 +- .../ocpp/ws/SessionContextStoreFactory.java | 45 +++++++++++++++++ .../ws/ocpp12/Ocpp12WebSocketEndpoint.java | 6 ++- .../ws/ocpp15/Ocpp15WebSocketEndpoint.java | 6 ++- .../ws/ocpp16/Ocpp16WebSocketEndpoint.java | 6 ++- .../service/ChargePointHelperService.java | 50 +++++++++---------- 10 files changed, 98 insertions(+), 63 deletions(-) create mode 100644 src/main/java/de/rwth/idsg/steve/ocpp/ws/SessionContextStoreFactory.java diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java index 0260180b6..9da4223ca 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java @@ -30,11 +30,13 @@ import de.rwth.idsg.steve.ocpp.task.UnlockConnectorTask; import de.rwth.idsg.steve.ocpp.task.UpdateFirmwareTask; import de.rwth.idsg.steve.ocpp.ws.ChargePointServiceInvoker; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.ocpp12.Ocpp12TypeStore; import de.rwth.idsg.steve.ocpp.ws.ocpp12.Ocpp12WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2010._08.ChargePointService; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; /** @@ -47,8 +49,8 @@ public class ChargePointService12_InvokerImpl implements ChargePointService12_In private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - public ChargePointService12_InvokerImpl(OutgoingCallPipeline pipeline, Ocpp12WebSocketEndpoint endpoint, ClientProvider clientProvider) { - this.wsHelper = new ChargePointServiceInvoker(pipeline, endpoint, Ocpp12TypeStore.INSTANCE); + public ChargePointService12_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore, ClientProvider clientProvider) { + this.wsHelper = new ChargePointServiceInvoker(pipeline, sessionContextStore, Ocpp12TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java index a312581b7..b146131fd 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java @@ -36,11 +36,13 @@ import de.rwth.idsg.steve.ocpp.task.UnlockConnectorTask; import de.rwth.idsg.steve.ocpp.task.UpdateFirmwareTask; import de.rwth.idsg.steve.ocpp.ws.ChargePointServiceInvoker; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.ocpp15.Ocpp15TypeStore; import de.rwth.idsg.steve.ocpp.ws.ocpp15.Ocpp15WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2012._06.ChargePointService; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; /** @@ -53,8 +55,8 @@ public class ChargePointService15_InvokerImpl implements ChargePointService15_In private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - public ChargePointService15_InvokerImpl(OutgoingCallPipeline pipeline, Ocpp15WebSocketEndpoint endpoint, ClientProvider clientProvider) { - this.wsHelper = new ChargePointServiceInvoker(pipeline, endpoint, Ocpp15TypeStore.INSTANCE); + public ChargePointService15_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore, ClientProvider clientProvider) { + this.wsHelper = new ChargePointServiceInvoker(pipeline, sessionContextStore, Ocpp15TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java index 6d0ca7527..8b1375767 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java @@ -22,11 +22,13 @@ import de.rwth.idsg.steve.ocpp.soap.ClientProviderWithCache; import de.rwth.idsg.steve.ocpp.task.*; import de.rwth.idsg.steve.ocpp.ws.ChargePointServiceInvoker; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.ocpp16.Ocpp16TypeStore; import de.rwth.idsg.steve.ocpp.ws.ocpp16.Ocpp16WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2015._10.ChargePointService; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; /** @@ -39,8 +41,8 @@ public class ChargePointService16_InvokerImpl implements ChargePointService16_In private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - public ChargePointService16_InvokerImpl(OutgoingCallPipeline pipeline, Ocpp16WebSocketEndpoint endpoint, ClientProvider clientProvider) { - this.wsHelper = new ChargePointServiceInvoker(pipeline, endpoint, Ocpp16TypeStore.INSTANCE); + public ChargePointService16_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore, ClientProvider clientProvider) { + this.wsHelper = new ChargePointServiceInvoker(pipeline, sessionContextStore, Ocpp16TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java index 53a15901b..7b321e212 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java @@ -60,17 +60,18 @@ public abstract class AbstractWebSocketEndpoint extends ConcurrentWebSocketHandl private final ScheduledExecutorService service; private final OcppServerRepository ocppServerRepository; private final FutureResponseContextStore futureResponseContextStore; - private final SessionContextStore sessionContextStore = new SessionContextStore(); + private final SessionContextStore sessionContextStore; private final List> connectedCallbackList = new ArrayList<>(); private final List> disconnectedCallbackList = new ArrayList<>(); private final Object sessionContextLock = new Object(); private final IncomingPipeline pipeline; - public AbstractWebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, AbstractCallHandler server, AbstractTypeStore store) { + public AbstractWebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, AbstractCallHandler server, AbstractTypeStore store, SessionContextStore sessionContextStore) { this.service = service; this.ocppServerRepository = ocppServerRepository; this.futureResponseContextStore = futureResponseContextStore; + this.sessionContextStore = sessionContextStore; Deserializer deserializer = new Deserializer(futureResponseContextStore, store); this.pipeline = new IncomingPipeline(deserializer, server); @@ -195,28 +196,7 @@ protected String getChargeBoxId(WebSocketSession session) { return (String) session.getAttributes().get(CHARGEBOX_ID_KEY); } - protected void registerConnectedCallback(Consumer consumer) { - connectedCallbackList.add(consumer); - } - - protected void registerDisconnectedCallback(Consumer consumer) { - disconnectedCallbackList.add(consumer); - } - - public List getChargeBoxIdList() { - return sessionContextStore.getChargeBoxIdList(); - } - - public int getNumberOfChargeBoxes() { - return sessionContextStore.getNumberOfChargeBoxes(); - } - - public Map> getACopy() { - return sessionContextStore.getACopy(); - } - public WebSocketSession getSession(String chargeBoxId) { return sessionContextStore.getSession(chargeBoxId); } - } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java index 2831b2081..b3c8be990 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java @@ -41,7 +41,7 @@ public class ChargePointServiceInvoker { private final OutgoingCallPipeline outgoingCallPipeline; - private final AbstractWebSocketEndpoint endpoint; + private final SessionContextStore sessionContextStore; private final TypeStore typeStore; /** @@ -76,7 +76,7 @@ private void run(String chargeBoxId, CommunicationTask task) { FutureResponseContext frc = new FutureResponseContext(task, pair.getResponseClass()); - CommunicationContext context = new CommunicationContext(endpoint.getSession(chargeBoxId), chargeBoxId); + CommunicationContext context = new CommunicationContext(sessionContextStore.getSession(chargeBoxId), chargeBoxId); context.setOutgoingMessage(call); context.setFutureResponseContext(frc); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/SessionContextStoreFactory.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/SessionContextStoreFactory.java new file mode 100644 index 000000000..178d96882 --- /dev/null +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/SessionContextStoreFactory.java @@ -0,0 +1,45 @@ +/* + * SteVe - SteckdosenVerwaltung - https://github.com/steve-community/steve + * Copyright (C) 2013-2023 SteVe Community Team + * All Rights Reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.rwth.idsg.steve.ocpp.ws; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SessionContextStoreFactory { + + @Bean + @Qualifier("sessionContextStore12") + public SessionContextStore sessionContextStore12() { + return new SessionContextStore(); + } + + @Bean + @Qualifier("sessionContextStore15") + public SessionContextStore sessionContextStore15() { + return new SessionContextStore(); + } + + @Bean + @Qualifier("sessionContextStore16") + public SessionContextStore sessionContextStore16() { + return new SessionContextStore(); + } +} diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java index b2525906d..1ce792407 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java @@ -26,6 +26,7 @@ import de.rwth.idsg.steve.ocpp.ws.AbstractTypeStore; import de.rwth.idsg.steve.ocpp.ws.AbstractWebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; @@ -41,6 +42,7 @@ import ocpp.cs._2010._08.StartTransactionRequest; import ocpp.cs._2010._08.StatusNotificationRequest; import ocpp.cs._2010._08.StopTransactionRequest; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; @@ -53,8 +55,8 @@ @Component public class Ocpp12WebSocketEndpoint extends AbstractWebSocketEndpoint { - public Ocpp12WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService12_SoapServer server) { - super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp12CallHandler(server), Ocpp12TypeStore.INSTANCE); + public Ocpp12WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService12_SoapServer server, @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore) { + super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp12CallHandler(server), Ocpp12TypeStore.INSTANCE, sessionContextStore); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java index c44f5b376..3168000d3 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java @@ -25,6 +25,7 @@ import de.rwth.idsg.steve.ocpp.soap.CentralSystemService15_SoapServer; import de.rwth.idsg.steve.ocpp.ws.AbstractWebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; @@ -40,6 +41,7 @@ import ocpp.cs._2012._06.StartTransactionRequest; import ocpp.cs._2012._06.StatusNotificationRequest; import ocpp.cs._2012._06.StopTransactionRequest; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; @@ -51,8 +53,8 @@ */ @Component public class Ocpp15WebSocketEndpoint extends AbstractWebSocketEndpoint { - public Ocpp15WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService15_SoapServer server) { - super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp15CallHandler(server), Ocpp15TypeStore.INSTANCE); + public Ocpp15WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService15_SoapServer server, @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore) { + super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp15CallHandler(server), Ocpp15TypeStore.INSTANCE, sessionContextStore); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java index 56fdac743..20f5cd3f7 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java @@ -25,6 +25,7 @@ import de.rwth.idsg.steve.ocpp.soap.CentralSystemService16_SoapServer; import de.rwth.idsg.steve.ocpp.ws.AbstractWebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; @@ -40,6 +41,7 @@ import ocpp.cs._2015._10.StartTransactionRequest; import ocpp.cs._2015._10.StatusNotificationRequest; import ocpp.cs._2015._10.StopTransactionRequest; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; @@ -51,8 +53,8 @@ */ @Component public class Ocpp16WebSocketEndpoint extends AbstractWebSocketEndpoint { - public Ocpp16WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService16_SoapServer server) { - super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp16CallHandler(server), Ocpp16TypeStore.INSTANCE); + public Ocpp16WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService16_SoapServer server, @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore) { + super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp16CallHandler(server), Ocpp16TypeStore.INSTANCE, sessionContextStore); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java index e067be2a0..bc7e5622a 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java @@ -22,11 +22,8 @@ import de.rwth.idsg.steve.ocpp.OcppProtocol; import de.rwth.idsg.steve.ocpp.OcppTransport; import de.rwth.idsg.steve.ocpp.OcppVersion; -import de.rwth.idsg.steve.ocpp.ws.AbstractWebSocketEndpoint; +import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.data.SessionContext; -import de.rwth.idsg.steve.ocpp.ws.ocpp12.Ocpp12WebSocketEndpoint; -import de.rwth.idsg.steve.ocpp.ws.ocpp15.Ocpp15WebSocketEndpoint; -import de.rwth.idsg.steve.ocpp.ws.ocpp16.Ocpp16WebSocketEndpoint; import de.rwth.idsg.steve.repository.ChargePointRepository; import de.rwth.idsg.steve.repository.GenericRepository; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; @@ -40,6 +37,7 @@ import lombok.extern.slf4j.Slf4j; import ocpp.cs._2015._10.RegistrationStatus; import org.joda.time.DateTime; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -75,20 +73,20 @@ public class ChargePointHelperService { private final ChargePointRepository chargePointRepository; // For WebSocket-based charge points, the active sessions are stored in memory - private final Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint; - private final Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint; - private final Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint; + private final SessionContextStore sessionContextStore12; + private final SessionContextStore sessionContextStore15; + private final SessionContextStore sessionContextStore16; private final UnidentifiedIncomingObjectService unknownChargePointService = new UnidentifiedIncomingObjectService(100); - public ChargePointHelperService(GenericRepository genericRepository, ChargePointRepository chargePointRepository, Ocpp12WebSocketEndpoint ocpp12WebSocketEndpoint, Ocpp15WebSocketEndpoint ocpp15WebSocketEndpoint, Ocpp16WebSocketEndpoint ocpp16WebSocketEndpoint) { + public ChargePointHelperService(GenericRepository genericRepository, ChargePointRepository chargePointRepository, @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore12, @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore15, @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore16) { this.autoRegisterUnknownStations = CONFIG.getOcpp().isAutoRegisterUnknownStations(); this.isRegisteredLocks = Striped.lock(16); this.genericRepository = genericRepository; this.chargePointRepository = chargePointRepository; - this.ocpp12WebSocketEndpoint = ocpp12WebSocketEndpoint; - this.ocpp15WebSocketEndpoint = ocpp15WebSocketEndpoint; - this.ocpp16WebSocketEndpoint = ocpp16WebSocketEndpoint; + this.sessionContextStore12 = sessionContextStore12; + this.sessionContextStore15 = sessionContextStore15; + this.sessionContextStore16 = sessionContextStore16; } public Optional getRegistrationStatus(String chargeBoxId) { @@ -107,9 +105,9 @@ public Optional getRegistrationStatus(String chargeBoxId) { public Statistics getStats() { Statistics stats = genericRepository.getStats(); - stats.setNumOcpp12JChargeBoxes(ocpp12WebSocketEndpoint.getNumberOfChargeBoxes()); - stats.setNumOcpp15JChargeBoxes(ocpp15WebSocketEndpoint.getNumberOfChargeBoxes()); - stats.setNumOcpp16JChargeBoxes(ocpp16WebSocketEndpoint.getNumberOfChargeBoxes()); + stats.setNumOcpp12JChargeBoxes(sessionContextStore12.getNumberOfChargeBoxes()); + stats.setNumOcpp15JChargeBoxes(sessionContextStore15.getNumberOfChargeBoxes()); + stats.setNumOcpp16JChargeBoxes(sessionContextStore16.getNumberOfChargeBoxes()); List latestList = chargePointRepository.getChargePointConnectorStatus(); stats.setStatusCountMap(ConnectorStatusCountFilter.getStatusCountMap(latestList)); @@ -118,9 +116,9 @@ public Statistics getStats() { } public List getChargePointConnectorStatus(ConnectorStatusForm params) { - Map> ocpp12Map = ocpp12WebSocketEndpoint.getACopy(); - Map> ocpp15Map = ocpp15WebSocketEndpoint.getACopy(); - Map> ocpp16Map = ocpp16WebSocketEndpoint.getACopy(); + Map> ocpp12Map = sessionContextStore12.getACopy(); + Map> ocpp15Map = sessionContextStore15.getACopy(); + Map> ocpp16Map = sessionContextStore16.getACopy(); Set connectedJsonChargeBoxIds = new HashSet<>(extractIds(Arrays.asList(ocpp12Map, ocpp15Map, ocpp16Map))); @@ -140,9 +138,9 @@ public List getChargePointConnectorStatus(ConnectorStatusForm p } public List getOcppJsonStatus() { - Map> ocpp12Map = ocpp12WebSocketEndpoint.getACopy(); - Map> ocpp15Map = ocpp15WebSocketEndpoint.getACopy(); - Map> ocpp16Map = ocpp16WebSocketEndpoint.getACopy(); + Map> ocpp12Map = sessionContextStore12.getACopy(); + Map> ocpp15Map = sessionContextStore15.getACopy(); + Map> ocpp16Map = sessionContextStore16.getACopy(); List idList = extractIds(Arrays.asList(ocpp12Map, ocpp15Map, ocpp16Map)); Map primaryKeyLookup = chargePointRepository.getChargeBoxIdPkPair(idList); @@ -171,11 +169,11 @@ public List getChargePointsWithIds(OcppVersion version, List< public List getChargePoints(OcppVersion version, List inStatusFilter, List chargeBoxIdFilter) { switch (version) { case V_12: - return getChargePoints(OcppProtocol.V_12_SOAP, inStatusFilter, chargeBoxIdFilter, ocpp12WebSocketEndpoint); + return getChargePoints(OcppProtocol.V_12_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore12); case V_15: - return getChargePoints(OcppProtocol.V_15_SOAP, inStatusFilter, chargeBoxIdFilter, ocpp15WebSocketEndpoint); + return getChargePoints(OcppProtocol.V_15_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore15); case V_16: - return getChargePoints(OcppProtocol.V_16_SOAP, inStatusFilter, chargeBoxIdFilter, ocpp16WebSocketEndpoint); + return getChargePoints(OcppProtocol.V_16_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore16); default: throw new IllegalArgumentException("Unknown OCPP version: " + version); } @@ -223,7 +221,7 @@ private Optional getRegistrationStatusInternal(String charge } private List getChargePoints(OcppProtocol protocol, List inStatusFilter, - List chargeBoxIdFilter, AbstractWebSocketEndpoint jsonEndpoint) { + List chargeBoxIdFilter, SessionContextStore sessionContextStore) { // soap stations // List statusFilter = inStatusFilter.stream() @@ -235,8 +233,8 @@ private List getChargePoints(OcppProtocol protocol, List chargeBoxIdList = CollectionUtils.isEmpty(chargeBoxIdFilter) - ? jsonEndpoint.getChargeBoxIdList() - : jsonEndpoint.getChargeBoxIdList().stream().filter(chargeBoxIdFilter::contains).collect(Collectors.toList()); + ? sessionContextStore.getChargeBoxIdList() + : sessionContextStore.getChargeBoxIdList().stream().filter(chargeBoxIdFilter::contains).collect(Collectors.toList()); for (String chargeBoxId : chargeBoxIdList) { returnList.add(new ChargePointSelect(OcppTransport.JSON, chargeBoxId)); From c975c63658a264b2bbfc5b4b6a168142f9803836 Mon Sep 17 00:00:00 2001 From: Julien Herr Date: Tue, 29 Aug 2023 15:58:07 +0200 Subject: [PATCH 3/4] fix: Create ocpp services at startup --- .../idsg/steve/config/OcppConfiguration.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java b/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java index 22ee0994b..5383c3156 100644 --- a/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java +++ b/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java @@ -34,6 +34,10 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.context.event.ContextStartedEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; import java.util.Collection; import java.util.Collections; @@ -56,10 +60,24 @@ public class OcppConfiguration { LogUtils.setLoggerClass(Slf4jLogger.class); } + private final CentralSystemService ocpp12Server; + private final ocpp.cs._2012._06.CentralSystemService ocpp15Server; + private final ocpp.cs._2015._10.CentralSystemService ocpp16Server; + private final List> interceptors; + private final List logging; + private final String routerEndpointPath; + public OcppConfiguration(CentralSystemService ocpp12Server, ocpp.cs._2012._06.CentralSystemService ocpp15Server, ocpp.cs._2015._10.CentralSystemService ocpp16Server, @Qualifier("MessageHeaderInterceptor") PhaseInterceptor messageHeaderInterceptor) { - List> interceptors = asList(new MessageIdInterceptor(), messageHeaderInterceptor); - List logging = singletonList(LoggingFeatureProxy.INSTANCE.get()); + this.ocpp12Server = ocpp12Server; + this.ocpp15Server = ocpp15Server; + this.ocpp16Server = ocpp16Server; + this.interceptors = asList(new MessageIdInterceptor(), messageHeaderInterceptor); + this.logging = singletonList(LoggingFeatureProxy.INSTANCE.get()); + this.routerEndpointPath = CONFIG.getRouterEndpointPath(); + } + @EventListener + public void afterStart(ContextRefreshedEvent event) { createOcppService(ocpp12Server, "/CentralSystemServiceOCPP12", interceptors, logging); createOcppService(ocpp15Server, "/CentralSystemServiceOCPP15", interceptors, logging); createOcppService(ocpp16Server, "/CentralSystemServiceOCPP16", interceptors, logging); @@ -68,7 +86,7 @@ public OcppConfiguration(CentralSystemService ocpp12Server, ocpp.cs._2012._06.Ce // one to be created, since in MediatorInInterceptor we go over created/registered services and build a map. // List> mediator = singletonList(new MediatorInInterceptor(springBus())); - createOcppService(ocpp12Server, CONFIG.getRouterEndpointPath(), mediator, Collections.emptyList()); + createOcppService(ocpp12Server, routerEndpointPath, mediator, Collections.emptyList()); } @Bean(name = Bus.DEFAULT_BUS_ID, destroyMethod = "shutdown") From a4dbd537b9d17be1b3af0475127724a90c5ac5d0 Mon Sep 17 00:00:00 2001 From: Julien Herr Date: Wed, 30 Aug 2023 10:48:15 +0200 Subject: [PATCH 4/4] chore: fix checkstyle issues --- .../idsg/steve/config/OcppConfiguration.java | 9 +- .../ChargePointService12_InvokerImpl.java | 44 +++++++--- .../ChargePointService15_InvokerImpl.java | 8 +- .../ChargePointService16_InvokerImpl.java | 84 ++++++++++++++----- .../ocpp/soap/MessageHeaderInterceptor.java | 6 +- .../ocpp/ws/AbstractWebSocketEndpoint.java | 21 +++-- .../ocpp/ws/ChargePointServiceInvoker.java | 4 +- .../ws/ocpp12/Ocpp12WebSocketEndpoint.java | 26 ++++-- .../ws/ocpp15/Ocpp15WebSocketEndpoint.java | 25 ++++-- .../ws/ocpp16/Ocpp16WebSocketEndpoint.java | 25 ++++-- .../service/ChargePointHelperService.java | 53 ++++++++---- .../service/ChargePointService12_Client.java | 25 ++++-- .../service/ChargePointService15_Client.java | 44 +++++----- .../service/ChargePointService16_Client.java | 32 +++---- .../web/controller/AjaxCallController.java | 6 +- .../web/controller/Ocpp12Controller.java | 14 +++- .../web/controller/Ocpp15Controller.java | 11 ++- .../web/controller/Ocpp16Controller.java | 19 ++++- .../web/controller/OcppTagsController.java | 2 +- 19 files changed, 328 insertions(+), 130 deletions(-) diff --git a/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java b/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java index 5383c3156..cf306c767 100644 --- a/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java +++ b/src/main/java/de/rwth/idsg/steve/config/OcppConfiguration.java @@ -35,9 +35,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.context.event.ContextStartedEvent; import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; import java.util.Collection; import java.util.Collections; @@ -67,7 +65,12 @@ public class OcppConfiguration { private final List logging; private final String routerEndpointPath; - public OcppConfiguration(CentralSystemService ocpp12Server, ocpp.cs._2012._06.CentralSystemService ocpp15Server, ocpp.cs._2015._10.CentralSystemService ocpp16Server, @Qualifier("MessageHeaderInterceptor") PhaseInterceptor messageHeaderInterceptor) { + public OcppConfiguration( + CentralSystemService ocpp12Server, + ocpp.cs._2012._06.CentralSystemService ocpp15Server, + ocpp.cs._2015._10.CentralSystemService ocpp16Server, + @Qualifier("MessageHeaderInterceptor") PhaseInterceptor messageHeaderInterceptor + ) { this.ocpp12Server = ocpp12Server; this.ocpp15Server = ocpp15Server; this.ocpp16Server = ocpp16Server; diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java index 9da4223ca..95b0e2aba 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService12_InvokerImpl.java @@ -32,7 +32,6 @@ import de.rwth.idsg.steve.ocpp.ws.ChargePointServiceInvoker; import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.ocpp12.Ocpp12TypeStore; -import de.rwth.idsg.steve.ocpp.ws.ocpp12.Ocpp12WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2010._08.ChargePointService; @@ -44,12 +43,17 @@ * @since 10.03.2018 */ @Service +@Qualifier("ChargePointService12_Invoker") public class ChargePointService12_InvokerImpl implements ChargePointService12_Invoker { private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - public ChargePointService12_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore, ClientProvider clientProvider) { + public ChargePointService12_InvokerImpl( + OutgoingCallPipeline pipeline, + @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore, + ClientProvider clientProvider + ) { this.wsHelper = new ChargePointServiceInvoker(pipeline, sessionContextStore, Ocpp12TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); } @@ -57,7 +61,9 @@ public ChargePointService12_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifie @Override public void reset(ChargePointSelect cp, ResetTask task) { if (cp.isSoap()) { - create(cp).resetAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).resetAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -66,7 +72,9 @@ public void reset(ChargePointSelect cp, ResetTask task) { @Override public void clearCache(ChargePointSelect cp, ClearCacheTask task) { if (cp.isSoap()) { - create(cp).clearCacheAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).clearCacheAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -75,7 +83,9 @@ public void clearCache(ChargePointSelect cp, ClearCacheTask task) { @Override public void getDiagnostics(ChargePointSelect cp, GetDiagnosticsTask task) { if (cp.isSoap()) { - create(cp).getDiagnosticsAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).getDiagnosticsAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -84,7 +94,9 @@ public void getDiagnostics(ChargePointSelect cp, GetDiagnosticsTask task) { @Override public void updateFirmware(ChargePointSelect cp, UpdateFirmwareTask task) { if (cp.isSoap()) { - create(cp).updateFirmwareAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).updateFirmwareAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -93,7 +105,9 @@ public void updateFirmware(ChargePointSelect cp, UpdateFirmwareTask task) { @Override public void unlockConnector(ChargePointSelect cp, UnlockConnectorTask task) { if (cp.isSoap()) { - create(cp).unlockConnectorAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).unlockConnectorAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -102,7 +116,9 @@ public void unlockConnector(ChargePointSelect cp, UnlockConnectorTask task) { @Override public void changeAvailability(ChargePointSelect cp, ChangeAvailabilityTask task) { if (cp.isSoap()) { - create(cp).changeAvailabilityAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).changeAvailabilityAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -111,7 +127,9 @@ public void changeAvailability(ChargePointSelect cp, ChangeAvailabilityTask task @Override public void changeConfiguration(ChargePointSelect cp, ChangeConfigurationTask task) { if (cp.isSoap()) { - create(cp).changeConfigurationAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).changeConfigurationAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -120,7 +138,9 @@ public void changeConfiguration(ChargePointSelect cp, ChangeConfigurationTask ta @Override public void remoteStartTransaction(ChargePointSelect cp, RemoteStartTransactionTask task) { if (cp.isSoap()) { - create(cp).remoteStartTransactionAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).remoteStartTransactionAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -129,7 +149,9 @@ public void remoteStartTransaction(ChargePointSelect cp, RemoteStartTransactionT @Override public void remoteStopTransaction(ChargePointSelect cp, RemoteStopTransactionTask task) { if (cp.isSoap()) { - create(cp).remoteStopTransactionAsync(task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId())); + create(cp).remoteStopTransactionAsync( + task.getOcpp12Request(), cp.getChargeBoxId(), task.getOcpp12Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java index b146131fd..0b8242f72 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService15_InvokerImpl.java @@ -38,7 +38,6 @@ import de.rwth.idsg.steve.ocpp.ws.ChargePointServiceInvoker; import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.ocpp15.Ocpp15TypeStore; -import de.rwth.idsg.steve.ocpp.ws.ocpp15.Ocpp15WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2012._06.ChargePointService; @@ -50,12 +49,17 @@ * @since 10.03.2018 */ @Service +@Qualifier("ChargePointService15_Invoker") public class ChargePointService15_InvokerImpl implements ChargePointService15_Invoker { private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - public ChargePointService15_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore, ClientProvider clientProvider) { + public ChargePointService15_InvokerImpl( + OutgoingCallPipeline pipeline, + @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore, + ClientProvider clientProvider + ) { this.wsHelper = new ChargePointServiceInvoker(pipeline, sessionContextStore, Ocpp15TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java index 8b1375767..080bf5f9c 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ChargePointService16_InvokerImpl.java @@ -24,7 +24,6 @@ import de.rwth.idsg.steve.ocpp.ws.ChargePointServiceInvoker; import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.ocpp16.Ocpp16TypeStore; -import de.rwth.idsg.steve.ocpp.ws.ocpp16.Ocpp16WebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.pipeline.OutgoingCallPipeline; import de.rwth.idsg.steve.repository.dto.ChargePointSelect; import ocpp.cp._2015._10.ChargePointService; @@ -36,12 +35,17 @@ * @since 13.03.2018 */ @Service +@Qualifier("ChargePointService16_Invoker") public class ChargePointService16_InvokerImpl implements ChargePointService16_Invoker { private final ChargePointServiceInvoker wsHelper; private final ClientProviderWithCache soapHelper; - public ChargePointService16_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore, ClientProvider clientProvider) { + public ChargePointService16_InvokerImpl( + OutgoingCallPipeline pipeline, + @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore, + ClientProvider clientProvider + ) { this.wsHelper = new ChargePointServiceInvoker(pipeline, sessionContextStore, Ocpp16TypeStore.INSTANCE); this.soapHelper = new ClientProviderWithCache<>(clientProvider); } @@ -49,7 +53,9 @@ public ChargePointService16_InvokerImpl(OutgoingCallPipeline pipeline, @Qualifie @Override public void clearChargingProfile(ChargePointSelect cp, ClearChargingProfileTask task) { if (cp.isSoap()) { - create(cp).clearChargingProfileAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).clearChargingProfileAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -58,7 +64,9 @@ public void clearChargingProfile(ChargePointSelect cp, ClearChargingProfileTask @Override public void setChargingProfile(ChargePointSelect cp, SetChargingProfileTask task) { if (cp.isSoap()) { - create(cp).setChargingProfileAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).setChargingProfileAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -67,7 +75,9 @@ public void setChargingProfile(ChargePointSelect cp, SetChargingProfileTask task @Override public void getCompositeSchedule(ChargePointSelect cp, GetCompositeScheduleTask task) { if (cp.isSoap()) { - create(cp).getCompositeScheduleAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).getCompositeScheduleAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -76,7 +86,9 @@ public void getCompositeSchedule(ChargePointSelect cp, GetCompositeScheduleTask @Override public void triggerMessage(ChargePointSelect cp, TriggerMessageTask task) { if (cp.isSoap()) { - create(cp).triggerMessageAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).triggerMessageAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -85,7 +97,9 @@ public void triggerMessage(ChargePointSelect cp, TriggerMessageTask task) { @Override public void reset(ChargePointSelect cp, ResetTask task) { if (cp.isSoap()) { - create(cp).resetAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).resetAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -94,7 +108,9 @@ public void reset(ChargePointSelect cp, ResetTask task) { @Override public void clearCache(ChargePointSelect cp, ClearCacheTask task) { if (cp.isSoap()) { - create(cp).clearCacheAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).clearCacheAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -103,7 +119,9 @@ public void clearCache(ChargePointSelect cp, ClearCacheTask task) { @Override public void getDiagnostics(ChargePointSelect cp, GetDiagnosticsTask task) { if (cp.isSoap()) { - create(cp).getDiagnosticsAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).getDiagnosticsAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -112,7 +130,9 @@ public void getDiagnostics(ChargePointSelect cp, GetDiagnosticsTask task) { @Override public void updateFirmware(ChargePointSelect cp, UpdateFirmwareTask task) { if (cp.isSoap()) { - create(cp).updateFirmwareAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).updateFirmwareAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -121,7 +141,9 @@ public void updateFirmware(ChargePointSelect cp, UpdateFirmwareTask task) { @Override public void unlockConnector(ChargePointSelect cp, UnlockConnectorTask task) { if (cp.isSoap()) { - create(cp).unlockConnectorAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).unlockConnectorAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); @@ -131,7 +153,9 @@ public void unlockConnector(ChargePointSelect cp, UnlockConnectorTask task) { @Override public void changeAvailability(ChargePointSelect cp, ChangeAvailabilityTask task) { if (cp.isSoap()) { - create(cp).changeAvailabilityAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).changeAvailabilityAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -140,7 +164,9 @@ public void changeAvailability(ChargePointSelect cp, ChangeAvailabilityTask task @Override public void changeConfiguration(ChargePointSelect cp, ChangeConfigurationTask task) { if (cp.isSoap()) { - create(cp).changeConfigurationAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).changeConfigurationAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -149,7 +175,9 @@ public void changeConfiguration(ChargePointSelect cp, ChangeConfigurationTask ta @Override public void remoteStartTransaction(ChargePointSelect cp, RemoteStartTransactionTask task) { if (cp.isSoap()) { - create(cp).remoteStartTransactionAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).remoteStartTransactionAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -158,7 +186,9 @@ public void remoteStartTransaction(ChargePointSelect cp, RemoteStartTransactionT @Override public void remoteStopTransaction(ChargePointSelect cp, RemoteStopTransactionTask task) { if (cp.isSoap()) { - create(cp).remoteStopTransactionAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).remoteStopTransactionAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -167,7 +197,9 @@ public void remoteStopTransaction(ChargePointSelect cp, RemoteStopTransactionTas @Override public void dataTransfer(ChargePointSelect cp, DataTransferTask task) { if (cp.isSoap()) { - create(cp).dataTransferAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).dataTransferAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -176,7 +208,9 @@ public void dataTransfer(ChargePointSelect cp, DataTransferTask task) { @Override public void getConfiguration(ChargePointSelect cp, GetConfigurationTask task) { if (cp.isSoap()) { - create(cp).getConfigurationAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).getConfigurationAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -185,7 +219,9 @@ public void getConfiguration(ChargePointSelect cp, GetConfigurationTask task) { @Override public void getLocalListVersion(ChargePointSelect cp, GetLocalListVersionTask task) { if (cp.isSoap()) { - create(cp).getLocalListVersionAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).getLocalListVersionAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -194,7 +230,9 @@ public void getLocalListVersion(ChargePointSelect cp, GetLocalListVersionTask ta @Override public void sendLocalList(ChargePointSelect cp, SendLocalListTask task) { if (cp.isSoap()) { - create(cp).sendLocalListAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).sendLocalListAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -203,7 +241,9 @@ public void sendLocalList(ChargePointSelect cp, SendLocalListTask task) { @Override public void reserveNow(ChargePointSelect cp, ReserveNowTask task) { if (cp.isSoap()) { - create(cp).reserveNowAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).reserveNowAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } @@ -212,7 +252,9 @@ public void reserveNow(ChargePointSelect cp, ReserveNowTask task) { @Override public void cancelReservation(ChargePointSelect cp, CancelReservationTask task) { if (cp.isSoap()) { - create(cp).cancelReservationAsync(task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId())); + create(cp).cancelReservationAsync( + task.getOcpp16Request(), cp.getChargeBoxId(), task.getOcpp16Handler(cp.getChargeBoxId()) + ); } else { runPipeline(cp, task); } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java b/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java index d971325c2..f7f8d4d7b 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/soap/MessageHeaderInterceptor.java @@ -66,7 +66,11 @@ public class MessageHeaderInterceptor extends AbstractPhaseInterceptor private static final String BOOT_OPERATION_NAME = "BootNotification"; private static final String CHARGEBOX_ID_HEADER = "ChargeBoxIdentity"; - public MessageHeaderInterceptor(OcppServerRepository ocppServerRepository, ChargePointHelperService chargePointHelperService, ScheduledExecutorService executorService) { + public MessageHeaderInterceptor( + OcppServerRepository ocppServerRepository, + ChargePointHelperService chargePointHelperService, + ScheduledExecutorService executorService + ) { super(Phase.PRE_INVOKE); this.ocppServerRepository = ocppServerRepository; this.chargePointHelperService = chargePointHelperService; diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java index 7b321e212..ccd2ebb0b 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java @@ -23,7 +23,6 @@ import de.rwth.idsg.steve.ocpp.OcppTransport; import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.ws.data.CommunicationContext; -import de.rwth.idsg.steve.ocpp.ws.data.SessionContext; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; @@ -42,9 +41,7 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.Deque; import java.util.List; -import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -67,7 +64,15 @@ public abstract class AbstractWebSocketEndpoint extends ConcurrentWebSocketHandl private final IncomingPipeline pipeline; - public AbstractWebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, AbstractCallHandler server, AbstractTypeStore store, SessionContextStore sessionContextStore) { + public AbstractWebSocketEndpoint( + ScheduledExecutorService service, + OcppServerRepository ocppServerRepository, + FutureResponseContextStore futureResponseContextStore, + ApplicationEventPublisher applicationEventPublisher, + AbstractCallHandler server, + AbstractTypeStore store, + SessionContextStore sessionContextStore + ) { this.service = service; this.ocppServerRepository = ocppServerRepository; this.futureResponseContextStore = futureResponseContextStore; @@ -75,8 +80,12 @@ public AbstractWebSocketEndpoint(ScheduledExecutorService service, OcppServerRep Deserializer deserializer = new Deserializer(futureResponseContextStore, store); this.pipeline = new IncomingPipeline(deserializer, server); - connectedCallbackList.add((chargeBoxId) -> applicationEventPublisher.publishEvent(new OcppStationWebSocketConnected(chargeBoxId))); - disconnectedCallbackList.add((chargeBoxId) -> applicationEventPublisher.publishEvent(new OcppStationWebSocketDisconnected(chargeBoxId))); + connectedCallbackList.add((chargeBoxId) -> + applicationEventPublisher.publishEvent(new OcppStationWebSocketConnected(chargeBoxId)) + ); + disconnectedCallbackList.add((chargeBoxId) -> + applicationEventPublisher.publishEvent(new OcppStationWebSocketDisconnected(chargeBoxId)) + ); } public abstract OcppVersion getVersion(); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java index b3c8be990..aabf4dca1 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ChargePointServiceInvoker.java @@ -76,7 +76,9 @@ private void run(String chargeBoxId, CommunicationTask task) { FutureResponseContext frc = new FutureResponseContext(task, pair.getResponseClass()); - CommunicationContext context = new CommunicationContext(sessionContextStore.getSession(chargeBoxId), chargeBoxId); + CommunicationContext context = new CommunicationContext( + sessionContextStore.getSession(chargeBoxId), chargeBoxId + ); context.setOutgoingMessage(call); context.setFutureResponseContext(frc); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java index 1ce792407..a1f4c5859 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp12/Ocpp12WebSocketEndpoint.java @@ -23,13 +23,10 @@ import de.rwth.idsg.steve.ocpp.OcppProtocol; import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.soap.CentralSystemService12_SoapServer; -import de.rwth.idsg.steve.ocpp.ws.AbstractTypeStore; import de.rwth.idsg.steve.ocpp.ws.AbstractWebSocketEndpoint; import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; -import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; -import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; import de.rwth.idsg.steve.repository.OcppServerRepository; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; @@ -55,8 +52,23 @@ @Component public class Ocpp12WebSocketEndpoint extends AbstractWebSocketEndpoint { - public Ocpp12WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService12_SoapServer server, @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore) { - super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp12CallHandler(server), Ocpp12TypeStore.INSTANCE, sessionContextStore); + public Ocpp12WebSocketEndpoint( + ScheduledExecutorService service, + OcppServerRepository ocppServerRepository, + FutureResponseContextStore futureResponseContextStore, + ApplicationEventPublisher applicationEventPublisher, + CentralSystemService12_SoapServer server, + @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore + ) { + super( + service, + ocppServerRepository, + futureResponseContextStore, + applicationEventPublisher, + new Ocpp12CallHandler(server), + Ocpp12TypeStore.INSTANCE, + sessionContextStore + ); } @Override @@ -74,7 +86,9 @@ protected ResponseType dispatch(RequestType params, String chargeBoxId) { ResponseType r; if (params instanceof BootNotificationRequest) { - r = server.bootNotificationWithTransport((BootNotificationRequest) params, chargeBoxId, OcppProtocol.V_12_JSON); + r = server.bootNotificationWithTransport( + (BootNotificationRequest) params, chargeBoxId, OcppProtocol.V_12_JSON + ); } else if (params instanceof FirmwareStatusNotificationRequest) { r = server.firmwareStatusNotification((FirmwareStatusNotificationRequest) params, chargeBoxId); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java index 3168000d3..01e85f713 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp15/Ocpp15WebSocketEndpoint.java @@ -27,8 +27,6 @@ import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; -import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; -import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; import de.rwth.idsg.steve.repository.OcppServerRepository; import lombok.RequiredArgsConstructor; import ocpp.cs._2012._06.AuthorizeRequest; @@ -53,8 +51,23 @@ */ @Component public class Ocpp15WebSocketEndpoint extends AbstractWebSocketEndpoint { - public Ocpp15WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService15_SoapServer server, @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore) { - super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp15CallHandler(server), Ocpp15TypeStore.INSTANCE, sessionContextStore); + public Ocpp15WebSocketEndpoint( + ScheduledExecutorService service, + OcppServerRepository ocppServerRepository, + FutureResponseContextStore futureResponseContextStore, + ApplicationEventPublisher applicationEventPublisher, + CentralSystemService15_SoapServer server, + @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore + ) { + super( + service, + ocppServerRepository, + futureResponseContextStore, + applicationEventPublisher, + new Ocpp15CallHandler(server), + Ocpp15TypeStore.INSTANCE, + sessionContextStore + ); } @Override @@ -72,7 +85,9 @@ protected ResponseType dispatch(RequestType params, String chargeBoxId) { ResponseType r; if (params instanceof BootNotificationRequest) { - r = server.bootNotificationWithTransport((BootNotificationRequest) params, chargeBoxId, OcppProtocol.V_15_JSON); + r = server.bootNotificationWithTransport( + (BootNotificationRequest) params, chargeBoxId, OcppProtocol.V_15_JSON + ); } else if (params instanceof FirmwareStatusNotificationRequest) { r = server.firmwareStatusNotification((FirmwareStatusNotificationRequest) params, chargeBoxId); diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java index 20f5cd3f7..9c3d42093 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/ws/ocpp16/Ocpp16WebSocketEndpoint.java @@ -27,8 +27,6 @@ import de.rwth.idsg.steve.ocpp.ws.FutureResponseContextStore; import de.rwth.idsg.steve.ocpp.ws.SessionContextStore; import de.rwth.idsg.steve.ocpp.ws.pipeline.AbstractCallHandler; -import de.rwth.idsg.steve.ocpp.ws.pipeline.Deserializer; -import de.rwth.idsg.steve.ocpp.ws.pipeline.IncomingPipeline; import de.rwth.idsg.steve.repository.OcppServerRepository; import lombok.RequiredArgsConstructor; import ocpp.cs._2015._10.AuthorizeRequest; @@ -53,8 +51,23 @@ */ @Component public class Ocpp16WebSocketEndpoint extends AbstractWebSocketEndpoint { - public Ocpp16WebSocketEndpoint(ScheduledExecutorService service, OcppServerRepository ocppServerRepository, FutureResponseContextStore futureResponseContextStore, ApplicationEventPublisher applicationEventPublisher, CentralSystemService16_SoapServer server, @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore) { - super(service, ocppServerRepository, futureResponseContextStore, applicationEventPublisher, new Ocpp16CallHandler(server), Ocpp16TypeStore.INSTANCE, sessionContextStore); + public Ocpp16WebSocketEndpoint( + ScheduledExecutorService service, + OcppServerRepository ocppServerRepository, + FutureResponseContextStore futureResponseContextStore, + ApplicationEventPublisher applicationEventPublisher, + CentralSystemService16_SoapServer server, + @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore + ) { + super( + service, + ocppServerRepository, + futureResponseContextStore, + applicationEventPublisher, + new Ocpp16CallHandler(server), + Ocpp16TypeStore.INSTANCE, + sessionContextStore + ); } @Override @@ -72,7 +85,9 @@ protected ResponseType dispatch(RequestType params, String chargeBoxId) { ResponseType r; if (params instanceof BootNotificationRequest) { - r = server.bootNotificationWithTransport((BootNotificationRequest) params, chargeBoxId, OcppProtocol.V_16_JSON); + r = server.bootNotificationWithTransport( + (BootNotificationRequest) params, chargeBoxId, OcppProtocol.V_16_JSON + ); } else if (params instanceof FirmwareStatusNotificationRequest) { r = server.firmwareStatusNotification((FirmwareStatusNotificationRequest) params, chargeBoxId); diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java index bc7e5622a..f395f5bf3 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointHelperService.java @@ -77,9 +77,15 @@ public class ChargePointHelperService { private final SessionContextStore sessionContextStore15; private final SessionContextStore sessionContextStore16; - private final UnidentifiedIncomingObjectService unknownChargePointService = new UnidentifiedIncomingObjectService(100); - - public ChargePointHelperService(GenericRepository genericRepository, ChargePointRepository chargePointRepository, @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore12, @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore15, @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore16) { + private final UnidentifiedIncomingObjectService unknownChargePointService; + + public ChargePointHelperService( + GenericRepository genericRepository, + ChargePointRepository chargePointRepository, + @Qualifier("sessionContextStore12") SessionContextStore sessionContextStore12, + @Qualifier("sessionContextStore15") SessionContextStore sessionContextStore15, + @Qualifier("sessionContextStore16") SessionContextStore sessionContextStore16 + ) { this.autoRegisterUnknownStations = CONFIG.getOcpp().isAutoRegisterUnknownStations(); this.isRegisteredLocks = Striped.lock(16); this.genericRepository = genericRepository; @@ -87,6 +93,7 @@ public ChargePointHelperService(GenericRepository genericRepository, ChargePoint this.sessionContextStore12 = sessionContextStore12; this.sessionContextStore15 = sessionContextStore15; this.sessionContextStore16 = sessionContextStore16; + this.unknownChargePointService = new UnidentifiedIncomingObjectService(100); } public Optional getRegistrationStatus(String chargeBoxId) { @@ -120,7 +127,8 @@ public List getChargePointConnectorStatus(ConnectorStatusForm p Map> ocpp15Map = sessionContextStore15.getACopy(); Map> ocpp16Map = sessionContextStore16.getACopy(); - Set connectedJsonChargeBoxIds = new HashSet<>(extractIds(Arrays.asList(ocpp12Map, ocpp15Map, ocpp16Map))); + Set connectedJsonChargeBoxIds + = new HashSet<>(extractIds(Arrays.asList(ocpp12Map, ocpp15Map, ocpp16Map))); List latestList = chargePointRepository.getChargePointConnectorStatus(params); @@ -155,7 +163,9 @@ public List getOcppJsonStatus() { } public List getChargePoints(OcppVersion version) { - return getChargePoints(version, Collections.singletonList(RegistrationStatus.ACCEPTED), Collections.emptyList()); + return getChargePoints( + version, Collections.singletonList(RegistrationStatus.ACCEPTED), Collections.emptyList() + ); } public List getChargePoints(OcppVersion version, List inStatusFilter) { @@ -166,14 +176,19 @@ public List getChargePointsWithIds(OcppVersion version, List< return getChargePoints(version, Collections.singletonList(RegistrationStatus.ACCEPTED), chargeBoxIdFilter); } - public List getChargePoints(OcppVersion version, List inStatusFilter, List chargeBoxIdFilter) { + public List getChargePoints( + OcppVersion version, List inStatusFilter, List chargeBoxIdFilter + ) { switch (version) { case V_12: - return getChargePoints(OcppProtocol.V_12_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore12); + return getChargePoints( + OcppProtocol.V_12_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore12); case V_15: - return getChargePoints(OcppProtocol.V_15_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore15); + return getChargePoints( + OcppProtocol.V_15_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore15); case V_16: - return getChargePoints(OcppProtocol.V_16_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore16); + return getChargePoints( + OcppProtocol.V_16_SOAP, inStatusFilter, chargeBoxIdFilter, sessionContextStore16); default: throw new IllegalArgumentException("Unknown OCPP version: " + version); } @@ -220,21 +235,29 @@ private Optional getRegistrationStatusInternal(String charge } } - private List getChargePoints(OcppProtocol protocol, List inStatusFilter, - List chargeBoxIdFilter, SessionContextStore sessionContextStore) { + private List getChargePoints(OcppProtocol protocol, + List inStatusFilter, + List chargeBoxIdFilter, + SessionContextStore sessionContextStore) { // soap stations // List statusFilter = inStatusFilter.stream() .map(RegistrationStatus::value) .collect(Collectors.toList()); - List returnList = chargePointRepository.getChargePointSelect(protocol, statusFilter, chargeBoxIdFilter); + List returnList = chargePointRepository.getChargePointSelect( + protocol, statusFilter, chargeBoxIdFilter + ); // json stations // - List chargeBoxIdList = CollectionUtils.isEmpty(chargeBoxIdFilter) - ? sessionContextStore.getChargeBoxIdList() - : sessionContextStore.getChargeBoxIdList().stream().filter(chargeBoxIdFilter::contains).collect(Collectors.toList()); + List chargeBoxIdList; + if (CollectionUtils.isEmpty(chargeBoxIdFilter)) { + chargeBoxIdList = sessionContextStore.getChargeBoxIdList(); + } else { + chargeBoxIdList = sessionContextStore.getChargeBoxIdList().stream() + .filter(chargeBoxIdFilter::contains).collect(Collectors.toList()); + } for (String chargeBoxId : chargeBoxIdList) { returnList.add(new ChargePointSelect(OcppTransport.JSON, chargeBoxId)); diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java index 252efd592..928d8ee8d 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointService12_Client.java @@ -19,7 +19,6 @@ package de.rwth.idsg.steve.service; import de.rwth.idsg.steve.ocpp.ChargePointService12_Invoker; -import de.rwth.idsg.steve.ocpp.ChargePointService12_InvokerImpl; import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.task.ChangeAvailabilityTask; import de.rwth.idsg.steve.ocpp.task.ChangeConfigurationTask; @@ -40,7 +39,8 @@ import de.rwth.idsg.steve.web.dto.ocpp.ResetParams; import de.rwth.idsg.steve.web.dto.ocpp.UnlockConnectorParams; import de.rwth.idsg.steve.web.dto.ocpp.UpdateFirmwareParams; -import lombok.RequiredArgsConstructor; +import lombok.AccessLevel; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -51,15 +51,26 @@ * @author Sevket Goekay */ @Slf4j -@RequiredArgsConstructor @Service @Qualifier("ChargePointService12_Client") public class ChargePointService12_Client { - protected final ScheduledExecutorService executorService; - protected final TaskStore taskStore; - - private final ChargePointService12_InvokerImpl invoker12; + @Getter(AccessLevel.PROTECTED) + private final ScheduledExecutorService executorService; + @Getter(AccessLevel.PROTECTED) + private final TaskStore taskStore; + + private final ChargePointService12_Invoker invoker12; + + public ChargePointService12_Client( + ScheduledExecutorService executorService, + TaskStore taskStore, + @Qualifier("ChargePointService12_Invoker") ChargePointService12_Invoker invoker12 + ) { + this.executorService = executorService; + this.taskStore = taskStore; + this.invoker12 = invoker12; + } protected OcppVersion getVersion() { return OcppVersion.V_12; diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java index 2ee3fed2e..c4538b260 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointService15_Client.java @@ -19,9 +19,7 @@ package de.rwth.idsg.steve.service; import de.rwth.idsg.steve.ocpp.ChargePointService12_Invoker; -import de.rwth.idsg.steve.ocpp.ChargePointService12_InvokerImpl; import de.rwth.idsg.steve.ocpp.ChargePointService15_Invoker; -import de.rwth.idsg.steve.ocpp.ChargePointService15_InvokerImpl; import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.task.CancelReservationTask; import de.rwth.idsg.steve.ocpp.task.DataTransferTask; @@ -56,13 +54,19 @@ @Qualifier("ChargePointService15_Client") public class ChargePointService15_Client extends ChargePointService12_Client { - protected final OcppTagService ocppTagService; - protected final ReservationRepository reservationRepository; + private final OcppTagService ocppTagService; + private final ReservationRepository reservationRepository; - private final ChargePointService15_InvokerImpl invoker15; + private final ChargePointService15_Invoker invoker15; - public ChargePointService15_Client(ScheduledExecutorService executorService, TaskStore taskStore, ChargePointService12_InvokerImpl invoker12, OcppTagService ocppTagService, ReservationRepository reservationRepository, ChargePointService15_InvokerImpl invoker15) { - super(executorService, taskStore, invoker12); + public ChargePointService15_Client( + ScheduledExecutorService executorService, + TaskStore taskStore, + @Qualifier("ChargePointService15_Invoker") ChargePointService15_Invoker invoker15, + OcppTagService ocppTagService, + ReservationRepository reservationRepository + ) { + super(executorService, taskStore, invoker15); this.ocppTagService = ocppTagService; this.reservationRepository = reservationRepository; this.invoker15 = invoker15; @@ -89,41 +93,41 @@ protected ChargePointService15_Invoker getOcpp15Invoker() { public int dataTransfer(DataTransferParams params) { DataTransferTask task = new DataTransferTask(getVersion(), params); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp15Invoker().dataTransfer(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int getConfiguration(GetConfigurationParams params) { GetConfigurationTask task = new GetConfigurationTask(getVersion(), params); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp15Invoker().getConfiguration(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int getLocalListVersion(MultipleChargePointSelect params) { GetLocalListVersionTask task = new GetLocalListVersionTask(getVersion(), params); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp15Invoker().getLocalListVersion(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int sendLocalList(SendLocalListParams params) { SendLocalListTask task = new SendLocalListTask(getVersion(), params, ocppTagService); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp15Invoker().sendLocalList(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } @@ -147,22 +151,20 @@ public int reserveNow(ReserveNowParams params) { EnhancedReserveNowParams enhancedParams = new EnhancedReserveNowParams(params, reservationId, parentIdTag); ReserveNowTask task = new ReserveNowTask(getVersion(), enhancedParams, reservationRepository); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forFirst(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp15Invoker().reserveNow(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int cancelReservation(CancelReservationParams params) { CancelReservationTask task = new CancelReservationTask(getVersion(), params, reservationRepository); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forFirst(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp15Invoker().cancelReservation(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } - - } diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java index 008b09bf0..c79a3626d 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointService16_Client.java @@ -20,11 +20,8 @@ import de.rwth.idsg.steve.SteveException; import de.rwth.idsg.steve.ocpp.ChargePointService12_Invoker; -import de.rwth.idsg.steve.ocpp.ChargePointService12_InvokerImpl; import de.rwth.idsg.steve.ocpp.ChargePointService15_Invoker; -import de.rwth.idsg.steve.ocpp.ChargePointService15_InvokerImpl; import de.rwth.idsg.steve.ocpp.ChargePointService16_Invoker; -import de.rwth.idsg.steve.ocpp.ChargePointService16_InvokerImpl; import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.ocpp.task.ClearChargingProfileTask; import de.rwth.idsg.steve.ocpp.task.GetCompositeScheduleTask; @@ -55,11 +52,18 @@ @Qualifier("ChargePointService16_Client") public class ChargePointService16_Client extends ChargePointService15_Client { - private final ChargePointService16_InvokerImpl invoker16; + private final ChargePointService16_Invoker invoker16; private final ChargingProfileRepository chargingProfileRepository; - public ChargePointService16_Client(ScheduledExecutorService executorService, TaskStore taskStore, ChargePointService12_InvokerImpl invoker12, OcppTagService ocppTagService, ReservationRepository reservationRepository, ChargePointService15_InvokerImpl invoker15, ChargePointService16_InvokerImpl invoker16, ChargingProfileRepository chargingProfileRepository) { - super(executorService, taskStore, invoker12, ocppTagService, reservationRepository, invoker15); + public ChargePointService16_Client( + ScheduledExecutorService executorService, + TaskStore taskStore, + @Qualifier("ChargePointService16_Invoker") ChargePointService16_Invoker invoker16, + OcppTagService ocppTagService, + ReservationRepository reservationRepository, + ChargingProfileRepository chargingProfileRepository + ) { + super(executorService, taskStore, invoker16, ocppTagService, reservationRepository); this.invoker16 = invoker16; this.chargingProfileRepository = chargingProfileRepository; } @@ -90,11 +94,11 @@ protected ChargePointService16_Invoker getOcpp16Invoker() { public int triggerMessage(TriggerMessageParams params) { TriggerMessageTask task = new TriggerMessageTask(getVersion(), params); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp16Invoker().triggerMessage(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int setChargingProfile(SetChargingProfileParams params) { @@ -105,31 +109,31 @@ public int setChargingProfile(SetChargingProfileParams params) { EnhancedSetChargingProfileParams enhancedParams = new EnhancedSetChargingProfileParams(params, details); SetChargingProfileTask task = new SetChargingProfileTask(getVersion(), enhancedParams, chargingProfileRepository); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp16Invoker().setChargingProfile(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int clearChargingProfile(ClearChargingProfileParams params) { ClearChargingProfileTask task = new ClearChargingProfileTask(getVersion(), params, chargingProfileRepository); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp16Invoker().clearChargingProfile(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } public int getCompositeSchedule(GetCompositeScheduleParams params) { GetCompositeScheduleTask task = new GetCompositeScheduleTask(getVersion(), params); - BackgroundService.with(executorService) + BackgroundService.with(getExecutorService()) .forEach(task.getParams().getChargePointSelectList()) .execute(c -> getOcpp16Invoker().getCompositeSchedule(c, task)); - return taskStore.add(task); + return getTaskStore().add(task); } /** diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java b/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java index a1146bc17..78025d1f4 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/AjaxCallController.java @@ -55,7 +55,11 @@ public class AjaxCallController { private final ObjectMapper objectMapper; - public AjaxCallController(ChargePointRepository chargePointRepository, TransactionRepository transactionRepository, ReservationRepository reservationRepository) { + public AjaxCallController( + ChargePointRepository chargePointRepository, + TransactionRepository transactionRepository, + ReservationRepository reservationRepository + ) { this.chargePointRepository = chargePointRepository; this.transactionRepository = transactionRepository; this.reservationRepository = reservationRepository; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java index 0543b7f96..ad27c7d25 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp12Controller.java @@ -33,6 +33,8 @@ import de.rwth.idsg.steve.web.dto.ocpp.ResetParams; import de.rwth.idsg.steve.web.dto.ocpp.UnlockConnectorParams; import de.rwth.idsg.steve.web.dto.ocpp.UpdateFirmwareParams; +import lombok.AccessLevel; +import lombok.Getter; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -54,12 +56,18 @@ @RequestMapping(value = "/manager/operations/v1.2") public class Ocpp12Controller { - protected final ChargePointHelperService chargePointHelperService; - protected final OcppTagService ocppTagService; + @Getter(AccessLevel.PROTECTED) + private final ChargePointHelperService chargePointHelperService; + @Getter(AccessLevel.PROTECTED) + private final OcppTagService ocppTagService; private final ChargePointService12_Client client12; - public Ocpp12Controller(ChargePointHelperService chargePointHelperService, OcppTagService ocppTagService, @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12) { + public Ocpp12Controller( + ChargePointHelperService chargePointHelperService, + OcppTagService ocppTagService, + @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12 + ) { this.chargePointHelperService = chargePointHelperService; this.ocppTagService = ocppTagService; this.client12 = client12; diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java index e325774b5..21ab5f730 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp15Controller.java @@ -54,7 +54,12 @@ public class Ocpp15Controller extends Ocpp12Controller { private final ChargePointService15_Client client15; - public Ocpp15Controller(ChargePointHelperService chargePointHelperService, OcppTagService ocppTagService, @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12, @Qualifier("ChargePointService15_Client") ChargePointService15_Client client15) { + public Ocpp15Controller( + ChargePointHelperService chargePointHelperService, + OcppTagService ocppTagService, + @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12, + @Qualifier("ChargePointService15_Client") ChargePointService15_Client client15 + ) { super(chargePointHelperService, ocppTagService, client12); this.client15 = client15; } @@ -85,7 +90,7 @@ protected ChargePointService12_Client getClient12() { @Override protected void setCommonAttributes(Model model) { - model.addAttribute("cpList", chargePointHelperService.getChargePoints(OcppVersion.V_15)); + model.addAttribute("cpList", getChargePointHelperService().getChargePoints(OcppVersion.V_15)); model.addAttribute("opVersion", "v1.5"); } @@ -106,7 +111,7 @@ protected String getPrefix() { } private void setAllUserIdTagList(Model model) { - model.addAttribute("idTagList", ocppTagService.getIdTags()); + model.addAttribute("idTagList", getOcppTagService().getIdTags()); } // ------------------------------------------------------------------------- diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java index 36017dd12..688886cd5 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/Ocpp16Controller.java @@ -20,7 +20,11 @@ import de.rwth.idsg.steve.ocpp.OcppVersion; import de.rwth.idsg.steve.repository.ChargingProfileRepository; -import de.rwth.idsg.steve.service.*; +import de.rwth.idsg.steve.service.ChargePointHelperService; +import de.rwth.idsg.steve.service.ChargePointService12_Client; +import de.rwth.idsg.steve.service.ChargePointService15_Client; +import de.rwth.idsg.steve.service.ChargePointService16_Client; +import de.rwth.idsg.steve.service.OcppTagService; import de.rwth.idsg.steve.web.dto.ocpp.ChangeConfigurationParams; import de.rwth.idsg.steve.web.dto.ocpp.ClearChargingProfileParams; import de.rwth.idsg.steve.web.dto.ocpp.ConfigurationKeyEnum; @@ -68,7 +72,14 @@ public class Ocpp16Controller extends Ocpp15Controller { private static final String SET_CHARGING_PATH = "/SetChargingProfile"; private static final String TRIGGER_MESSAGE_PATH = "/TriggerMessage"; - public Ocpp16Controller(ChargePointHelperService chargePointHelperService, OcppTagService ocppTagService, @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12, @Qualifier("ChargePointService15_Client") ChargePointService15_Client client15, @Qualifier("ChargePointService16_Client") ChargePointService16_Client client16, ChargingProfileRepository chargingProfileRepository) { + public Ocpp16Controller( + ChargePointHelperService chargePointHelperService, + OcppTagService ocppTagService, + @Qualifier("ChargePointService12_Client") ChargePointService12_Client client12, + @Qualifier("ChargePointService15_Client") ChargePointService15_Client client15, + @Qualifier("ChargePointService16_Client") ChargePointService16_Client client16, + ChargingProfileRepository chargingProfileRepository + ) { super(chargePointHelperService, ocppTagService, client12, client15); this.client16 = client16; this.chargingProfileRepository = chargingProfileRepository; @@ -94,7 +105,7 @@ protected ChargePointService12_Client getClient12() { @Override protected void setCommonAttributesForTx(Model model) { - model.addAttribute("cpList", chargePointHelperService.getChargePoints(OcppVersion.V_16)); + model.addAttribute("cpList", getChargePointHelperService().getChargePoints(OcppVersion.V_16)); model.addAttribute("opVersion", "v1.6"); } @@ -108,7 +119,7 @@ protected void setCommonAttributesForTx(Model model) { @Override protected void setCommonAttributes(Model model) { List inStatusFilter = Arrays.asList(RegistrationStatus.ACCEPTED, RegistrationStatus.PENDING); - model.addAttribute("cpList", chargePointHelperService.getChargePoints(OcppVersion.V_16, inStatusFilter)); + model.addAttribute("cpList", getChargePointHelperService().getChargePoints(OcppVersion.V_16, inStatusFilter)); model.addAttribute("opVersion", "v1.6"); } diff --git a/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java b/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java index 47c5bab84..3276ce23c 100644 --- a/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java +++ b/src/main/java/de/rwth/idsg/steve/web/controller/OcppTagsController.java @@ -46,7 +46,7 @@ @RequestMapping(value = "/manager/ocppTags") public class OcppTagsController { - protected final OcppTagService ocppTagService; + private final OcppTagService ocppTagService; protected static final String PARAMS = "params";