From de524da1383ea0b27a4dfb04733629bcbe3e2d3a Mon Sep 17 00:00:00 2001 From: aboyko Date: Thu, 3 Nov 2022 16:34:36 -0400 Subject: [PATCH] Upgrade Rewrite dependencies to 7.32.1, 4.29 and 1.13 --- .../commons/commons-rewrite/pom.xml | 18 ++++++++++---- .../config/StsClasspathScanningLoader.java | 15 ++++++------ .../rewrite/config/StsEnvironment.java | 24 +++++++++++++++---- headless-services/commons/pom.xml | 6 ++--- .../java/rewrite/RewriteRecipeRepository.java | 4 ++-- 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/headless-services/commons/commons-rewrite/pom.xml b/headless-services/commons/commons-rewrite/pom.xml index 4be76ae2a..b626a14ec 100644 --- a/headless-services/commons/commons-rewrite/pom.xml +++ b/headless-services/commons/commons-rewrite/pom.xml @@ -27,13 +27,21 @@ commons-java ${project.version} - - + + + - io.github.classgraph - classgraph - 4.8.149 + de.danielbechler + java-object-diff + 0.95 + + + io.github.classgraph + classgraph + 4.8.149 + + org.openrewrite rewrite-properties diff --git a/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsClasspathScanningLoader.java b/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsClasspathScanningLoader.java index d60b0f402..c64566ef6 100644 --- a/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsClasspathScanningLoader.java +++ b/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsClasspathScanningLoader.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.springframework.ide.vscode.commons.rewrite.config; +import static java.util.Collections.emptyList; import static org.openrewrite.internal.RecipeIntrospectionUtils.constructRecipe; import static org.openrewrite.internal.RecipeIntrospectionUtils.recipeDescriptorFromRecipe; @@ -48,7 +49,7 @@ public class StsClasspathScanningLoader implements ResourceLoader, StsResourceLo private final List codeActionRepos = new ArrayList<>(); - public StsClasspathScanningLoader(Path p, Properties properties, ClassLoader classLoader) { + public StsClasspathScanningLoader(Path p, Properties properties, Collection dependencyResourceLoaders, ClassLoader classLoader) { if (Files.isDirectory(p)) { String dir = p.toString(); @@ -61,7 +62,7 @@ public class StsClasspathScanningLoader implements ResourceLoader, StsResourceLo .acceptPaths(dir) .ignoreParentClassLoaders() .overrideClassLoaders(classLoader) - .acceptPaths("META-INF/rewrite"), properties, classLoader); + .acceptPaths("META-INF/rewrite"), properties, dependencyResourceLoaders, classLoader); } else { String jarName = p.toFile().getName(); @@ -75,14 +76,14 @@ public class StsClasspathScanningLoader implements ResourceLoader, StsResourceLo .acceptJars(jarName) .ignoreParentClassLoaders() .overrideClassLoaders(classLoader) - .acceptPaths("META-INF/rewrite"), properties, classLoader); + .acceptPaths("META-INF/rewrite"), properties, dependencyResourceLoaders, classLoader); } } public StsClasspathScanningLoader(Properties properties, String[] acceptPackages) { scanClasses(new ClassGraph().acceptPackages(acceptPackages), getClass().getClassLoader()); - scanYaml(new ClassGraph().acceptPaths("META-INF/rewrite"), properties, null); + scanYaml(new ClassGraph().acceptPaths("META-INF/rewrite"), properties, emptyList(), null); } /** @@ -99,19 +100,19 @@ public class StsClasspathScanningLoader implements ResourceLoader, StsResourceLo scanYaml(new ClassGraph() .ignoreParentClassLoaders() .overrideClassLoaders(classLoader) - .acceptPaths("META-INF/rewrite"), properties, classLoader); + .acceptPaths("META-INF/rewrite"), properties, emptyList(), classLoader); } /** * This must be called _after_ scanClasses or the descriptors of declarative recipes will be missing any * non-declarative recipes they depend on that would be discovered by scanClasses */ - private void scanYaml(ClassGraph classGraph, Properties properties, @Nullable ClassLoader classLoader) { + private void scanYaml(ClassGraph classGraph, Properties properties, Collection dependencyResourceLoaders, @Nullable ClassLoader classLoader) { try (ScanResult scanResult = classGraph.enableMemoryMapping().scan()) { List yamlResourceLoaders = new ArrayList<>(); scanResult.getResourcesWithExtension("yml").forEachInputStreamIgnoringIOException((res, input) -> { - yamlResourceLoaders.add(new YamlResourceLoader(input, res.getURI(), properties, classLoader)); + yamlResourceLoaders.add(new YamlResourceLoader(input, res.getURI(), properties, classLoader, dependencyResourceLoaders)); }); // Extract in two passes so that the full list of recipes from all sources are known when computing recipe descriptors // Otherwise recipes which include recipes from other sources in their recipeList will have incomplete descriptors diff --git a/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsEnvironment.java b/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsEnvironment.java index a6bf8724a..0d9baff83 100644 --- a/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsEnvironment.java +++ b/headless-services/commons/commons-rewrite/src/main/java/org/springframework/ide/vscode/commons/rewrite/config/StsEnvironment.java @@ -12,6 +12,7 @@ package org.springframework.ide.vscode.commons.rewrite.config; import java.lang.reflect.Field; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Properties; @@ -19,9 +20,12 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.openrewrite.config.ClasspathScanningLoader; import org.openrewrite.config.Environment; import org.openrewrite.config.ResourceLoader; +import static java.util.Collections.emptyList; + public class StsEnvironment extends Environment { final private Supplier> codeActionRepos; @@ -51,12 +55,22 @@ public class StsEnvironment extends Environment { } @Override - public org.openrewrite.config.Environment.Builder scanJar(Path jar, ClassLoader classLoader) { - return load(new StsClasspathScanningLoader(jar, props, classLoader)); + public Environment.Builder scanJar(Path jar, Collection dependencies, ClassLoader classLoader) { + List list = new ArrayList<>(); + for (Path dep : dependencies) { + ClasspathScanningLoader classpathScanningLoader = new ClasspathScanningLoader(dep, props, emptyList(), classLoader); + list.add(classpathScanningLoader); + } + return load(new StsClasspathScanningLoader(jar, props, list, classLoader), list); } - - public org.openrewrite.config.Environment.Builder scanPath(Path dir, ClassLoader classLoader) { - return load(new StsClasspathScanningLoader(dir, props, classLoader)); + + public org.openrewrite.config.Environment.Builder scanPath(Path dir, Collection dependencies, ClassLoader classLoader) { + List list = new ArrayList<>(); + for (Path dep : dependencies) { + ClasspathScanningLoader classpathScanningLoader = new ClasspathScanningLoader(dep, props, emptyList(), classLoader); + list.add(classpathScanningLoader); + } + return load(new StsClasspathScanningLoader(dir, props, list, classLoader)); } @SuppressWarnings("unchecked") diff --git a/headless-services/commons/pom.xml b/headless-services/commons/pom.xml index d8fa1573f..d5edcd63c 100644 --- a/headless-services/commons/pom.xml +++ b/headless-services/commons/pom.xml @@ -109,9 +109,9 @@ 1.13 - 7.30.0 - 4.27.0 - 1.11.0 + 7.32.1 + 4.29.0 + 1.13.0 true vmware diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java index 07735066e..b6c51858f 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java @@ -232,7 +232,7 @@ public class RewriteRecipeRepository implements ApplicationContextAware { if (pathStr.endsWith(".jar")) { URLClassLoader classLoader = new URLClassLoader(new URL[] { f.toUri().toURL() }, getClass().getClassLoader()); - builder.scanJar(f, classLoader); + builder.scanJar(f, Collections.emptyList(), classLoader); } else if (pathStr.endsWith(".yml") || pathStr.endsWith(".yaml")) { builder.load(new YamlResourceLoader(new FileInputStream(f.toFile()), f.toUri(), new Properties())); } @@ -245,7 +245,7 @@ public class RewriteRecipeRepository implements ApplicationContextAware { Path d = Path.of(p); if (Files.isDirectory(d)) { URLClassLoader classLoader = new URLClassLoader(new URL[] { d.toUri().toURL()}, getClass().getClassLoader()); - builder.scanPath(d, classLoader); + builder.scanPath(d, Collections.emptyList(), classLoader); } } catch (Exception e) { log.error("Skipping folder " + p, e);