Skip to content

Commit 1438b88

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents eae4b50 + bde9d42 commit 1438b88

File tree

174 files changed

+7873
-2719
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+7873
-2719
lines changed

.claude/settings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
{
22
"permissions": {
33
"allow": [
4+
"Bash(npm view:*)",
5+
"Bash(npx:*)",
6+
"Bash(npm ls:*)",
7+
"Bash(npm install:*)",
48
"Bash(../gradlew dependencies:*)",
59
"Bash(./gradlew:*)",
610
"Bash(cat:*)",

.github/workflows/dependency-submission.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
steps:
1616
- name: Checkout sources
1717
uses: actions/checkout@v5
18-
- uses: actions/setup-java@v4
18+
- uses: actions/setup-java@v5
1919
with:
2020
distribution: temurin
2121
java-version: 21

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ IDE.properties
1515
.tool-versions
1616
.aider*
1717
/worktrees
18+
rewrite-gradle-tooling-model/model/src/main/resources/test-manifest.txt

.run/JS RPC server (socket).run.xml

Lines changed: 0 additions & 5 deletions
This file was deleted.

.run/node rewrite-rpc.run.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="node rewrite-rpc" type="ChromiumRemoteDebugType" factoryName="Chromium Remote" port="9229">
3+
<method v="2" />
4+
</configuration>
5+
</component>

rewrite-benchmarks/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ dependencies {
1111
jmh(project(":rewrite-core"))
1212
jmh(project(":rewrite-java-21"))
1313
jmh(project(":rewrite-maven"))
14-
jmh("org.rocksdb:rocksdbjni:latest.release")
14+
jmh("org.rocksdb:rocksdbjni:10.2.1")
1515
jmh("org.openjdk.jmh:jmh-core:latest.release")
1616
jmh("org.openjdk.jol:jol-core:latest.release")
1717
jmh("io.github.fastfilter:fastfilter:latest.release")

rewrite-core/src/main/java/org/openrewrite/config/ClasspathScanningLoader.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ public class ClasspathScanningLoader implements ResourceLoader {
4545
private final LinkedHashSet<RecipeDescriptor> recipeDescriptors = new LinkedHashSet<>();
4646
private final List<CategoryDescriptor> categoryDescriptors = new ArrayList<>();
4747

48-
private final Map<String, List<Contributor>> recipeAttributions = new HashMap<>();
4948
private final Map<String, List<RecipeExample>> recipeExamples = new HashMap<>();
5049

5150
private final ClassLoader classLoader;
@@ -145,11 +144,10 @@ private void scanYaml(ClassGraph classGraph, Properties properties, Collection<?
145144
}
146145
categoryDescriptors.addAll(resourceLoader.listCategoryDescriptors());
147146
styles.addAll(resourceLoader.listStyles());
148-
recipeAttributions.putAll(resourceLoader.listContributors());
149147
recipeExamples.putAll(resourceLoader.listRecipeExamples());
150148
}
151149
for (YamlResourceLoader resourceLoader : yamlResourceLoaders) {
152-
recipeDescriptors.addAll(resourceLoader.listRecipeDescriptors(recipes.values(), recipeAttributions, recipeExamples));
150+
recipeDescriptors.addAll(resourceLoader.listRecipeDescriptors(recipes.values(), recipeExamples));
153151
}
154152
}
155153
}
@@ -255,7 +253,6 @@ public Map<String, List<RecipeExample>> listRecipeExamples() {
255253

256254
@Override
257255
public Map<String, List<Contributor>> listContributors() {
258-
ensureScanned();
259-
return recipeAttributions;
256+
return emptyMap();
260257
}
261258
}

rewrite-core/src/main/java/org/openrewrite/config/DeclarativeRecipe.java

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.openrewrite.config;
1717

1818
import com.fasterxml.jackson.annotation.JsonIgnore;
19+
import com.google.errorprone.annotations.InlineMe;
1920
import lombok.*;
2021
import lombok.experimental.NonFinal;
2122
import org.intellij.lang.annotations.Language;
@@ -90,19 +91,31 @@ public Duration getEstimatedEffortPerOccurrence() {
9091
estimatedEffortPerOccurrence;
9192
}
9293

93-
public void initialize(Collection<Recipe> availableRecipes, Map<String, List<Contributor>> recipeToContributors) {
94+
public void initialize(Collection<Recipe> availableRecipes) {
9495
Map<String, Recipe> recipeMap = new HashMap<>();
9596
availableRecipes.forEach(r -> recipeMap.putIfAbsent(r.getName(), r));
96-
initialize(uninitializedRecipes, recipeList, recipeMap::get, recipeToContributors);
97-
initialize(uninitializedPreconditions, preconditions, recipeMap::get, recipeToContributors);
97+
initialize(uninitializedRecipes, recipeList, recipeMap::get);
98+
initialize(uninitializedPreconditions, preconditions, recipeMap::get);
99+
}
100+
101+
@Deprecated
102+
@InlineMe(replacement = "this.initialize(availableRecipes)")
103+
public void initialize(Collection<Recipe> availableRecipes, Map<String, List<Contributor>> recipeToContributors) {
104+
this.initialize(availableRecipes);
98105
}
99106

107+
public void initialize(Function<String, @Nullable Recipe> availableRecipes) {
108+
initialize(uninitializedRecipes, recipeList, availableRecipes);
109+
initialize(uninitializedPreconditions, preconditions, availableRecipes);
110+
}
111+
112+
@Deprecated
113+
@InlineMe(replacement = "this.initialize(availableRecipes)")
100114
public void initialize(Function<String, @Nullable Recipe> availableRecipes, Map<String, List<Contributor>> recipeToContributors) {
101-
initialize(uninitializedRecipes, recipeList, availableRecipes, recipeToContributors);
102-
initialize(uninitializedPreconditions, preconditions, availableRecipes, recipeToContributors);
115+
this.initialize(availableRecipes);
103116
}
104117

105-
private void initialize(List<Recipe> uninitialized, List<Recipe> initialized, Function<String, @Nullable Recipe> availableRecipes, Map<String, List<Contributor>> recipeToContributors) {
118+
private void initialize(List<Recipe> uninitialized, List<Recipe> initialized, Function<String, @Nullable Recipe> availableRecipes) {
106119
initialized.clear();
107120
for (int i = 0; i < uninitialized.size(); i++) {
108121
Recipe recipe = uninitialized.get(i);
@@ -111,21 +124,20 @@ private void initialize(List<Recipe> uninitialized, List<Recipe> initialized, Fu
111124
Recipe subRecipe = availableRecipes.apply(recipeFqn);
112125
if (subRecipe != null) {
113126
if (subRecipe instanceof DeclarativeRecipe) {
114-
((DeclarativeRecipe) subRecipe).initialize(availableRecipes, recipeToContributors);
127+
((DeclarativeRecipe) subRecipe).initialize(availableRecipes);
115128
}
116129
initialized.add(subRecipe);
117130
} else {
118131
initValidation = initValidation.and(
119132
invalid(name + ".recipeList" +
120-
"[" + i + "] (in " + source + ")",
133+
"[" + i + "] (in " + source + ")",
121134
recipeFqn,
122135
"recipe '" + recipeFqn + "' does not exist.",
123136
null));
124137
}
125138
} else {
126-
recipe.setContributors(recipeToContributors.getOrDefault(recipe.getName(), emptyList()));
127139
if (recipe instanceof DeclarativeRecipe) {
128-
((DeclarativeRecipe) recipe).initialize(availableRecipes, recipeToContributors);
140+
((DeclarativeRecipe) recipe).initialize(availableRecipes);
129141
}
130142
initialized.add(recipe);
131143
}
@@ -184,7 +196,7 @@ public String getDisplayName() {
184196
@Override
185197
public String getDescription() {
186198
return "Evaluates a precondition and makes that result available to the preconditions of other recipes. " +
187-
"\"bellwether\", noun - One that serves as a leader or as a leading indicator of future trends.";
199+
"\"bellwether\", noun - One that serves as a leader or as a leading indicator of future trends.";
188200
}
189201

190202
Supplier<TreeVisitor<?, ExecutionContext>> precondition;
@@ -323,7 +335,7 @@ public final List<Recipe> getRecipeList() {
323335

324336
private TreeVisitor<?, ExecutionContext> orVisitors(Recipe recipe) {
325337
List<TreeVisitor<?, ExecutionContext>> conditions = new ArrayList<>();
326-
if(recipe instanceof ScanningRecipe) {
338+
if (recipe instanceof ScanningRecipe) {
327339
//noinspection rawtypes
328340
ScanningRecipe scanning = (ScanningRecipe) recipe;
329341
//noinspection unchecked
@@ -357,7 +369,7 @@ private static boolean isScanningRequired(Recipe recipe) {
357369
if (recipe instanceof ScanningRecipe) {
358370
// DeclarativeRecipe is technically a ScanningRecipe, but it only needs the
359371
// scanning phase if it or one of its sub-recipes or preconditions is a ScanningRecipe
360-
if(recipe instanceof DeclarativeRecipe) {
372+
if (recipe instanceof DeclarativeRecipe) {
361373
for (Recipe precondition : ((DeclarativeRecipe) recipe).getPreconditions()) {
362374
if (isScanningRequired(precondition)) {
363375
return true;
@@ -438,30 +450,9 @@ protected RecipeDescriptor createRecipeDescriptor() {
438450
getExamples(), source);
439451
}
440452

441-
@Value
442-
private static class NameEmail {
443-
String name;
444-
String email;
445-
}
446-
447453
@Override
448454
public List<Contributor> getContributors() {
449-
if (contributors == null) {
450-
Map<NameEmail, Integer> contributorToLineCount = new HashMap<>();
451-
List<Contributor> combined = new ArrayList<>();
452-
for (Recipe recipe : getRecipeList()) {
453-
for (Contributor contributor : recipe.getContributors()) {
454-
NameEmail nameEmail = new NameEmail(contributor.getName(), contributor.getEmail());
455-
contributorToLineCount.put(nameEmail, contributorToLineCount.getOrDefault(nameEmail, 0) + contributor.getLineCount());
456-
}
457-
}
458-
for (Map.Entry<NameEmail, Integer> contributorEntry : contributorToLineCount.entrySet()) {
459-
combined.add(new Contributor(contributorEntry.getKey().getName(), contributorEntry.getKey().getEmail(), contributorEntry.getValue()));
460-
}
461-
combined.sort(Comparator.comparing(Contributor::getLineCount).reversed());
462-
contributors = combined;
463-
}
464-
return contributors;
455+
return emptyList();
465456
}
466457

467458
@Override

rewrite-core/src/main/java/org/openrewrite/config/Environment.java

Lines changed: 9 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import org.apache.commons.lang3.StringUtils;
1919
import org.jspecify.annotations.Nullable;
20-
import org.openrewrite.Contributor;
2120
import org.openrewrite.Recipe;
2221
import org.openrewrite.RecipeException;
2322
import org.openrewrite.style.NamedStyles;
@@ -35,7 +34,6 @@
3534
import static java.util.function.Function.identity;
3635
import static java.util.stream.Collectors.toList;
3736
import static java.util.stream.Collectors.toMap;
38-
import static org.openrewrite.config.ResourceLoader.RecipeDetail.CONTRIBUTORS;
3937
import static org.openrewrite.config.ResourceLoader.RecipeDetail.EXAMPLES;
4038

4139
public class Environment {
@@ -50,12 +48,10 @@ public List<Recipe> listRecipes() {
5048
Map<String, Recipe> dependencyRecipeMap = new HashMap<>();
5149
dependencyRecipes.forEach(r -> dependencyRecipeMap.putIfAbsent(r.getName(), r));
5250

53-
Map<String, List<Contributor>> recipeToContributors = new HashMap<>();
5451
Map<String, List<RecipeExample>> recipeExamples = new HashMap<>();
5552
for (ResourceLoader r : resourceLoaders) {
5653
if (r instanceof YamlResourceLoader) {
5754
recipeExamples.putAll(r.listRecipeExamples());
58-
recipeToContributors.putAll(r.listContributors());
5955
}
6056
}
6157

@@ -65,22 +61,20 @@ public List<Recipe> listRecipes() {
6561
}
6662
for (Recipe recipe : dependencyRecipes) {
6763
if (recipe instanceof DeclarativeRecipe) {
68-
((DeclarativeRecipe) recipe).initialize(dependencyRecipeMap::get, recipeToContributors);
64+
((DeclarativeRecipe) recipe).initialize(dependencyRecipeMap::get);
6965
}
7066
}
7167

7268
Map<String, Recipe> availableRecipeMap = new HashMap<>(dependencyRecipeMap);
7369
recipes.forEach(r -> availableRecipeMap.putIfAbsent(r.getName(), r));
7470

7571
for (Recipe recipe : recipes) {
76-
recipe.setContributors(recipeToContributors.get(recipe.getName()));
77-
7872
if (recipeExamples.containsKey(recipe.getName())) {
7973
recipe.setExamples(recipeExamples.get(recipe.getName()));
8074
}
8175

8276
if (recipe instanceof DeclarativeRecipe) {
83-
((DeclarativeRecipe) recipe).initialize(availableRecipeMap::get, recipeToContributors);
77+
((DeclarativeRecipe) recipe).initialize(availableRecipeMap::get);
8478
}
8579
}
8680
return recipes;
@@ -93,24 +87,12 @@ public Collection<CategoryDescriptor> listCategoryDescriptors() {
9387
}
9488

9589
public Collection<RecipeDescriptor> listRecipeDescriptors() {
96-
Map<String, List<Contributor>> recipeToContributors = new HashMap<>();
9790
Map<String, List<RecipeExample>> recipeToExamples = new HashMap<>();
9891
for (ResourceLoader r : resourceLoaders) {
9992
if (r instanceof YamlResourceLoader) {
100-
recipeToContributors.putAll(r.listContributors());
10193
recipeToExamples.putAll(r.listRecipeExamples());
10294
} else if (r instanceof ClasspathScanningLoader) {
10395
ClasspathScanningLoader classpathScanningLoader = (ClasspathScanningLoader) r;
104-
105-
Map<String, List<Contributor>> contributors = classpathScanningLoader.listContributors();
106-
for (String key : contributors.keySet()) {
107-
if (recipeToContributors.containsKey(key)) {
108-
recipeToContributors.get(key).addAll(contributors.get(key));
109-
} else {
110-
recipeToContributors.put(key, contributors.get(key));
111-
}
112-
}
113-
11496
Map<String, List<RecipeExample>> examplesMap = classpathScanningLoader.listRecipeExamples();
11597
for (String key : examplesMap.keySet()) {
11698
if (recipeToExamples.containsKey(key)) {
@@ -125,17 +107,11 @@ public Collection<RecipeDescriptor> listRecipeDescriptors() {
125107
List<RecipeDescriptor> result = new ArrayList<>();
126108
for (ResourceLoader r : resourceLoaders) {
127109
if (r instanceof YamlResourceLoader) {
128-
result.addAll((((YamlResourceLoader) r).listRecipeDescriptors(emptyList(), recipeToContributors, recipeToExamples)));
110+
result.addAll((((YamlResourceLoader) r).listRecipeDescriptors(emptyList(), recipeToExamples)));
129111
} else {
130112
Collection<RecipeDescriptor> descriptors = r.listRecipeDescriptors();
131113
for (RecipeDescriptor descriptor : descriptors) {
132-
if (descriptor.getContributors() != null &&
133-
recipeToContributors.containsKey(descriptor.getName())) {
134-
descriptor.getContributors().addAll(recipeToContributors.get(descriptor.getName()));
135-
}
136-
137-
if (descriptor.getExamples() != null &&
138-
recipeToExamples.containsKey(descriptor.getName())) {
114+
if (recipeToExamples.containsKey(descriptor.getName())) {
139115
descriptor.getExamples().addAll(recipeToExamples.get(descriptor.getName()));
140116
}
141117
}
@@ -159,7 +135,7 @@ public Recipe activateRecipes(Collection<String> activeRecipes) {
159135
if (activeRecipes.isEmpty()) {
160136
recipes = emptyList();
161137
} else if (activeRecipes.size() == 1) {
162-
Recipe recipe = loadRecipe(activeRecipes.iterator().next(), CONTRIBUTORS, EXAMPLES);
138+
Recipe recipe = loadRecipe(activeRecipes.iterator().next(), EXAMPLES);
163139
if (recipe != null) {
164140
return recipe;
165141
}
@@ -217,19 +193,12 @@ public Recipe activateRecipes(String... activeRecipes) {
217193
}
218194

219195
boolean includeExamples = ResourceLoader.RecipeDetail.EXAMPLES.includedIn(details);
220-
boolean includeContributors = ResourceLoader.RecipeDetail.CONTRIBUTORS.includedIn(details);
221196

222-
Map<String, List<Contributor>> recipeToContributors = new HashMap<>();
223197
Map<String, List<RecipeExample>> recipeExamples = new HashMap<>();
224-
if (includeContributors || includeExamples) {
198+
if (includeExamples) {
225199
for (ResourceLoader r : resourceLoaders) {
226200
if (r instanceof YamlResourceLoader) {
227-
if (includeExamples) {
228-
recipeExamples.putAll(r.listRecipeExamples());
229-
}
230-
if (includeContributors) {
231-
recipeToContributors.putAll(r.listContributors());
232-
}
201+
recipeExamples.putAll(r.listRecipeExamples());
233202
}
234203
}
235204
}
@@ -242,14 +211,10 @@ public Recipe activateRecipes(String... activeRecipes) {
242211
}
243212
for (Recipe dependency : dependencyRecipes.values()) {
244213
if (dependency instanceof DeclarativeRecipe) {
245-
((DeclarativeRecipe) dependency).initialize(dependencyRecipes::get, recipeToContributors);
214+
((DeclarativeRecipe) dependency).initialize(dependencyRecipes::get);
246215
}
247216
}
248217

249-
if (includeContributors && recipeToContributors.containsKey(recipe.getName())) {
250-
recipe.setContributors(recipeToContributors.get(recipe.getName()));
251-
}
252-
253218
if (includeExamples && recipeExamples.containsKey(recipe.getName())) {
254219
recipe.setExamples(recipeExamples.get(recipe.getName()));
255220
}
@@ -267,7 +232,7 @@ public Recipe activateRecipes(String... activeRecipes) {
267232
}
268233
return null;
269234
};
270-
((DeclarativeRecipe) recipe).initialize(loadFunction, recipeToContributors);
235+
((DeclarativeRecipe) recipe).initialize(loadFunction);
271236
}
272237
return recipe;
273238
}

rewrite-core/src/main/java/org/openrewrite/config/RecipeDescriptor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public class RecipeDescriptor {
5959

6060
List<Maintainer> maintainers;
6161

62+
@Deprecated(/* No longer populated */)
6263
List<Contributor> contributors;
6364

6465
List<RecipeExample> examples;

0 commit comments

Comments
 (0)