From 5fcb53836243d723dd3df94020bb391048b65946 Mon Sep 17 00:00:00 2001 From: llschall Date: Fri, 26 Jun 2026 14:33:07 +0200 Subject: [PATCH 1/5] [Build] Bump Gradle to 9.6.0 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1a70468..7e7d24f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From ceb698dd09332c9487ce363397d6c77974d1efd9 Mon Sep 17 00:00:00 2001 From: llschall Date: Fri, 26 Jun 2026 15:08:39 +0200 Subject: [PATCH 2/5] [Server] Add MCP call --- .../llschall/control/board/UiRestController.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/org/llschall/control/board/UiRestController.java b/src/main/java/org/llschall/control/board/UiRestController.java index c91a800..f0597b5 100644 --- a/src/main/java/org/llschall/control/board/UiRestController.java +++ b/src/main/java/org/llschall/control/board/UiRestController.java @@ -43,6 +43,11 @@ public List getMeasurements() { return toDtoList(viewModel.getAllMeasurements()); } + @GetMapping("/echo") + public ResponseEntity echo(@RequestParam String text) { + return ResponseEntity.ok(new EchoDto(text)); + } + private List toDtoList(Iterable measurements) { return ((List) ((measurements instanceof List) ? measurements : toList(measurements))) .stream() @@ -78,5 +83,13 @@ public MeasurementDto(Long id, int value, String timestamp) { this.timestamp = timestamp; } } + + static class EchoDto { + public final String text; + + public EchoDto(String text) { + this.text = text; + } + } } From 7a0cd8dee1b43fcd24b71a1c22b5bd06ba3c10d5 Mon Sep 17 00:00:00 2001 From: llschall Date: Fri, 26 Jun 2026 15:16:30 +0200 Subject: [PATCH 3/5] [Server] Count calls --- .../control/board/UiRestController.java | 21 +++++++++++++++++-- src/main/resources/static/index.html | 9 ++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/llschall/control/board/UiRestController.java b/src/main/java/org/llschall/control/board/UiRestController.java index f0597b5..1a357b4 100644 --- a/src/main/java/org/llschall/control/board/UiRestController.java +++ b/src/main/java/org/llschall/control/board/UiRestController.java @@ -10,6 +10,7 @@ @RequestMapping("/api") public class UiRestController { private final CounterViewModel viewModel; + private volatile int echoCallCount = 0; public UiRestController(CounterViewModel viewModel) { this.viewModel = viewModel; @@ -45,7 +46,13 @@ public List getMeasurements() { @GetMapping("/echo") public ResponseEntity echo(@RequestParam String text) { - return ResponseEntity.ok(new EchoDto(text)); + echoCallCount++; + return ResponseEntity.ok(new EchoDto(text, echoCallCount)); + } + + @GetMapping("/echo-count") + public ResponseEntity getEchoCount() { + return ResponseEntity.ok(new EchoCountDto(echoCallCount)); } private List toDtoList(Iterable measurements) { @@ -86,9 +93,19 @@ public MeasurementDto(Long id, int value, String timestamp) { static class EchoDto { public final String text; + public final int count; - public EchoDto(String text) { + public EchoDto(String text, int count) { this.text = text; + this.count = count; + } + } + + static class EchoCountDto { + public final int count; + + public EchoCountDto(int count) { + this.count = count; } } } diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 9ea84ef..047ee17 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -21,6 +21,7 @@ + Echo Calls: 0
@@ -55,11 +56,19 @@

Measurements

return res.json(); } + async function fetchEchoCount() { + const res = await fetch('/api/echo-count'); + return res.json(); + } + async function refreshUi() { const counter = await fetchCounter(); document.getElementById('display').textContent = counter.display; document.getElementById('led').checked = counter.switchOn; + const echoCounter = await fetchEchoCount(); + document.getElementById('echoCount').textContent = 'Echo Calls: ' + echoCounter.count; + const measurements = await fetchMeasurements(); const series = measurements.map((m, idx) => m.value); const x = measurements.map((m, idx) => idx); From a5ab4bd430396215fe7fbe4fc9195f00072081ff Mon Sep 17 00:00:00 2001 From: llschall Date: Fri, 26 Jun 2026 15:40:07 +0200 Subject: [PATCH 4/5] [Server] Count calls --- .../control/board/UiRestController.java | 49 ++++--------------- 1 file changed, 10 insertions(+), 39 deletions(-) diff --git a/src/main/java/org/llschall/control/board/UiRestController.java b/src/main/java/org/llschall/control/board/UiRestController.java index 1a357b4..8eccd20 100644 --- a/src/main/java/org/llschall/control/board/UiRestController.java +++ b/src/main/java/org/llschall/control/board/UiRestController.java @@ -4,13 +4,14 @@ import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @RestController @RequestMapping("/api") public class UiRestController { private final CounterViewModel viewModel; - private volatile int echoCallCount = 0; + private final AtomicInteger echoCallCount = new AtomicInteger(0); public UiRestController(CounterViewModel viewModel) { this.viewModel = viewModel; @@ -45,14 +46,14 @@ public List getMeasurements() { } @GetMapping("/echo") - public ResponseEntity echo(@RequestParam String text) { - echoCallCount++; - return ResponseEntity.ok(new EchoDto(text, echoCallCount)); + public ResponseEntity echo() { + int i = echoCallCount.incrementAndGet(); + return ResponseEntity.ok(new EchoDto(i)); } @GetMapping("/echo-count") public ResponseEntity getEchoCount() { - return ResponseEntity.ok(new EchoCountDto(echoCallCount)); + return ResponseEntity.ok(new EchoCountDto(echoCallCount.get())); } private List toDtoList(Iterable measurements) { @@ -67,46 +68,16 @@ private List toList(Iterable iterable) { java.util.stream.StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList())); } - static class CounterDto { - public final int value; - public final String display; - public final boolean switchOn; - - public CounterDto(int value, String display, boolean switchOn) { - this.value = value; - this.display = display; - this.switchOn = switchOn; - } + record CounterDto(int value, String display, boolean switchOn) { } - static class MeasurementDto { - public final Long id; - public final int value; - public final String timestamp; - - public MeasurementDto(Long id, int value, String timestamp) { - this.id = id; - this.value = value; - this.timestamp = timestamp; - } + record MeasurementDto(Long id, int value, String timestamp) { } - static class EchoDto { - public final String text; - public final int count; - - public EchoDto(String text, int count) { - this.text = text; - this.count = count; - } + record EchoDto(int count) { } - static class EchoCountDto { - public final int count; - - public EchoCountDto(int count) { - this.count = count; - } + record EchoCountDto(int count) { } } From b417a30602b8fca0d0c0fd9a63d57b0edd1e3a94 Mon Sep 17 00:00:00 2001 From: llschall Date: Fri, 26 Jun 2026 15:41:09 +0200 Subject: [PATCH 5/5] [Server] Count calls --- src/main/java/org/llschall/control/board/UiRestController.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/llschall/control/board/UiRestController.java b/src/main/java/org/llschall/control/board/UiRestController.java index 8eccd20..ec76e76 100644 --- a/src/main/java/org/llschall/control/board/UiRestController.java +++ b/src/main/java/org/llschall/control/board/UiRestController.java @@ -64,8 +64,7 @@ private List toDtoList(Iterable measurements) { } private List toList(Iterable iterable) { - return (List) ((List) - java.util.stream.StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList())); + return java.util.stream.StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList()); } record CounterDto(int value, String display, boolean switchOn) {