diff --git a/src/main/resources/META-INF/rewrite/jakarta-faces-3.yml b/src/main/resources/META-INF/rewrite/jakarta-faces-3.yml
index 36e9bd259d..e3c2be46ef 100644
--- a/src/main/resources/META-INF/rewrite/jakarta-faces-3.yml
+++ b/src/main/resources/META-INF/rewrite/jakarta-faces-3.yml
@@ -197,6 +197,8 @@ tags:
- faces
- jsf
preconditions:
+ - org.openrewrite.FindSourceFiles:
+ filePattern: '**/web.xml'
- org.openrewrite.Singleton
recipeList:
- org.openrewrite.xml.ChangeTagAttribute:
@@ -215,14 +217,16 @@ recipeList:
oldValue: (?s).*xml/ns/javaee.*
newValue: https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd
regex: true
- - org.openrewrite.text.FindAndReplace:
- find: "javax."
- replace: "jakarta."
- filePattern: '**/web.xml'
- - org.openrewrite.text.FindAndReplace:
- find: "jakarta.sql."
- replace: "javax.sql."
- filePattern: '**/web.xml'
+ - org.openrewrite.xml.ChangeTagValue:
+ elementName: //*
+ oldValue: "javax\\."
+ newValue: "jakarta."
+ regex: true
+ - org.openrewrite.xml.ChangeTagValue:
+ elementName: //*
+ oldValue: "jakarta\\.sql\\."
+ newValue: "javax.sql."
+ regex: true
---
type: specs.openrewrite.org/v1beta/recipe
name: org.openrewrite.java.migrate.jakarta.JakartaFacesEcmaScript
diff --git a/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxWebXmlToJakartaWebXmlTest.java b/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxWebXmlToJakartaWebXmlTest.java
index 793fdd97ff..c898beba61 100644
--- a/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxWebXmlToJakartaWebXmlTest.java
+++ b/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxWebXmlToJakartaWebXmlTest.java
@@ -179,6 +179,43 @@ void migrateMultilineSchemaLocation() {
);
}
+ @Test
+ void jakartaEE10UpdatesWebXmlToVersion6AfterJavaxReplacement() {
+ rewriteRun(
+ spec -> spec.recipeFromResources("org.openrewrite.java.migrate.jakarta.JakartaEE10"),
+ //language=xml
+ xml(
+ """
+
+
+ example-project
+
+ javax.faces.PROJECT_STAGE
+ Production
+
+
+ """,
+ """
+
+
+ example-project
+
+ jakarta.faces.PROJECT_STAGE
+ Production
+
+
+ """,
+ sourceSpecs -> sourceSpecs.path("src/main/webapp/WEB-INF/web.xml")
+ )
+ );
+ }
+
@Nested
class NoChanges {
@Test