Skip to content

Commit 9a0d8bc

Browse files
author
admitrov
committed
2.7: Changes to Auto-configuration #156
1 parent 0a61b22 commit 9a0d8bc

File tree

28 files changed

+380
-186
lines changed

28 files changed

+380
-186
lines changed

components/sbm-core/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@
7373
<groupId>org.openrewrite</groupId>
7474
<artifactId>rewrite-java-11</artifactId>
7575
</dependency>
76+
<dependency>
77+
<groupId>org.openrewrite</groupId>
78+
<artifactId>rewrite-java-17</artifactId>
79+
</dependency>
7680
<dependency>
7781
<groupId>org.openrewrite</groupId>
7882
<artifactId>rewrite-protobuf</artifactId>

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

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,65 @@
1515
*/
1616
package org.springframework.sbm.build.impl;
1717

18-
import io.micrometer.core.instrument.Meter;
19-
import io.micrometer.core.instrument.Metrics;
20-
import io.micrometer.core.instrument.Timer;
2118
import lombok.extern.slf4j.Slf4j;
22-
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;
2324
import org.openrewrite.internal.lang.Nullable;
24-
import org.openrewrite.java.Java11Parser;
2525
import org.openrewrite.java.JavaParser;
2626
import org.openrewrite.marker.Markers;
27-
import org.openrewrite.maven.*;
28-
import org.openrewrite.maven.cache.RocksdbMavenPomCache;
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;
2937
import org.openrewrite.maven.tree.MavenResolutionResult;
3038
import org.openrewrite.maven.tree.Parent;
3139
import org.openrewrite.maven.tree.ResolvedDependency;
40+
import org.openrewrite.maven.tree.ResolvedManagedDependency;
3241
import org.openrewrite.maven.tree.Scope;
3342
import org.openrewrite.xml.tree.Xml;
3443
import org.springframework.context.ApplicationEventPublisher;
35-
import org.springframework.sbm.build.api.*;
44+
import org.springframework.sbm.build.api.BuildFile;
45+
import org.springframework.sbm.build.api.DependenciesChangedEvent;
46+
import org.springframework.sbm.build.api.Dependency;
47+
import org.springframework.sbm.build.api.ParentDeclaration;
48+
import org.springframework.sbm.build.api.Plugin;
49+
import org.springframework.sbm.build.api.RepositoryDefinition;
50+
import org.springframework.sbm.build.api.RewriteMavenParentDeclaration;
3651
import org.springframework.sbm.build.migration.recipe.AddMavenPlugin;
3752
import org.springframework.sbm.build.migration.recipe.RemoveMavenPlugin;
3853
import org.springframework.sbm.build.migration.visitor.AddOrUpdateDependencyManagement;
3954
import org.springframework.sbm.build.migration.visitor.AddProperty;
4055
import org.springframework.sbm.java.impl.ClasspathRegistry;
41-
import org.springframework.sbm.java.impl.RewriteJavaParser;
4256
import org.springframework.sbm.openrewrite.RewriteExecutionContext;
43-
import org.springframework.sbm.project.Execution;
44-
import org.springframework.sbm.project.parser.MavenProjectParser;
4557
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
4658
import org.springframework.sbm.support.openrewrite.GenericOpenRewriteRecipe;
47-
import org.springframework.util.ReflectionUtils;
4859

