Skip to content

Commit

Permalink
Generate comments for deprecated properties (#639)
Browse files Browse the repository at this point in the history
* Add relevant context to description of AddSpringDependencyManagementPlugin

* Adopt RemoveMethodInvocations from rewrite-java

* Remove now-defunct rewrite-templating dependency

* refactor: Update Gradle wrapper

Use this link to re-run the recipe: https://app.moderne.io/recipes/org.openrewrite.gradle.UpdateGradleWrapper?organizationId=T3BlblJld3JpdGU%3D#defaults=W3sibmFtZSI6ImFkZElmTWlzc2luZyIsInZhbHVlIjoiRmFsc2UifV0=

Co-authored-by: Moderne <[email protected]>

* Fix method type following openrewrite/rewrite#4688

* Update method type as well when removing arguments

* Fix incorrect path computation for Spring API endpoints (#632)

* Fix incorrect path computation for Spring API endpoints

The current logic did not cover the case where a `RequestMapping` with a path was defined on the Controller class, and no paths were defined in the `*Mapping` at the method level.

* Do not disable the FindApiEndpointsTest

* Simplify FindApiEndpoints and SpringRequestMapping

* Add for now failing unit test

* AnnotationMatcher does not support wildcards

---------

Co-authored-by: Tim te Beek <[email protected]>

* Add commons codec dependency upgrade

* feat: Added recipe to comment deprecated and removed properties without alternative

Refs: #634

* feat: Added licences in recipe and test files

Refs: #634

* feat: Removed NotNull annotations

Refs: #634

* Update src/test/java/org/openrewrite/java/spring/InlineCommentSpringPropertiesTest.java

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update src/test/java/org/openrewrite/java/spring/InlineCommentSpringPropertiesTest.java

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update src/main/java/org/openrewrite/java/spring/InlineCommentSpringProperties.java

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update src/main/java/org/openrewrite/java/spring/InlineCommentSpringProperties.java

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update src/test/java/org/openrewrite/java/spring/InlineCommentSpringPropertiesTest.java

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat: Removed doubled import

Refs: #634

* feat: Generated comment recipes for deprecated properties without replacement

Refs: #634

* feat: Updated comment recipes with the reason

Refs: #634

* Update src/test/java/org/openrewrite/java/spring/internal/GeneratePropertiesMigratorConfiguration.java

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Remove unused import in GeneratePropertiesMigratorConfiguration

* Update assertions to ensure yaml comments are modeled as such

* fixing SpringFoxToSpringDoc to use 1.x-appropriate springdoc artifact

helps with #638

* ChangeSpringPropertyKey does not yet fully support glob

* RenameBean Scanning Recipe Refactor (#630)

* Refactored the RenameBean recipe into a scanning recipe to allow renaming usages that occur outside the file where the bean is defined.

* Add missing language hints

* Remove unused `fromDeclaration` methods

---------

Co-authored-by: Hudson, Ryan <[email protected]>
Co-authored-by: Tim te Beek <[email protected]>

* Add MigrateSpringdocCommon recipe (#633)

* Add MigrateSpringdocCommon recipe

* Apply suggestions from bot

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix syntax messed up by bot

* Add MigrateSpringdocCommon recipe

* Apply suggestions from bot

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix syntax messed up by bot

* Fix build fail on SpringBoot_1_5

* Fix rebase error

* Move to Spring Boot 2.6 tests, to match inclusion in `spring-boot-26.yml`

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Tim te Beek <[email protected]>

* Add ChangeMethodParameter for modify parameters in Spring Batch method declaration (#631)

* Add ChangeMethodParameter for modify parameters in method declaration

Signed-off-by: Kun Chang <[email protected]>

* Minor polish

* Add correct year

* Apply suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Add UpgradeSkipPolicyParameterType for Spring Batch

Signed-off-by: Kun Chang <[email protected]>

* Apply suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix tests

* Also show ability to change interface methods

---------

Signed-off-by: Kun Chang <[email protected]>
Co-authored-by: Tim te Beek <[email protected]>
Co-authored-by: Tim te Beek <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Reuse recipe that comments out Yaml properties

* Move try into getDeprecations

* Limit comment wrangling to `CommentOutSpringPropertyKey`

* Rename test to match renamed class

* Generate removed property migrations

* Regenerated properties for older Spring Boot version

* Fix invalid property values

---------

Signed-off-by: Kun Chang <[email protected]>
Co-authored-by: Sam Snyder <[email protected]>
Co-authored-by: Tim te Beek <[email protected]>
Co-authored-by: Shannon Pamperl <[email protected]>
Co-authored-by: Moderne <[email protected]>
Co-authored-by: Adrien Loison <[email protected]>
Co-authored-by: Andrei Shakirin <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nick McKinney <[email protected]>
Co-authored-by: Ryan Hudson <[email protected]>
Co-authored-by: Hudson, Ryan <[email protected]>
Co-authored-by: SiBorea <[email protected]>
Co-authored-by: Curtis <[email protected]>
Co-authored-by: Tim te Beek <[email protected]>
  • Loading branch information
14 people authored Nov 26, 2024
1 parent d870f3e commit 167d9ce
Show file tree
Hide file tree
Showing 18 changed files with 1,457 additions and 298 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import org.jspecify.annotations.Nullable;
import org.openrewrite.*;
import org.openrewrite.internal.StringUtils;
import org.openrewrite.properties.ChangePropertyValue;
import org.openrewrite.properties.tree.Properties;
import org.openrewrite.yaml.tree.Yaml;

Expand Down Expand Up @@ -63,7 +62,7 @@ public String getDescription() {

@Option(displayName = "Use relaxed binding",
description = "Whether to match the `propertyKey` using [relaxed binding](https://docs.spring.io/spring-boot/docs/2.5.6/reference/html/features.html#features.external-config.typesafe-configuration-properties.relaxed-binding) " +
"rules. Default is `true`. Set to `false` to use exact matching.",
"rules. Default is `true`. Set to `false` to use exact matching.",
required = false)
@Nullable
Boolean relaxedBinding;
Expand All @@ -77,10 +76,8 @@ public Validated validate() {

@Override
public TreeVisitor<?, ExecutionContext> getVisitor() {
ChangePropertyValue changeProperties = new ChangePropertyValue(propertyKey, newValue, oldValue, regex, relaxedBinding);
org.openrewrite.yaml.ChangePropertyValue changeYaml =
new org.openrewrite.yaml.ChangePropertyValue(propertyKey, newValue, oldValue, regex, relaxedBinding, null);

Recipe changeProperties = new org.openrewrite.properties.ChangePropertyValue(propertyKey, newValue, oldValue, regex, relaxedBinding);
Recipe changeYaml = new org.openrewrite.yaml.ChangePropertyValue(propertyKey, newValue, oldValue, regex, relaxedBinding, null);
return new TreeVisitor<Tree, ExecutionContext>() {
@Override
public @Nullable Tree visit(@Nullable Tree tree, ExecutionContext ctx) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* Copyright 2021 the original author or authors.
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* https://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openrewrite.java.spring;

import lombok.EqualsAndHashCode;
import lombok.Value;
import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import org.openrewrite.*;
import org.openrewrite.properties.tree.Properties;
import org.openrewrite.yaml.tree.Yaml;

@EqualsAndHashCode(callSuper = false)
@Value
public class CommentOutSpringPropertyKey extends Recipe {

@Override
public String getDisplayName() {
return "Comment out Spring properties";
}

@Override
public String getDescription() {
return "Add comment to specified Spring properties, and comment out the property.";
}

@Option(displayName = "Property key",
description = "The name of the property key to comment out.",
example = "management.metrics.binders.files.enabled")
String propertyKey;

@Option(displayName = "Comment",
description = "Comment to replace the property key.",
example = "This property is deprecated and no longer applicable starting from Spring Boot 3.0.x")
String comment;

@Override
public TreeVisitor<?, ExecutionContext> getVisitor() {
String inlineComment = " # " + comment;
String regex = "(?<!" + inlineComment + ")$";
Recipe changeProperties = new org.openrewrite.properties.ChangePropertyValue(propertyKey, inlineComment, regex, true, null);
Recipe changeYaml = new org.openrewrite.yaml.CommentOutProperty(propertyKey, comment) ;
return new TreeVisitor<Tree, ExecutionContext>() {
@Override
public @Nullable Tree preVisit(@NonNull Tree tree, ExecutionContext ctx) {
stopAfterPreVisit();
if (tree instanceof Properties.File) {
return changeProperties.getVisitor().visit(tree, ctx);
} else if (tree instanceof Yaml.Documents) {
return changeYaml.getVisitor().visit(tree, ctx);
}
return tree;
}
};
}
}
Loading

0 comments on commit 167d9ce

Please sign in to comment.