Skip to content

Commit 8413ea1

Browse files
admitrovijusti
admitrov
authored andcommitted
2.7: Changes to Auto-configuration #156
1 parent 63521dc commit 8413ea1

File tree

27 files changed

+360
-156
lines changed

27 files changed

+360
-156
lines changed

components/sbm-core/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@
6868
<groupId>org.openrewrite</groupId>
6969
<artifactId>rewrite-java-11</artifactId>
7070
</dependency>
71+
<dependency>
72+
<groupId>org.openrewrite</groupId>
73+
<artifactId>rewrite-java-17</artifactId>
74+
</dependency>
7175
<dependency>
7276
<groupId>org.openrewrite</groupId>
7377
<artifactId>rewrite-protobuf</artifactId>

components/sbm-core/src/main/java/org/springframework/sbm/build/impl/OpenRewriteMavenBuildFile.java

+50-15
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,39 @@
1616
package org.springframework.sbm.build.impl;
1717

1818
import lombok.extern.slf4j.Slf4j;
19-
import org.openrewrite.*;
19+
import org.openrewrite.ExecutionContext;
20+
import org.openrewrite.Parser;
21+
import org.openrewrite.Recipe;
22+
import org.openrewrite.Result;
23+
import org.openrewrite.SourceFile;
2024
import org.openrewrite.internal.lang.Nullable;
2125
import org.openrewrite.java.JavaParser;
2226
import org.openrewrite.marker.Markers;
27+
import org.openrewrite.maven.AddDependencyVisitor;
28+
import org.openrewrite.maven.AddMavenRepository;
29+
import org.openrewrite.maven.ChangePackaging;
30+
import org.openrewrite.maven.ChangePropertyValue;
31+
import org.openrewrite.maven.ExcludeDependency;
32+
import org.openrewrite.maven.MavenParser;
33+
import org.openrewrite.maven.MavenVisitor;
34+
import org.openrewrite.maven.RemoveDependency;
35+
import org.openrewrite.maven.RemoveProperty;
36+
import org.openrewrite.maven.UpgradeParentVersion;
2337
import org.openrewrite.maven.*;
2438
import org.openrewrite.maven.tree.MavenResolutionResult;
2539
import org.openrewrite.maven.tree.Parent;
2640
import org.openrewrite.maven.tree.ResolvedDependency;
41+
import org.openrewrite.maven.tree.ResolvedManagedDependency;
2742
import org.openrewrite.maven.tree.Scope;
2843
import org.openrewrite.xml.tree.Xml;
2944
import org.springframework.context.ApplicationEventPublisher;
30-
import org.springframework.sbm.build.api.*;
45+
import org.springframework.sbm.build.api.BuildFile;
46+
import org.springframework.sbm.build.api.DependenciesChangedEvent;
47+
import org.springframework.sbm.build.api.Dependency;
48+
import org.springframework.sbm.build.api.ParentDeclaration;
49+
import org.springframework.sbm.build.api.Plugin;
50+
import org.springframework.sbm.build.api.RepositoryDefinition;
51+
import org.springframework.sbm.build.api.RewriteMavenParentDeclaration;
3152
import org.springframework.sbm.build.migration.recipe.AddMavenPlugin;
3253
import org.springframework.sbm.build.migration.recipe.RemoveMavenPlugin;
3354
import org.springframework.sbm.build.migration.visitor.AddOrUpdateDependencyManagement;
@@ -41,9 +62,19 @@
4162
import java.nio.charset.StandardCharsets;
4263
import java.nio.file.Files;
4364
import java.nio.file.Path;
44-
import java.util.*;
65+
import java.util.ArrayList;
66+
import java.util.Arrays;
67+
import java.util.Collections;
68+
import java.util.HashSet;
69+
import java.util.Iterator;
70+
import java.util.List;
71+
import java.util.Optional;
72+
import java.util.Set;
4573
import java.util.stream.Collectors;
4674
import java.util.stream.Stream;
75+
76+
import static java.util.function.Predicate.not;
77+
4778
@Slf4j
4879
public class OpenRewriteMavenBuildFile extends RewriteSourceFileHolder<Xml.Document> implements BuildFile {
4980

@@ -333,7 +364,7 @@ protected void addDependenciesInner(List<Dependency> dependencies) {
333364
apply(r);
334365
apply(new RefreshPomModel());
335366
List<Dependency> exclusions = dependencies.stream()
336-
.filter(d -> false == d.getExclusions().isEmpty())
367+
.filter(not(d -> d.getExclusions().isEmpty()))
337368
.flatMap(d -> d.getExclusions().stream())
338369
.collect(Collectors.toList());
339370

@@ -373,7 +404,7 @@ private boolean hasEffectiveDependency(Dependency d) {
373404
* Does not updateClasspathRegistry
374405
*/
375406
private void excludeDependenciesInner(List<Dependency> exclusions) {
376-
if (false == exclusions.isEmpty()) {
407+
if (!exclusions.isEmpty()) {
377408
Dependency excludedDependency = exclusions.get(0);
378409
ExcludeDependency excludeDependency = new ExcludeDependency(excludedDependency.getGroupId(), excludedDependency.getArtifactId(), excludedDependency.getScope());
379410
exclusions.stream().skip(1).forEach(d -> excludeDependency.doNext(new ExcludeDependency(d.getGroupId(), d.getArtifactId(), d.getScope())));
@@ -385,14 +416,13 @@ private void excludeDependenciesInner(List<Dependency> exclusions) {
385416
private void updateClasspathRegistry() {
386417
ClasspathRegistry instance = ClasspathRegistry.getInstance();
387418
// FIXME: removed dependencies must be removed from ProjectDependenciesRegistry too
388-
Set<ResolvedDependency> compileDependencies = getPom().getDependencies().get(Scope.Compile).stream().collect(Collectors.toSet());
419+
Set<ResolvedDependency> compileDependencies = new HashSet<>(getPom().getDependencies().get(Scope.Compile));
389420
Set<ResolvedDependency> testDependencies = getPom().getDependencies().get(Scope.Test)
390421
.stream()
391422
.flatMap(d -> d.getDependencies().stream())
392423
.collect(Collectors.toSet());
393424
compileDependencies.addAll(testDependencies);
394-
compileDependencies.stream()
395-
.forEach(instance::addDependency);
425+
compileDependencies.forEach(instance::addDependency);
396426
}
397427

398428
private Recipe getAddDependencyRecipe(Dependency dependency) {
@@ -436,16 +466,20 @@ public List<Dependency> getDependencyManagement() {
436466
return Collections.emptyList();
437467
}
438468
return pom.getPom().getDependencyManagement().stream()
439-
.map(d -> Dependency.builder()
440-
.groupId(d.getGroupId())
441-
.artifactId(d.getArtifactId())
442-
.version(d.getVersion())
443-
.scope(scopeString(d.getScope()))
444-
.build())
469+
.map(this::getDependency)
445470
.distinct()
446471
.collect(Collectors.toList());
447472
}
448473

474+
private Dependency getDependency(ResolvedManagedDependency d) {
475+
return Dependency.builder()
476+
.groupId(d.getGroupId())
477+
.artifactId(d.getArtifactId())
478+
.version(d.getVersion())
479+
.scope(scopeString(d.getScope()))
480+
.build();
481+
}
482+
449483
@Override
450484
public void addToDependencyManagementInner(Dependency dependency) {
451485
AddOrUpdateDependencyManagement addOrUpdateDependencyManagement = new AddOrUpdateDependencyManagement(dependency);
@@ -461,7 +495,8 @@ public void addToDependencyManagementInner(Dependency dependency) {
461495
public List<Path> getResolvedDependenciesPaths() {
462496
RewriteMavenArtifactDownloader rewriteMavenArtifactDownloader = new RewriteMavenArtifactDownloader();
463497
return getPom().getDependencies().get(Scope.Provided).stream()
464-
.map(d -> rewriteMavenArtifactDownloader.downloadArtifact(d)).collect(Collectors.toList());
498+
.map(rewriteMavenArtifactDownloader::downloadArtifact)
499+
.collect(Collectors.toList());
465500

466501
/*
467502
Field classpathField = ReflectionUtils.findField(Java11Parser.class, "classpath");

components/sbm-core/src/main/java/org/springframework/sbm/common/migration/actions/DeleteFileMatchingPattern.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import org.springframework.sbm.engine.recipe.AbstractAction;
2222
import org.springframework.sbm.project.resource.ProjectResource;
2323

24-
import java.util.List;
25-
2624
/**
2725
* Delete files matching path pattern.
2826
*
@@ -35,7 +33,6 @@ public class DeleteFileMatchingPattern extends AbstractAction {
3533

3634
@Override
3735
public void apply(ProjectContext context) {
38-
List<ProjectResource> search = context.search(new PathPatternMatchingProjectResourceFinder(pattern));
39-
search.stream().forEach(ProjectResource::delete);
36+
context.search(new PathPatternMatchingProjectResourceFinder(pattern)).forEach(ProjectResource::delete);
4037
}
4138
}

components/sbm-core/src/main/java/org/springframework/sbm/common/migration/actions/DocumentationExtraction.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
*/
1616
package org.springframework.sbm.common.migration.actions;
1717

18+
import org.jetbrains.annotations.NotNull;
19+
import org.springframework.sbm.engine.context.ProjectContext;
1820
import org.springframework.sbm.engine.recipe.AbstractAction;
1921
import org.springframework.sbm.engine.recipe.Action;
2022
import org.springframework.sbm.java.api.JavaSource;
2123
import org.springframework.sbm.java.api.Member;
2224
import org.springframework.sbm.java.impl.OpenRewriteType;
23-
import org.springframework.sbm.engine.context.ProjectContext;
24-
import org.jetbrains.annotations.NotNull;
2525

2626
import java.nio.file.Path;
2727
import java.util.List;
@@ -43,7 +43,7 @@ public void apply(ProjectContext context) {
4343
.map(OpenRewriteType.class::cast)
4444
.filter(this::filterActions)
4545
.forEach(t -> {
46-
Class actionClass = getaClass(t);
46+
Class<?> actionClass = getaClass(t);
4747
List<? extends Member> members = t.getMembers();
4848
String render = render(actionClass.getName(), members);
4949
System.out.println(render);
@@ -76,9 +76,9 @@ public boolean isApplicable(ProjectContext context) {
7676
.flatMap(js -> js.getTypes().stream())
7777
// .flatMap(t -> t.getImplements().stream())
7878
.filter(t -> OpenRewriteType.class.isAssignableFrom(t.getClass()))
79-
.map(t -> (OpenRewriteType) t)
80-
.map(t -> getaClass(t))
81-
.anyMatch(c -> Action.class.isAssignableFrom(c));
79+
.map(OpenRewriteType.class::cast)
80+
.map(this::getaClass)
81+
.anyMatch(Action.class::isAssignableFrom);
8282
}
8383

8484
@NotNull

components/sbm-core/src/main/java/org/springframework/sbm/common/migration/conditions/NoFileMatchingPathPatternExist.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@
1515
*/
1616
package org.springframework.sbm.common.migration.conditions;
1717

18-
import lombok.*;
18+
import lombok.AllArgsConstructor;
19+
import lombok.Builder;
20+
import lombok.Getter;
21+
import lombok.NoArgsConstructor;
22+
import lombok.Setter;
1923
import org.springframework.sbm.engine.context.ProjectContext;
2024
import org.springframework.sbm.engine.recipe.Condition;
2125

@@ -43,6 +47,6 @@ public String getDescription() {
4347

4448
@Override
4549
public boolean evaluate(ProjectContext context) {
46-
return false == new FileMatchingPatternExist(pattern).evaluate(context);
50+
return !new FileMatchingPatternExist(pattern).evaluate(context);
4751
}
4852
}

components/sbm-core/src/main/java/org/springframework/sbm/common/util/LinuxWindowsPathUnifier.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public String unifyPath(Path path) {
2929
public String unifyPath(String path) {
3030
path = StringUtils.cleanPath(path);
3131
if (isWindows()) {
32-
path = tranformToLinuxPath(path);
32+
path = transformToLinuxPath(path);
3333
}
3434
return path;
3535
}
@@ -38,7 +38,7 @@ boolean isWindows() {
3838
return System.getProperty("os.name").contains("Windows");
3939
}
4040

41-
private String tranformToLinuxPath(String path) {
41+
private String transformToLinuxPath(String path) {
4242
return path.replaceAll("^[\\w]+:\\/?", "/");
4343
}
4444
}

components/sbm-core/src/main/java/org/springframework/sbm/engine/commands/DescribeCommand.java

+3-7
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import org.springframework.sbm.engine.recipe.RecipesBuilder;
2020
import org.springframework.stereotype.Component;
2121

22-
import java.util.Optional;
23-
2422
@Component
2523
public class DescribeCommand extends AbstractCommand<Recipe> {
2624

@@ -36,11 +34,9 @@ public Recipe execute(String... arguments) {
3634
if (arguments == null || arguments.length == 0) {
3735
throw new IllegalArgumentException("Describe command needs recipe name to be provided");
3836
} else {
39-
final Optional<Recipe> recipe = recipesBuilder.buildRecipes().getRecipeByName(arguments[0]);
40-
if (!recipe.isPresent()) {
41-
throw new IllegalArgumentException("Recipe with name '" + arguments[0] + "' could not be found");
42-
}
43-
return recipe.get();
37+
return recipesBuilder.buildRecipes()
38+
.getRecipeByName(arguments[0])
39+
.orElseThrow(() -> new IllegalArgumentException("Recipe with name '" + arguments[0] + "' could not be found"));
4440
}
4541
}
4642
}

components/sbm-core/src/main/java/org/springframework/sbm/project/parser/RewritePlainTextParser.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.springframework.sbm.project.parser;
1717

18+
import org.jetbrains.annotations.NotNull;
1819
import org.openrewrite.ExecutionContext;
1920
import org.openrewrite.Parser;
2021
import org.openrewrite.Tree;
@@ -24,7 +25,6 @@
2425
import org.openrewrite.text.PlainTextParser;
2526
import org.openrewrite.tree.ParsingEventListener;
2627
import org.openrewrite.tree.ParsingExecutionContextView;
27-
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2828
import org.springframework.stereotype.Component;
2929

3030
import java.nio.file.Path;

components/sbm-core/src/main/java/org/springframework/sbm/project/resource/SbmApplicationProperties.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public void setIgnoredPathsPatterns(List<String> patterns) {
4141
.collect(Collectors.toList());
4242

4343
if( ! absolutePatterns.isEmpty()) {
44-
throw new IllegalArgumentException("Found absolute ignore paths patterns defined in sbm.ignoredPathsPatterns. Patterns must be relative and not start with '/'. Invalid patterns found: ['" + absolutePatterns.stream().collect(Collectors.joining("', '")) + "'].");
44+
throw new IllegalArgumentException("Found absolute ignore paths patterns defined in sbm.ignoredPathsPatterns. Patterns must be relative and not start with '/'. Invalid patterns found: ['" + String.join("', '", absolutePatterns) + "'].");
4545
}
4646

4747
this.ignoredPathsPatterns = patterns;

components/sbm-core/src/test/java/org/springframework/sbm/project/resource/TestProjectContext.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,28 @@
3939
import org.springframework.sbm.openrewrite.RewriteExecutionContext;
4040
import org.springframework.sbm.project.RewriteSourceFileWrapper;
4141
import org.springframework.sbm.project.TestDummyResource;
42-
import org.springframework.sbm.project.parser.*;
42+
import org.springframework.sbm.project.parser.DependencyHelper;
43+
import org.springframework.sbm.project.parser.JavaProvenanceMarkerFactory;
44+
import org.springframework.sbm.project.parser.MavenProjectParser;
45+
import org.springframework.sbm.project.parser.ProjectContextInitializer;
46+
import org.springframework.sbm.project.parser.ResourceParser;
47+
import org.springframework.sbm.project.parser.RewriteJsonParser;
48+
import org.springframework.sbm.project.parser.RewritePlainTextParser;
49+
import org.springframework.sbm.project.parser.RewriteYamlParser;
4350
import org.springframework.sbm.properties.parser.RewritePropertiesParser;
4451
import org.springframework.sbm.xml.parser.RewriteXmlParser;
4552

4653
import java.io.ByteArrayInputStream;
4754
import java.io.File;
4855
import java.nio.charset.StandardCharsets;
4956
import java.nio.file.Path;
50-
import java.util.*;
57+
import java.util.ArrayList;
58+
import java.util.Arrays;
59+
import java.util.Comparator;
60+
import java.util.LinkedHashMap;
61+
import java.util.List;
62+
import java.util.Map;
63+
import java.util.Optional;
5164
import java.util.stream.Collectors;
5265

5366
import static org.mockito.Mockito.mock;

components/sbm-openrewrite/pom.xml

+4
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@
5656
<groupId>org.openrewrite</groupId>
5757
<artifactId>rewrite-java-11</artifactId>
5858
</dependency>
59+
<dependency>
60+
<groupId>org.openrewrite</groupId>
61+
<artifactId>rewrite-java-17</artifactId>
62+
</dependency>
5963
<dependency>
6064
<groupId>org.rocksdb</groupId>
6165
<artifactId>rocksdbjni</artifactId>

0 commit comments

Comments
 (0)