From e2fdca7747fa18d1120f5cf8875f439c97b4c5a5 Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Mon, 22 Dec 2025 10:41:37 +0100 Subject: [PATCH 1/3] [fixes #3985] Add STS5 support --- .../eclipse/STS5LocationProvider.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/installer/lombok/installer/eclipse/STS5LocationProvider.java diff --git a/src/installer/lombok/installer/eclipse/STS5LocationProvider.java b/src/installer/lombok/installer/eclipse/STS5LocationProvider.java new file mode 100644 index 00000000..aac207b0 --- /dev/null +++ b/src/installer/lombok/installer/eclipse/STS5LocationProvider.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2025 The Project Lombok Authors. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.installer.eclipse; + +import java.util.Arrays; +import java.util.Collections; + +import lombok.installer.IdeLocationProvider; +import lombok.spi.Provides; + +@Provides(IdeLocationProvider.class) +public class STS5LocationProvider extends EclipseProductLocationProvider { + + private static final EclipseProductDescriptor STS5 = new StandardProductDescriptor("Spring Tools Suite 5", + "SpringToolsForEclipse", + "sts", + STS5LocationProvider.class.getResource("STS.png"), + Collections.unmodifiableList(Arrays.asList("springsource", "spring-tool-suite")) + ); + + public STS5LocationProvider() { + super(STS5); + } +} From 91c8c96a664dddfc3505ccfb44a57f5a9651818d Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Mon, 22 Dec 2025 10:50:34 +0100 Subject: [PATCH 2/3] Find IDE executables on case-sensitive file systems --- .../eclipse/StandardProductDescriptor.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/installer/lombok/installer/eclipse/StandardProductDescriptor.java b/src/installer/lombok/installer/eclipse/StandardProductDescriptor.java index 365bf7fb..55085339 100644 --- a/src/installer/lombok/installer/eclipse/StandardProductDescriptor.java +++ b/src/installer/lombok/installer/eclipse/StandardProductDescriptor.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 The Project Lombok Authors. + * Copyright (C) 2016-2025 The Project Lombok Authors. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -24,7 +24,6 @@ package lombok.installer.eclipse; import java.io.File; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -133,8 +132,17 @@ public class StandardProductDescriptor implements EclipseProductDescriptor { } private static List executableNames(String baseName) { - String base = baseName.toLowerCase(); - return Collections.unmodifiableList(Arrays.asList(base, base + ".app", base + ".exe", base + "c.exe")); + String[] bases = new String[] {baseName, baseName.toLowerCase()}; + String[] suffixes = new String[] {"", ".app", ".exe", "c.exe"}; + + List result = new ArrayList(); + + for (String base : bases) { + for (String suffix : suffixes) { + result.add(base + suffix); + } + } + return Collections.unmodifiableList(result); } private static List generateAlternatives(String[] roots, String pathSeparator, Collection alternatives) { From e07c55940e0edaaf33d001bd15079540c2c77788 Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Mon, 22 Dec 2025 10:51:19 +0100 Subject: [PATCH 3/3] Auto-detect IDE in jar directory --- src/installer/lombok/installer/Installer.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/installer/lombok/installer/Installer.java b/src/installer/lombok/installer/Installer.java index 1ca77065..61cb618d 100644 --- a/src/installer/lombok/installer/Installer.java +++ b/src/installer/lombok/installer/Installer.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2021 The Project Lombok Authors. + * Copyright (C) 2009-2025 The Project Lombok Authors. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -92,6 +92,16 @@ public class Installer { for (IdeLocationProvider provider : locationProviders) { provider.findIdes(locations, problems); } + // Search in lombok.jar directory + File ourJar = IdeLocation.findOurJar(); + try { + IdeLocation location = tryAllProviders(ourJar.getParent()); + if (location != null) { + locations.add(location); + } + } catch (CorruptedIdeLocationException e) { + problems.add(e); + } } public static boolean isSelf(String jar) {