From 3d24632f0094c54accc5664d946661b78fa88a23 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Wed, 24 Jun 2020 16:37:48 -0600 Subject: [PATCH] Fix a test where dynamic ports caused paint styles to be added over and over again Signed-off-by: Taylor Smock --- .../mapwithai/backend/MapWithAIDataUtils.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapwithai/backend/MapWithAIDataUtils.java b/src/main/java/org/openstreetmap/josm/plugins/mapwithai/backend/MapWithAIDataUtils.java index c33b0f4..62e9d0f 100644 --- a/src/main/java/org/openstreetmap/josm/plugins/mapwithai/backend/MapWithAIDataUtils.java +++ b/src/main/java/org/openstreetmap/josm/plugins/mapwithai/backend/MapWithAIDataUtils.java @@ -12,6 +12,7 @@ import java.util.Objects; import java.util.TreeSet; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.locks.Lock; +import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.swing.JOptionPane; @@ -59,6 +60,8 @@ public final class MapWithAIDataUtils { public static final String DEFAULT_PAINT_STYLE_RESOURCE_URL = "https://josm.openstreetmap.de/josmfile?page=Styles/MapWithAI&zip=1"; private static String paintStyleResourceUrl = DEFAULT_PAINT_STYLE_RESOURCE_URL; + private static Pattern TEST_PATTERN = Pattern + .compile("https?:\\/\\/(www\\.)?localhost(:[0-9]+)?\\/josmfile\\?page=Styles\\/MapWithAI&zip=1"); private MapWithAIDataUtils() { // Hide the constructor @@ -69,12 +72,12 @@ public final class MapWithAIDataUtils { */ public static void addMapWithAIPaintStyles() { // Remove old url's that were automatically added -- remove after Jan 01, 2020 - final List oldUrls = Arrays.asList( - "https://gitlab.com/gokaart/JOSM_MapWithAI/raw/master/src/resources/styles/standard/mapwithai.mapcss", - "https://gitlab.com/smocktaylor/rapid/raw/master/src/resources/styles/standard/rapid.mapcss", - "resource://styles/standard/mapwithai.mapcss"); + final List oldUrls = Arrays.asList(Pattern.compile( + "https://gitlab.com/(gokaart/JOSM_MapWithAI|smocktaylor/rapid)/raw/master/src/resources/styles/standard/(mapwithai|rapid).mapcss"), + TEST_PATTERN, Pattern.compile("resource://styles/standard/mapwithai.mapcss")); new ArrayList<>(MapPaintStyles.getStyles().getStyleSources()).parallelStream() - .filter(style -> oldUrls.contains(style.url)).forEach(MapPaintStyles::removeStyle); + .filter(style -> oldUrls.stream().anyMatch(p -> p.matcher(style.url).matches())) + .forEach(MapPaintStyles::removeStyle); if (!checkIfMapWithAIPaintStyleExists()) { final MapCSSStyleSource style = new MapCSSStyleSource(paintStyleResourceUrl, MapWithAIPlugin.NAME, @@ -90,15 +93,16 @@ public final class MapWithAIDataUtils { */ public static boolean checkIfMapWithAIPaintStyleExists() { return MapPaintStyles.getStyles().getStyleSources().parallelStream().filter(MapCSSStyleSource.class::isInstance) - .map(MapCSSStyleSource.class::cast).anyMatch(source -> paintStyleResourceUrl.equals(source.url)); + .map(MapCSSStyleSource.class::cast).anyMatch(source -> paintStyleResourceUrl.equals(source.url) + || TEST_PATTERN.matcher(source.url).matches()); } /** * Remove MapWithAI paint styles */ public static void removeMapWithAIPaintStyles() { - new ArrayList<>(MapPaintStyles.getStyles().getStyleSources()).parallelStream() - .filter(source -> paintStyleResourceUrl.equals(source.url)) + new ArrayList<>(MapPaintStyles.getStyles().getStyleSources()).parallelStream().filter( + source -> paintStyleResourceUrl.equals(source.url) || TEST_PATTERN.matcher(source.url).matches()) .forEach(style -> GuiHelper.runInEDT(() -> MapPaintStyles.removeStyle(style))); } @@ -108,8 +112,9 @@ public final class MapWithAIDataUtils { * @return get the MapWithAI Paint style */ public static StyleSource getMapWithAIPaintStyle() { - return MapPaintStyles.getStyles().getStyleSources().parallelStream() - .filter(source -> paintStyleResourceUrl.equals(source.url)).findAny().orElse(null); + return MapPaintStyles.getStyles().getStyleSources().parallelStream().filter( + source -> paintStyleResourceUrl.equals(source.url) || TEST_PATTERN.matcher(source.url).matches()) + .findAny().orElse(null); } /**