From e7c1ff527b171f76260efd0f69f8d3f4f7360123 Mon Sep 17 00:00:00 2001 From: Matthias Jaros Date: Thu, 2 Jul 2026 12:45:18 +0200 Subject: Changed scanstate to class that now owns completetly the Result List and does not allow modifications outside of defined methods. -> thread safe --- src/main/java/com/it_jaros/jscanner/ScanState.java | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/it_jaros/jscanner/ScanState.java') diff --git a/src/main/java/com/it_jaros/jscanner/ScanState.java b/src/main/java/com/it_jaros/jscanner/ScanState.java index e3a4300..86c3615 100644 --- a/src/main/java/com/it_jaros/jscanner/ScanState.java +++ b/src/main/java/com/it_jaros/jscanner/ScanState.java @@ -1,5 +1,37 @@ package com.it_jaros.jscanner; +import java.util.ArrayList; import java.util.List; -public record ScanState(Counter counter, ProgressBar progressBar, List scanResult) {} +public class ScanState { + private final Counter counter; + private final ProgressBar progressBar; + private final List scanResult; + + public ScanState(Counter counter, ProgressBar progressBar) { + this.counter = counter; + this.progressBar = progressBar; + // scanResult can not be given from outside because this class controls full access to it + this.scanResult = new ArrayList<>(); + } + + public Counter getCounter() { + return counter; + } + + public ProgressBar getProgressBar() { + return progressBar; + } + + public void addScanResult(ScanResult newResult) { + synchronized (this.scanResult) { + this.scanResult.add(newResult); + } + } + + public List getSnapshotOfScanResults() { + synchronized (scanResult) { + return List.copyOf(scanResult); + } + } +} -- cgit v1.3.1