From 6685be6d46fabec6a8d021af350e67f47b7ebc9e Mon Sep 17 00:00:00 2001 From: Jonathan Schneider Date: Sat, 3 Oct 2026 15:46:19 +0100 Subject: [PATCH 1/3] jetty-ee9-java-baseline: align Jetty dependencies packages and Java baseline --- .../migrate/jakarta/HasJettyDependency.java | 81 +++++++++ .../jakarta/JettyConnectorGetPort.java | 58 ++++++ .../META-INF/rewrite/jakarta-ee-9.yml | 41 +++++ .../migrate/jakarta/JettyUpgradeEE9Test.java | 168 ++++++++++++++++++ 4 files changed, 348 insertions(+) create mode 100644 src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java create mode 100644 src/main/java/org/openrewrite/java/migrate/jakarta/JettyConnectorGetPort.java create mode 100644 src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java diff --git a/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java b/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java new file mode 100644 index 0000000000..fe46c2ffe8 --- /dev/null +++ b/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java @@ -0,0 +1,81 @@ +/* + * Copyright 2025 the original author or authors. + *

+ * Licensed under the Moderne Source Available License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * https://docs.moderne.io/licensing/moderne-source-available-license + *

+ * 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.migrate.jakarta; + +import lombok.EqualsAndHashCode; +import lombok.Value; +import org.openrewrite.ExecutionContext; +import org.openrewrite.ScanningRecipe; +import org.openrewrite.Tree; +import org.openrewrite.TreeVisitor; +import org.openrewrite.gradle.marker.GradleProject; +import org.openrewrite.maven.tree.MavenResolutionResult; +import org.openrewrite.marker.SearchResult; + +import java.util.concurrent.atomic.AtomicBoolean; + +@Value +@EqualsAndHashCode(callSuper = false) +public class HasJettyDependency extends ScanningRecipe { + String displayName = "Build uses Jetty before version 12"; + + String description = "Mark the source set when a Maven or Gradle module depends on Jetty 8 through 11. " + + "This permits updating the Java baseline in parent build files as well as the module using Jetty."; + + @Override + public AtomicBoolean getInitialValue(ExecutionContext ctx) { + return new AtomicBoolean(); + } + + @Override + public TreeVisitor getScanner(AtomicBoolean usesJetty) { + return new TreeVisitor() { + @Override + public Tree preVisit(Tree tree, ExecutionContext ctx) { + stopAfterPreVisit(); + tree.getMarkers().findFirst(MavenResolutionResult.class).ifPresent(model -> { + if (model.getDependencies().values().stream().flatMap(java.util.Collection::stream) + .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getVersion()))) { + usesJetty.set(true); + } + }); + tree.getMarkers().findFirst(GradleProject.class).ifPresent(model -> { + if (model.getConfigurations().stream().flatMap(c -> c.getDirectResolved().stream()) + .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getVersion()))) { + usesJetty.set(true); + } + }); + return tree; + } + }; + } + + private static boolean isLegacyJetty(String groupId, String version) { + return groupId != null && ("org.eclipse.jetty".equals(groupId) || groupId.startsWith("org.eclipse.jetty.")) && + version != null && version.matches("(?:8|9|10|11)(?:\\..*)?"); + } + + @Override + public TreeVisitor getVisitor(AtomicBoolean usesJetty) { + return new TreeVisitor() { + @Override + public Tree preVisit(Tree tree, ExecutionContext ctx) { + stopAfterPreVisit(); + return usesJetty.get() ? SearchResult.found(tree) : tree; + } + }; + } +} diff --git a/src/main/java/org/openrewrite/java/migrate/jakarta/JettyConnectorGetPort.java b/src/main/java/org/openrewrite/java/migrate/jakarta/JettyConnectorGetPort.java new file mode 100644 index 0000000000..6ff3815614 --- /dev/null +++ b/src/main/java/org/openrewrite/java/migrate/jakarta/JettyConnectorGetPort.java @@ -0,0 +1,58 @@ +/* + * Copyright 2025 the original author or authors. + *

+ * Licensed under the Moderne Source Available License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * https://docs.moderne.io/licensing/moderne-source-available-license + *

+ * 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.migrate.jakarta; + +import lombok.EqualsAndHashCode; +import lombok.Value; +import org.openrewrite.ExecutionContext; +import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; +import org.openrewrite.java.JavaIsoVisitor; +import org.openrewrite.java.JavaParser; +import org.openrewrite.java.JavaTemplate; +import org.openrewrite.java.MethodMatcher; +import org.openrewrite.java.tree.J; + +@Value +@EqualsAndHashCode(callSuper = false) +public class JettyConnectorGetPort extends Recipe { + String displayName = "Access Jetty connector ports through `NetworkConnector`"; + + String description = "Jetty 9 moved `getPort()` from `Connector` to `NetworkConnector`. " + + "Cast legacy connector receivers to the network connector interface when upgrading Jetty."; + + @Override + public TreeVisitor getVisitor() { + return new JavaIsoVisitor() { + final MethodMatcher getPort = new MethodMatcher("org.eclipse.jetty.server.Connector getPort()"); + final JavaTemplate template = JavaTemplate.builder("((NetworkConnector) #{any()}).getPort()") + .imports("org.eclipse.jetty.server.NetworkConnector") + .javaParser(JavaParser.fromJavaVersion().dependsOn( + "package org.eclipse.jetty.server; public interface NetworkConnector { int getPort(); }")) + .build(); + + @Override + public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) { + J.MethodInvocation m = super.visitMethodInvocation(method, ctx); + if (m.getSelect() != null && getPort.matches(m)) { + maybeAddImport("org.eclipse.jetty.server.NetworkConnector"); + return template.apply(getCursor(), m.getCoordinates().replace(), m.getSelect()); + } + return m; + } + }; + } +} diff --git a/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml b/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml index 3e4b1bec7a..5a87fdfc96 100644 --- a/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml +++ b/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml @@ -1568,6 +1568,8 @@ description: Update Jetty dependencies from version 9 to version 12. preconditions: - org.openrewrite.Singleton recipeList: + - org.openrewrite.java.migrate.jakarta.UpgradeJavaForJetty12 + - org.openrewrite.java.migrate.jakarta.JettyConnectorGetPort - org.openrewrite.java.dependencies.ChangeDependency: oldGroupId: org.eclipse.jetty.websocket oldArtifactId: websocket-api @@ -1640,6 +1642,45 @@ recipeList: newGroupId: org.eclipse.jetty.ee9 newArtifactId: jetty-ee9-annotations newVersion: 12.0.x + - org.openrewrite.java.migrate.jakarta.UpgradeJettyCoreDependencies + - org.openrewrite.java.ChangePackage: + oldPackageName: org.eclipse.jetty.servlet + newPackageName: org.eclipse.jetty.ee9.servlet + recursive: true + - org.openrewrite.java.ChangePackage: + oldPackageName: org.eclipse.jetty.servlets + newPackageName: org.eclipse.jetty.ee9.servlets + recursive: true + - org.openrewrite.java.ChangePackage: + oldPackageName: org.eclipse.jetty.webapp + newPackageName: org.eclipse.jetty.ee9.webapp + recursive: true + - org.openrewrite.java.ChangePackage: + oldPackageName: org.eclipse.jetty.annotations + newPackageName: org.eclipse.jetty.ee9.annotations + recursive: true +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.jakarta.UpgradeJettyCoreDependencies +displayName: Align legacy Jetty core dependencies with Jetty 12 +description: Upgrade explicitly declared Jetty core dependencies alongside the relocated servlet dependencies. +preconditions: + - org.openrewrite.java.migrate.jakarta.HasJettyDependency +recipeList: + - org.openrewrite.java.dependencies.UpgradeDependencyVersion: + groupId: org.eclipse.jetty + artifactId: '*' + newVersion: 12.0.x +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.openrewrite.java.migrate.jakarta.UpgradeJavaForJetty12 +displayName: Use Java 17 for Jetty 12 +description: Update the Java baseline of builds using Jetty to the minimum required by Jetty 12. +preconditions: + - org.openrewrite.java.migrate.jakarta.HasJettyDependency +recipeList: + - org.openrewrite.java.migrate.UpgradeJavaVersion: + version: 17 --- type: specs.openrewrite.org/v1beta/recipe name: org.openrewrite.java.migrate.jakarta.UpdateRestLet2_6 diff --git a/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java b/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java new file mode 100644 index 0000000000..f2fad688cd --- /dev/null +++ b/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java @@ -0,0 +1,168 @@ +/* + * Copyright 2024 the original author or authors. + *

+ * Licensed under the Moderne Source Available License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * https://docs.moderne.io/licensing/moderne-source-available-license + *

+ * 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.migrate.jakarta; + +import org.junit.jupiter.api.Test; +import org.openrewrite.java.JavaParser; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.RewriteTest; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.openrewrite.java.Assertions.java; +import static org.openrewrite.maven.Assertions.pomXml; + +class JettyUpgradeEE9Test implements RewriteTest { + @Override + public void defaults(RecipeSpec spec) { + spec.recipeFromResources("org.openrewrite.java.migrate.jakarta.JettyUpgradeEE9"); + } + + @Test + void alignsServerServletAndJavaVersion() { + rewriteRun( + pomXml( + """ + + 4.0.0 + com.example + demo + 1.0 + + 11 + 11 + + + + org.eclipse.jetty + jetty-server + 9.4.58.v20250814 + + + org.eclipse.jetty + jetty-servlet + 9.4.58.v20250814 + + + + """, + spec -> spec.after(pom -> assertThat(pom) + .doesNotContain("9.4.58.v20250814", ">111712\\.0\\.\\d+") + .actual()) + ) + ); + } + + @Test + void relocatesServletTypes() { + rewriteRun( + spec -> spec.parser(JavaParser.fromJavaVersion().dependsOn( + "package org.eclipse.jetty.servlet; public class ServletContextHandler {}")), + java( + """ + import org.eclipse.jetty.servlet.ServletContextHandler; + class ServerTest { ServletContextHandler context; } + """, + """ + import org.eclipse.jetty.ee9.servlet.ServletContextHandler; + class ServerTest { ServletContextHandler context; } + """ + ) + ); + } + + @Test + void castsLegacyConnectorPortAccess() { + rewriteRun( + spec -> spec.parser(JavaParser.fromJavaVersion().dependsOn( + "package org.eclipse.jetty.server; public interface Connector { int getPort(); }")), + java( + """ + import org.eclipse.jetty.server.Connector; + class ServerTest { int port(Connector connector) { return connector.getPort(); } } + """, + """ + import org.eclipse.jetty.server.Connector; + import org.eclipse.jetty.server.NetworkConnector; + + class ServerTest { int port(Connector connector) { return ((NetworkConnector) connector).getPort(); } } + """ + ) + ); + } + + @Test + void retainsSharedJettySecurityTypes() { + rewriteRun( + spec -> spec.parser(JavaParser.fromJavaVersion().dependsOn( + "package org.eclipse.jetty.security; public class HashLoginService {}")), + java( + """ + import org.eclipse.jetty.security.HashLoginService; + class ServerTest { HashLoginService login; } + """ + ) + ); + } + + @Test + void doesNotChangeJavaVersionWithoutJetty() { + rewriteRun( + pomXml( + """ + + 4.0.0 + com.example + demo + 1.0 + + 8 + 8 + + + """ + ) + ); + } + + @Test + void doesNotDowngradeNewerJetty() { + rewriteRun( + pomXml( + """ + + 4.0.0 + com.example + demo + 1.0 + + 21 + 21 + + + + org.eclipse.jetty + jetty-server + 12.1.0 + + + + """ + ) + ); + } +} From 84ce6b237b31c35ce6b3b8aff915cef9776175c0 Mon Sep 17 00:00:00 2001 From: Jonathan Schneider Date: Sat, 3 Oct 2026 15:52:18 +0100 Subject: [PATCH 2/3] jetty-ee9-java-baseline: leave standalone Jetty utility dependencies unchanged --- .../migrate/jakarta/HasJettyDependency.java | 20 +++++++++----- .../migrate/jakarta/JettyUpgradeEE9Test.java | 27 +++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java b/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java index fe46c2ffe8..0a85a35cef 100644 --- a/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java +++ b/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java @@ -25,6 +25,7 @@ import org.openrewrite.maven.tree.MavenResolutionResult; import org.openrewrite.marker.SearchResult; +import java.util.Arrays; import java.util.concurrent.atomic.AtomicBoolean; @Value @@ -32,7 +33,7 @@ public class HasJettyDependency extends ScanningRecipe { String displayName = "Build uses Jetty before version 12"; - String description = "Mark the source set when a Maven or Gradle module depends on Jetty 8 through 11. " + + String description = "Mark the source set when a Maven or Gradle module depends on servlet or WebSocket artifacts relocated by the Jetty 12 migration. " + "This permits updating the Java baseline in parent build files as well as the module using Jetty."; @Override @@ -48,13 +49,13 @@ public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); tree.getMarkers().findFirst(MavenResolutionResult.class).ifPresent(model -> { if (model.getDependencies().values().stream().flatMap(java.util.Collection::stream) - .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getVersion()))) { + .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getArtifactId(), d.getVersion()))) { usesJetty.set(true); } }); tree.getMarkers().findFirst(GradleProject.class).ifPresent(model -> { if (model.getConfigurations().stream().flatMap(c -> c.getDirectResolved().stream()) - .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getVersion()))) { + .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getArtifactId(), d.getVersion()))) { usesJetty.set(true); } }); @@ -63,9 +64,16 @@ public Tree preVisit(Tree tree, ExecutionContext ctx) { }; } - private static boolean isLegacyJetty(String groupId, String version) { - return groupId != null && ("org.eclipse.jetty".equals(groupId) || groupId.startsWith("org.eclipse.jetty.")) && - version != null && version.matches("(?:8|9|10|11)(?:\\..*)?"); + private static boolean isLegacyJetty(String groupId, String artifactId, String version) { + if (version == null || !version.matches("(?:8|9|10|11)(?:\\..*)?")) { + return false; + } + return "org.eclipse.jetty".equals(groupId) && Arrays.asList( + "apache-jsp", "jetty-servlets", "jetty-servlet", "jetty-webapp", "jetty-security", + "jetty-proxy", "jetty-annotations").contains(artifactId) || + "org.eclipse.jetty.websocket".equals(groupId) && Arrays.asList( + "websocket-api", "websocket-server", "websocket-client", + "javax-websocket-server-impl", "javax-websocket-client-impl").contains(artifactId); } @Override diff --git a/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java b/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java index f2fad688cd..5a60d6814a 100644 --- a/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java +++ b/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java @@ -165,4 +165,31 @@ void doesNotDowngradeNewerJetty() { ) ); } + @Test + void leavesStandaloneJettyCoreAlone() { + rewriteRun( + pomXml( + """ + + 4.0.0 + com.example + demo + 1.0 + + 8 + 8 + + + + org.eclipse.jetty + jetty-util + 9.4.58.v20250814 + + + + """ + ) + ); + } + } From 55de06b2db4e219bf07b630f5459901e98fea2b6 Mon Sep 17 00:00:00 2001 From: Jonathan Schneider Date: Sat, 3 Oct 2026 15:59:51 +0100 Subject: [PATCH 3/3] jetty-ee9-java-baseline: require a direct dependency before upgrading Java --- .../migrate/jakarta/HasJettyDependency.java | 6 +++-- .../resources/META-INF/rewrite/recipes.csv | 12 ++++++--- .../migrate/jakarta/JettyUpgradeEE9Test.java | 26 +++++++++++++++++++ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java b/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java index 0a85a35cef..26e7a8c3cf 100644 --- a/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java +++ b/src/main/java/org/openrewrite/java/migrate/jakarta/HasJettyDependency.java @@ -22,10 +22,11 @@ import org.openrewrite.Tree; import org.openrewrite.TreeVisitor; import org.openrewrite.gradle.marker.GradleProject; -import org.openrewrite.maven.tree.MavenResolutionResult; import org.openrewrite.marker.SearchResult; +import org.openrewrite.maven.tree.MavenResolutionResult; import java.util.Arrays; +import java.util.Collection; import java.util.concurrent.atomic.AtomicBoolean; @Value @@ -48,7 +49,8 @@ public TreeVisitor getScanner(AtomicBoolean usesJetty) { public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); tree.getMarkers().findFirst(MavenResolutionResult.class).ifPresent(model -> { - if (model.getDependencies().values().stream().flatMap(java.util.Collection::stream) + if (model.getDependencies().values().stream().flatMap(Collection::stream) + .filter(d -> d.getDepth() == 0) .anyMatch(d -> isLegacyJetty(d.getGroupId(), d.getArtifactId(), d.getVersion()))) { usesJetty.set(true); } diff --git a/src/main/resources/META-INF/rewrite/recipes.csv b/src/main/resources/META-INF/rewrite/recipes.csv index 0099982b12..aa30f22480 100644 --- a/src/main/resources/META-INF/rewrite/recipes.csv +++ b/src/main/resources/META-INF/rewrite/recipes.csv @@ -220,10 +220,11 @@ maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.j maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.FacesJNDINamesChanged,"JNDI name `jsf/ClientSideSecretKey` has been renamed to `faces/ClientSideSecretKey`, and the `jsf/FlashSecretKey` JNDI name has been renamed to `faces/FlashSecretKey`","The `jsf/ClientSideSecretKey` JNDI name has been renamed to `faces/ClientSideSecretKey`, and the `jsf/FlashSecretKey` JNDI name has been renamed to `faces/FlashSecretKey`. The JNDI keys that have been renamed are updated to allow use of the keys.",3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.FacesManagedBeansRemoved,Substitute removed Faces Managed Beans,"This recipe substitutes Faces Managed Beans, which were deprecated in JavaServer Faces 2.3 and have been removed from Jakarta Faces 4.0.",15,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.FileuploadToFileUpload2,Migrate deprecated `org.apache.commons.fileload` packages to `org.apache.commons.fileload.core`,Migrate deprecated `org.apache.commons.fileload` packages to `org.apache.commons.fileload.core`.,6,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.HasJettyDependency,Build uses Jetty before version 12,Mark the source set when a Maven or Gradle module depends on servlet or WebSocket artifacts relocated by the Jetty 12 migration. This permits updating the Java baseline in parent build files as well as the module using Jetty.,1,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.HasNoJakartaAnnotations,Project has no Jakarta annotations,Mark all source as found per `JavaProject` where no Jakarta annotations are found. This is useful mostly as a precondition for recipes that require Jakarta annotations to be present.,1,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JacksonJavaxToJakarta,Migrate Jackson from javax to jakarta namespace,Java EE has been rebranded to Jakarta EE. This recipe replaces existing Jackson dependencies with their counterparts that are compatible with Jakarta EE 9.,23,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" -maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaEE10,Migrate to Jakarta EE 10,"These recipes help with the Migration to Jakarta EE 10, flagging and updating deprecated methods.",626,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" -maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaEE11,Migrate to Jakarta EE 11,"These recipes help with the Migration to Jakarta EE 11, flagging and updating deprecated methods.",644,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaEE10,Migrate to Jakarta EE 10,"These recipes help with the Migration to Jakarta EE 10, flagging and updating deprecated methods.",644,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaEE11,Migrate to Jakarta EE 11,"These recipes help with the Migration to Jakarta EE 11, flagging and updating deprecated methods.",662,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaFacesConfigXml4,Migrate xmlns entries in `faces-config.xml` files,Jakarta EE 10 uses Faces version 4.,3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaFacesEcmaScript,Migrate JSF values inside EcmaScript files,"Convert JSF to Faces values inside JavaScript,TypeScript, and Properties files.",4,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JakartaFacesTagLibraryXml4,Migrate xmlns entries in `taglib.xml` files,Faces 4 uses facelet-taglib 4.0.,3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, @@ -253,7 +254,7 @@ maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.j maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxJspToJakartaJsp,Migrate deprecated `javax.jsp` packages to `jakarta.jsp`,"Java EE has been rebranded to Jakarta EE, necessitating a package relocation.",6,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxJwsToJakartaJws,Migrate deprecated `javax.jws` packages to `jakarta.jws`,"Java EE has been rebranded to Jakarta EE, necessitating a package relocation.",6,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxMailToJakartaMail,Migrate deprecated `javax.mail` packages to `jakarta.mail`,"Java EE has been rebranded to Jakarta EE, necessitating a package relocation.",8,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, -maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta,Migrate to Jakarta EE 9,Jakarta EE 9 is the first version of Jakarta EE that uses the new `jakarta` namespace.,400,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta,Migrate to Jakarta EE 9,Jakarta EE 9 is the first version of Jakarta EE that uses the new `jakarta` namespace.,418,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxOrmXmlToJakartaOrmXml,Migrate xmlns entries in `orm.xml` files,"Java EE has been rebranded to Jakarta EE, necessitating an XML namespace relocation.",4,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxPersistenceToJakartaPersistence,Migrate deprecated `javax.persistence` packages to `jakarta.persistence`,"Java EE has been rebranded to Jakarta EE, necessitating a package relocation.",6,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxPersistenceXmlToJakartaPersistenceXml,Migrate xmlns entries in `persistence.xml` files,"Java EE has been rebranded to Jakarta EE, necessitating an XML namespace relocation.",6,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, @@ -273,8 +274,9 @@ maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.j maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxXmlToJakartaXmlXJCBinding,Migrate XJC Bindings to Jakata XML,"Java EE has been rebranded to Jakarta EE, migrates the namespace and version in XJC bindings.",3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JavaxXmlWsMigrationToJakartaXmlWs,Migrate deprecated `javax.xml.ws` packages to `jakarta.xml.ws`,"Java EE has been rebranded to Jakarta EE, necessitating a package relocation.",8,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JerseyLoggingFilterToFeature,Replace Jersey logging filter with logging feature,"Replace the removed Jersey `LoggingFilter(Logger, boolean)` constructor when passed directly to JAX-RS `Configurable.register`, preserving the logger and entity logging setting. Other usages require manual migration.",1,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JettyConnectorGetPort,Access Jetty connector ports through `NetworkConnector`,Jetty 9 moved `getPort()` from `Connector` to `NetworkConnector`. Cast legacy connector receivers to the network connector interface when upgrading Jetty.,1,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JettyUpgradeEE10,Update Jetty EE9 to Jetty EE10,"Update Jetty dependencies from EE9 to EE10, changing the groupId and artifactIds as needed.",14,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, -maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JettyUpgradeEE9,Update Jetty9 to Jetty12,Update Jetty dependencies from version 9 to version 12.,13,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JettyUpgradeEE9,Update Jetty9 to Jetty12,Update Jetty dependencies from version 9 to version 12.,31,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.JohnzonJavaxToJakarta,Migrate Johnzon from javax to jakarta namespace,Java EE has been rebranded to Jakarta EE. This recipe replaces existing Johnzon dependencies with their counterparts that are compatible with Jakarta EE 9.,3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.MigrateFastjsonForJakarta10,Update Fastjson for Jakarta EE 10,Update Fastjson to be compatible with Jakarta EE 10.,19,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.MigratePluginsForJakarta10,Update Plugins for Jakarta EE 10,Update plugin to be compatible with Jakarta EE 10.,3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,,"[{""name"":""org.openrewrite.maven.table.MavenMetadataFailures"",""displayName"":""Maven metadata failures"",""instanceName"":""Maven metadata failures"",""description"":""Attempts to resolve maven metadata that failed."",""columns"":[{""name"":""group"",""type"":""String"",""displayName"":""Group id"",""description"":""The groupId of the artifact for which the metadata download failed.""},{""name"":""artifactId"",""type"":""String"",""displayName"":""Artifact id"",""description"":""The artifactId of the artifact for which the metadata download failed.""},{""name"":""version"",""type"":""String"",""displayName"":""Version"",""description"":""The version of the artifact for which the metadata download failed.""},{""name"":""mavenRepositoryUri"",""type"":""String"",""displayName"":""Maven repository"",""description"":""The URL of the Maven repository that the metadata download failed on.""},{""name"":""snapshots"",""type"":""String"",""displayName"":""Snapshots"",""description"":""Does the repository support snapshots.""},{""name"":""releases"",""type"":""String"",""displayName"":""Releases"",""description"":""Does the repository support releases.""},{""name"":""failure"",""type"":""String"",""displayName"":""Failure"",""description"":""The reason the metadata download failed.""}]}]" @@ -318,6 +320,8 @@ maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.j maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.UpgradeFaces3OpenSourceLibraries,Upgrade Faces open source libraries,"Upgrade PrimeFaces, OmniFaces, and MyFaces libraries to Jakarta EE9 versions.",8,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.UpgradeFaces41OpenSourceLibraries,Upgrade Faces open source libraries,Upgrade OmniFaces and MyFaces/Mojarra libraries to Jakarta EE11 versions.,5,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.UpgradeFaces4OpenSourceLibraries,Upgrade Faces open source libraries,"Upgrade PrimeFaces, OmniFaces, and MyFaces libraries to Jakarta EE10 versions.",8,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.UpgradeJavaForJetty12,Use Java 17 for Jetty 12,Update the Java baseline of builds using Jetty to the minimum required by Jetty 12.,11,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, +maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.UpgradeJettyCoreDependencies,Align legacy Jetty core dependencies with Jetty 12,Upgrade explicitly declared Jetty core dependencies alongside the relocated servlet dependencies.,2,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.UpgradeMavenEjbPluginConfiguration,Set `maven-ejb-plugin` ejbVersion to 4.0,"Updates the `` configuration of `maven-ejb-plugin` to `4.0` when the current value (or its resolved Maven property) indicates EJB 3.x. Handles the common pattern where `` is coupled to the `javax.ejb-api` dependency version via a shared property, decoupling them after migration.",1,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.WeldToJakarta,Migrate Weld implementations to Jakarta CDI,"Replace legacy Weld core artifacts and upgrade javax-based Weld implementations to Weld 4, which implements Jakarta CDI 3.",3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, maven,org.openrewrite.recipe:rewrite-migrate-java,org.openrewrite.java.migrate.jakarta.WsWsocServerContainerDeprecation,Replace `doUpgrade(..)` with `ServerContainer.upgradeHttpToWebSocket(..)`,Deprecated `WsWsocServerContainer.doUpgrade(..)` is replaced by the Jakarta WebSocket 2.1 specification `ServerContainer.upgradeHttpToWebSocket(..)`.,3,,Jakarta,Modernize,Java,,Recipes for migrating to [Jakarta EE](https://jakarta.ee/).,Modernize your code to best use the project's current JDK version. Take advantage of newly available APIs and reduce the dependency of your code on third party dependencies where there is equivalent functionality in the Java standard library.,Basic building blocks for transforming Java code.,, diff --git a/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java b/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java index 5a60d6814a..aa96101b00 100644 --- a/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java +++ b/src/test/java/org/openrewrite/java/migrate/jakarta/JettyUpgradeEE9Test.java @@ -191,5 +191,31 @@ void leavesStandaloneJettyCoreAlone() { ) ); } + @Test + void leavesTransitiveServletDependenciesAlone() { + rewriteRun( + pomXml( + """ + + 4.0.0 + com.example + demo + 1.0 + + 8 + 8 + + + + org.eclipse.jetty + jetty-deploy + 9.4.58.v20250814 + + + + """ + ) + ); + } }