From 67b6644fd590ffc72d10ff8cdcb4087dfbdf5dc3 Mon Sep 17 00:00:00 2001 From: David Keen Date: Wed, 13 Nov 2024 21:40:11 +1100 Subject: [PATCH] Release 3.4.5: Remove unused web endpoints --- pom.xml | 3 +- .../solcast/forecast/ForecastPersister.java | 6 ++-- .../measurement/MeasurementUploader.java | 22 ------------- src/main/resources/application.properties | 5 ++- .../measurement/MeasurementUploaderTest.java | 33 ------------------- 5 files changed, 7 insertions(+), 62 deletions(-) diff --git a/pom.xml b/pom.xml index e6a9277..aafa358 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ org.keen solar - 3.4.4 + 3.4.5 solar Retrieves solar data from a Fronius inverter and persists it to a data store. @@ -104,7 +104,6 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.0.0 diff --git a/src/main/java/org/keen/solar/solcast/forecast/ForecastPersister.java b/src/main/java/org/keen/solar/solcast/forecast/ForecastPersister.java index d758342..86d9724 100644 --- a/src/main/java/org/keen/solar/solcast/forecast/ForecastPersister.java +++ b/src/main/java/org/keen/solar/solcast/forecast/ForecastPersister.java @@ -6,8 +6,7 @@ import org.springframework.context.annotation.Profile; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.stereotype.Service; import java.util.List; @@ -15,7 +14,7 @@ * Retrieves the solar panel output forecasts and persists them */ @Profile("!test") -@RestController +@Service public class ForecastPersister { @Autowired @@ -30,7 +29,6 @@ public void retrieveAndPersistAsync() { retrieveAndPersist(); } - @PostMapping("/forecast/retrieve") public void retrieveAndPersist() { List forecasts = retriever.retrieve(); // Retrieve the id for any existing forecast for the same period so that it gets updated in the database, diff --git a/src/main/java/org/keen/solar/solcast/measurement/MeasurementUploader.java b/src/main/java/org/keen/solar/solcast/measurement/MeasurementUploader.java index cd71566..3fd6c87 100644 --- a/src/main/java/org/keen/solar/solcast/measurement/MeasurementUploader.java +++ b/src/main/java/org/keen/solar/solcast/measurement/MeasurementUploader.java @@ -9,12 +9,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.*; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import java.time.*; @@ -27,7 +23,6 @@ * See Solcast API */ @Service -@RestController public class MeasurementUploader { private final Logger logger = LoggerFactory.getLogger(MeasurementUploader.class); @@ -49,23 +44,6 @@ public MeasurementUploader(RestTemplateBuilder restTemplateBuilder, CurrentPower this.repository = repository; } - /** - * Uploads all measurements not yet uploaded to Solcast within the specified date range - * - * @param start start date (inclusive) - * @param end end date (exclusive) - */ - @PostMapping("/upload") - public void uploadByDateRange(@RequestParam("start") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate start, - @RequestParam("end") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate end) { - long startTimestamp = start.atStartOfDay(ZoneOffset.UTC).toEpochSecond(); - long endTimestamp = end.atStartOfDay(ZoneOffset.UTC).toEpochSecond(); - logger.info(String.format("Retrieving power generation not yet uploaded between %s (%d) and %s (%d)", - start.toString(), startTimestamp, end.toString(), endTimestamp)); - List currentPowerNotUploaded = repository.findByUploadedAndEpochTimestampBetween(false, startTimestamp, endTimestamp); - doUpload(currentPowerNotUploaded); - } - /** * Uploads all measurements not yet uploaded to Solcast */ diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e5f088c..2b7cc3a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -47,4 +47,7 @@ spring.jackson.deserialization.ADJUST_DATES_TO_CONTEXT_TIME_ZONE=false # Enable virtual threads spring.threads.virtual.enabled=true -spring.main.keep-alive=true \ No newline at end of file +spring.main.keep-alive=true + +# Disable web server +spring.main.web-application-type=none \ No newline at end of file diff --git a/src/test/java/org/keen/solar/solcast/measurement/MeasurementUploaderTest.java b/src/test/java/org/keen/solar/solcast/measurement/MeasurementUploaderTest.java index 5ae1918..f8df4aa 100644 --- a/src/test/java/org/keen/solar/solcast/measurement/MeasurementUploaderTest.java +++ b/src/test/java/org/keen/solar/solcast/measurement/MeasurementUploaderTest.java @@ -1,11 +1,8 @@ package org.keen.solar.solcast.measurement; import org.junit.jupiter.api.Test; -import org.keen.solar.system.dal.CurrentPowerRepository; import org.keen.solar.system.domain.CurrentPower; import org.keen.solar.solcast.measurement.domain.Measurement; -import org.mockito.ArgumentCaptor; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.util.Assert; import java.time.*; @@ -17,9 +14,6 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.stream.DoubleStream; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - public class MeasurementUploaderTest { @Test @@ -81,33 +75,6 @@ public void givenTwentyMinutesOfCurrentPower_whenConvertToMeasurements_thenConve } } - @Test - public void givenDateRange_whenUploadByDateRange_thenCorrectDateRangePassedToRepository() { - // Given - LocalDate startDate = LocalDate.of(2020, 7, 18); - LocalDate endDate = LocalDate.of(2020, 7, 19); - long startDateInUTCEpochSeconds = 1595030400L; - long endDateInUTCEpochSeconds = 1595116800L; - - CurrentPowerRepository repository = mock(CurrentPowerRepository.class); - when(repository.findByUploadedAndEpochTimestampBetween(eq(false), anyLong(), anyLong())).thenReturn(new ArrayList<>()); - MeasurementUploader measurementUploader = new MeasurementUploader(mock(RestTemplateBuilder.class), repository); - - // When - measurementUploader.uploadByDateRange(startDate, endDate); - - // Then - ArgumentCaptor captorStart = ArgumentCaptor.forClass(Long.class); - ArgumentCaptor captorEnd = ArgumentCaptor.forClass(Long.class); - verify(repository).findByUploadedAndEpochTimestampBetween(eq(false), captorStart.capture(), captorEnd.capture()); - Long startValue = captorStart.getValue(); - Long endValue = captorEnd.getValue(); - Assert.state(startValue.equals(startDateInUTCEpochSeconds), String.format("Expected %s to be converted to %d but was %d", - startDate.toString(), startDateInUTCEpochSeconds, startValue)); - Assert.state(endValue.equals(endDateInUTCEpochSeconds), String.format("Expected %s to be converted to %d but was %d", - endDate.toString(), endDateInUTCEpochSeconds, endValue)); - } - private ArrayList generateCurrentPowerList(int listLength, Instant startTime) { AtomicLong atomicLong = new AtomicLong(); ConcurrentLinkedQueue currentPowerQueue = new ConcurrentLinkedQueue<>();