4960
import java.io.ByteArrayInputStream;
50-
import java.lang.reflect.Field;
5161
import java.nio.charset.StandardCharsets;
5262
import java.nio.file.Files;
5363
import java.nio.file.Path;
54-
import java.util.*;
64+
import java.util.ArrayList;
65+
import java.util.Arrays;
66+
import java.util.Collections;
67+
import java.util.HashSet;
68+
import java.util.Iterator;
69+
import java.util.List;
70+
import java.util.Optional;
71+
import java.util.Set;
5572
import java.util.stream.Collectors;
5673
import java.util.stream.Stream;
74+
75+
import static java.util.function.Predicate.not;
76+
5777
@Slf4j
5878
public class OpenRewriteMavenBuildFile extends RewriteSourceFileHolder<Xml.Document> implements BuildFile {
5979

@@ -83,6 +103,7 @@ protected List<SourceFile> visit(List<SourceFile> before, ExecutionContext ctx)
83103
List<Parser.Input> parserInput = mavenFiles.stream()
84104
.map(m -> new Parser.Input(
85105
m.getSourcePath(),
106+
null,
86107
() -> new ByteArrayInputStream(m.printAll().getBytes(StandardCharsets.UTF_8)),
87108
!Files.exists(m.getSourcePath())
88109
)
@@ -345,7 +366,7 @@ protected void addDependenciesInner(List<Dependency> dependencies) {
345366
apply(r);
346367
apply(new RefreshPomModel());
347368
List<Dependency> exclusions = dependencies.stream()
348-
.filter(d -> false == d.getExclusions().isEmpty())
369+
.filter(not(d -> d.getExclusions().isEmpty()))
349370
.flatMap(d -> d.getExclusions().stream())
350371
.collect(Collectors.toList());
351372

@@ -385,7 +406,7 @@ private boolean hasEffectiveDependency(Dependency d) {
385406
* Does not updateClasspathRegistry
386407
*/
387408
private void excludeDependenciesInner(List<Dependency> exclusions) {
388-
if (false == exclusions.isEmpty()) {
409+
if (!exclusions.isEmpty()) {
389410
Dependency excludedDependency = exclusions.get(0);
390411
ExcludeDependency excludeDependency = new ExcludeDependency(excludedDependency.getGroupId(), excludedDependency.getArtifactId(), excludedDependency.getScope());
391412
exclusions.stream().skip(1).forEach(d -> excludeDependency.doNext(new ExcludeDependency(d.getGroupId(), d.getArtifactId(), d.getScope())));
@@ -397,14 +418,13 @@ private void excludeDependenciesInner(List<Dependency> exclusions) {
397418
private void updateClasspathRegistry() {
398419
ClasspathRegistry instance = ClasspathRegistry.getInstance();
399420
// FIXME: removed dependencies must be removed from ProjectDependenciesRegistry too
400-
Set<ResolvedDependency> compileDependencies = getPom().getDependencies().get(Scope.Compile).stream().collect(Collectors.toSet());
421+
Set<ResolvedDependency> compileDependencies = new HashSet<>(getPom().getDependencies().get(Scope.Compile));
401422
Set<ResolvedDependency> testDependencies = getPom().getDependencies().get(Scope.Test)
402423
.stream()
403424
.flatMap(d -> d.getDependencies().stream())
404425
.collect(Collectors.toSet());
405426
compileDependencies.addAll(testDependencies);
406-
compileDependencies.stream()
407-
.forEach(instance::addDependency);
427+
compileDependencies.forEach(instance::addDependency);
408428
}
409429

410430
private Recipe getAddDependencyRecipe(Dependency dependency) {
@@ -448,16 +468,20 @@ public List<Dependency> getDependencyManagement() {
448468
return Collections.emptyList();
449469
}
450470
return pom.getPom().getDependencyManagement().stream()
451-
.map(d -> Dependency.builder()
452-
.groupId(d.getGroupId())
453-
.artifactId(d.getArtifactId())
454-
.version(d.getVersion())
455-
.scope(scopeString(d.getScope()))
456-
.build())
471+
.map(this::getDependency)
457472
.distinct()
458473
.collect(Collectors.toList());
459474
}
460475

476+
private Dependency getDependency(ResolvedManagedDependency d) {
477+
return Dependency.builder()
478+
.groupId(d.getGroupId())
479+
.artifactId(d.getArtifactId())
480+
.version(d.getVersion())
481+
.scope(scopeString(d.getScope()))
482+
.build();
483+
}
484+
461485
@Override
462486
public void addToDependencyManagementInner(Dependency dependency) {
463487
AddOrUpdateDependencyManagement addOrUpdateDependencyManagement = new AddOrUpdateDependencyManagement(dependency);
@@ -473,7 +497,8 @@ public void addToDependencyManagementInner(Dependency dependency) {
473497
public List<Path> getResolvedDependenciesPaths() {
474498
RewriteMavenArtifactDownloader rewriteMavenArtifactDownloader = new RewriteMavenArtifactDownloader();
475499
return getPom().getDependencies().get(Scope.Provided).stream()
476-
.map(d -> rewriteMavenArtifactDownloader.downloadArtifact(d)).collect(Collectors.toList());
500+
.map(rewriteMavenArtifactDownloader::downloadArtifact)
501+
.collect(Collectors.toList());
477502

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

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

Lines changed: 1 addition & 4 deletions
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

Lines changed: 6 additions & 6 deletions
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

Lines changed: 6 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 3 additions & 7 deletions
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

Lines changed: 11 additions & 6 deletions
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;
@@ -35,17 +35,22 @@
3535
@Component
3636
public class RewritePlainTextParser extends PlainTextParser {
3737
public List<PlainText> parseInputs(Iterable<Parser.Input> sources, @Nullable Path relativeTo, ExecutionContext ctx) {
38-
List<PlainText> plainTexts = new ArrayList();
39-
Iterator var5 = sources.iterator();
38+
List<PlainText> plainTexts = new ArrayList<>();
39+
Iterator<Input> iterator = sources.iterator();
4040
ParsingEventListener parsingListener = ParsingExecutionContextView.view(ctx).getParsingListener();
4141

42-
while(var5.hasNext()) {
43-
Parser.Input source = (Parser.Input)var5.next();
44-
PlainText plainText = new PlainText(Tree.randomId(), relativeTo == null ? source.getPath() : relativeTo.relativize(source.getPath()).normalize(), source.getSource().getCharset().name(), source.getSource().isCharsetBomMarked(), Markers.EMPTY, source.getSource().readFully());
42+
while(iterator.hasNext()) {
43+
Parser.Input source = iterator.next();
44+
PlainText plainText = new PlainText(Tree.randomId(), getSourcePath(relativeTo, source), Markers.EMPTY, source.getSource().getCharset().name(), source.getSource().isCharsetBomMarked(), null, null, source.getSource().readFully());
4545
plainTexts.add(plainText);
4646
parsingListener.parsed(source, plainText);
4747
}
4848

4949
return plainTexts;
5050
}
51+
52+
@NotNull
53+
private Path getSourcePath(Path relativeTo, Input source) {
54+
return relativeTo == null ? source.getPath() : relativeTo.relativize(source.getPath()).normalize();
55+
}
5156
}

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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.springframework.sbm.project.resource;
1717

18-
import lombok.extern.slf4j.Slf4j;
1918
import org.jetbrains.annotations.NotNull;
2019
import org.openrewrite.Parser;
2120
import org.openrewrite.java.JavaParser;
@@ -38,15 +37,28 @@
3837
import org.springframework.sbm.java.util.JavaSourceUtil;
3938
import org.springframework.sbm.openrewrite.RewriteExecutionContext;
4039
import org.springframework.sbm.project.TestDummyResource;
41-
import org.springframework.sbm.project.parser.*;
40+
import org.springframework.sbm.project.parser.DependencyHelper;
41+
import org.springframework.sbm.project.parser.JavaProvenanceMarkerFactory;
42+
import org.springframework.sbm.project.parser.MavenProjectParser;
43+
import org.springframework.sbm.project.parser.ProjectContextInitializer;
44+
import org.springframework.sbm.project.parser.ResourceParser;
45+
import org.springframework.sbm.project.parser.RewriteJsonParser;
46+
import org.springframework.sbm.project.parser.RewritePlainTextParser;
47+
import org.springframework.sbm.project.parser.RewriteYamlParser;
4248
import org.springframework.sbm.properties.parser.RewritePropertiesParser;
4349
import org.springframework.sbm.xml.parser.RewriteXmlParser;
4450

4551
import java.io.ByteArrayInputStream;
4652
import java.io.File;
4753
import java.nio.charset.StandardCharsets;
4854
import java.nio.file.Path;
49-
import java.util.*;
55+
import java.util.ArrayList;
56+
import java.util.Arrays;
57+
import java.util.Comparator;
58+
import java.util.LinkedHashMap;
59+
import java.util.List;
60+
import java.util.Map;
61+
import java.util.Optional;
5062
import java.util.stream.Collectors;
5163

5264
import static org.mockito.Mockito.mock;
@@ -531,7 +543,7 @@ private List<Resource> mapToResources(Map<Path, String> resources) {
531543
}
532544

533545
private Parser.Input createParserInput(Path path, String value) {
534-
return new Parser.Input(path, () -> new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8)), true);
546+
return new Parser.Input(path, null, () -> new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8)), true);
535547
}
536548

537549

0 commit comments

Comments
 (0)