From 747cfad1c3c00e3caec70c097c0ec2fb78aeea86 Mon Sep 17 00:00:00 2001 From: SiBorea Date: Wed, 20 Nov 2024 12:17:56 +0800 Subject: [PATCH 1/3] Add MigrateSpringdocCommon recipe --- build.gradle.kts | 1 + .../META-INF/rewrite/springdoc-common.yml | 33 +++++++ .../swagger/MigrateSpringdocCommonTest.java | 85 +++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 src/main/resources/META-INF/rewrite/springdoc-common.yml create mode 100644 src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java diff --git a/build.gradle.kts b/build.gradle.kts index fabd831..b266432 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,6 +19,7 @@ dependencies { testImplementation("org.junit.jupiter:junit-jupiter-engine:latest.release") testRuntimeOnly("io.swagger:swagger-annotations:1.6.13") + testRuntimeOnly("org.springdoc:springdoc-openapi-common:1.6.8") testRuntimeOnly("io.swagger.core.v3:swagger-annotations:2.2.20") testRuntimeOnly("org.gradle:gradle-tooling-api:latest.release") diff --git a/src/main/resources/META-INF/rewrite/springdoc-common.yml b/src/main/resources/META-INF/rewrite/springdoc-common.yml new file mode 100644 index 0000000..0ba3e12 --- /dev/null +++ b/src/main/resources/META-INF/rewrite/springdoc-common.yml @@ -0,0 +1,33 @@ +# +# Copyright 2024 the original author or authors. +#

+# 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 +#

+# https://www.apache.org/licenses/LICENSE-2.0 +#

+# 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. +# + +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.openapi.springdoc.MigrateSpringdocCommon +displayName: Migrate from springdoc-openapi-common to springdoc-openapi-starter-common +description: Migrate from springdoc-openapi-common to springdoc-openapi-starter-common. +tags: + - springdoc + - openapi +recipeList: + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.springdoc.core.customizers.OpenApiCustomiser + newFullyQualifiedTypeName: org.springdoc.core.customizers.OpenApiCustomizer + - org.openrewrite.java.ChangeMethodName: + methodPattern: org.springdoc.core.GroupedOpenApi.Builder addOpenApiCustomiser(..) + newMethodName: addOpenApiCustomizer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.springdoc.core.GroupedOpenApi + newFullyQualifiedTypeName: org.springdoc.core.models.GroupedOpenApi diff --git a/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java b/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java new file mode 100644 index 0000000..5a5cf66 --- /dev/null +++ b/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java @@ -0,0 +1,85 @@ +/* + * Copyright 2024 the original author or authors. + *

+ * 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 + *

+ * https://www.apache.org/licenses/LICENSE-2.0 + *

+ * 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.openapi.swagger; + +import org.junit.jupiter.api.Test; +import static org.openrewrite.java.Assertions.java; +import org.openrewrite.java.JavaParser; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.RewriteTest; +import org.openrewrite.test.TypeValidation; + +public class MigrateSpringdocCommonTest implements RewriteTest { + @Override + public void defaults(RecipeSpec spec) { + spec.recipeFromResources("org.openrewrite.openapi.springdoc.MigrateSpringdocCommon") + .parser(JavaParser.fromJavaVersion().classpath( + "springdoc-openapi-common-1.+", + "swagger-models-2.+" + )); + } + @Test + public void fixCustomiserAndGroupedOpenApi() { + // language=java + rewriteRun( + spec -> spec.afterTypeValidationOptions(TypeValidation.none()), + java( + """ + import io.swagger.v3.oas.models.OpenAPI; + import org.springdoc.core.GroupedOpenApi; + import org.springdoc.core.customizers.OpenApiCustomiser; + + public class OpenApiConfiguration { + + public static void groupedOpenApi() { + GroupedOpenApi.builder() + .group("group") + .pathsToMatch("/api/**") + .addOpenApiCustomiser(new FoobarOpenApiCustomiser()) + .build(); + } + + public static class FoobarOpenApiCustomiser implements OpenApiCustomiser { + @Override + public void customise(OpenAPI openApi) { + } + } + } + """, """ + import io.swagger.v3.oas.models.OpenAPI; + import org.springdoc.core.customizers.OpenApiCustomizer; + import org.springdoc.core.models.GroupedOpenApi; + + public class OpenApiConfiguration { + + public static void groupedOpenApi() { + GroupedOpenApi.builder() + .group("group") + .pathsToMatch("/api/**") + .addOpenApiCustomizer(new FoobarOpenApiCustomiser()) + .build(); + } + + public static class FoobarOpenApiCustomiser implements OpenApiCustomizer { + @Override + public void customise(OpenAPI openApi) { + } + } + } + """ + )); + } +} From 05e88954e1d9926dfb971d3e884f1a99e79d2fc6 Mon Sep 17 00:00:00 2001 From: SiBorea Date: Wed, 20 Nov 2024 12:20:19 +0800 Subject: [PATCH 2/3] Fix format --- .../openapi/swagger/MigrateSpringdocCommonTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java b/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java index 5a5cf66..5703b8f 100644 --- a/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java +++ b/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java @@ -29,8 +29,9 @@ public void defaults(RecipeSpec spec) { .parser(JavaParser.fromJavaVersion().classpath( "springdoc-openapi-common-1.+", "swagger-models-2.+" - )); + )); } + @Test public void fixCustomiserAndGroupedOpenApi() { // language=java From a20ba4f93618c9e859223f912d99a49dbadca8fd Mon Sep 17 00:00:00 2001 From: SiBorea <108953913+SiBorea@users.noreply.github.com> Date: Thu, 21 Nov 2024 09:19:40 +0800 Subject: [PATCH 3/3] Apply suggestions from bot Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../openapi/swagger/MigrateSpringdocCommonTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java b/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java index 5703b8f..66ede06 100644 --- a/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java +++ b/src/test/java/org/openrewrite/openapi/swagger/MigrateSpringdocCommonTest.java @@ -16,8 +16,10 @@ package org.openrewrite.openapi.swagger; import org.junit.jupiter.api.Test; +import org.openrewrite.DocumentExample; import static org.openrewrite.java.Assertions.java; -import org.openrewrite.java.JavaParser; + +class MigrateSpringdocCommonTest implements RewriteTest { import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; import org.openrewrite.test.TypeValidation; @@ -32,7 +34,8 @@ public void defaults(RecipeSpec spec) { )); } - @Test + @DocumentExample + void fixCustomiserAndGroupedOpenApi() { public void fixCustomiserAndGroupedOpenApi() { // language=java rewriteRun(