From 575baa1d694284a799536f8dbf004ab755e9df7d Mon Sep 17 00:00:00 2001 From: Jonathan Schneider Date: Sat, 3 Oct 2026 15:24:59 +0100 Subject: [PATCH] custom-persistence-descriptor-skipped: identify descriptors by namespace --- .../META-INF/rewrite/jakarta-ee-9.yml | 4 +- ...istenceXmlToJakartaPersistenceXmlTest.java | 54 +++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/test/java/org/openrewrite/java/migrate/jakarta/JavaxPersistenceXmlToJakartaPersistenceXmlTest.java 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 9c8a35a7e4..76d5d27232 100644 --- a/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml +++ b/src/main/resources/META-INF/rewrite/jakarta-ee-9.yml @@ -1213,8 +1213,8 @@ name: org.openrewrite.java.migrate.jakarta.JavaxPersistenceXmlToJakartaPersisten displayName: Migrate xmlns entries in `persistence.xml` files description: Java EE has been rebranded to Jakarta EE, necessitating an XML namespace relocation. preconditions: - - org.openrewrite.FindSourceFiles: - filePattern: '**/persistence.xml' + - org.openrewrite.xml.search.FindTags: + xPath: /persistence[@xmlns='http://java.sun.com/xml/ns/persistence' or @xmlns='http://xmlns.jcp.org/xml/ns/persistence'] - org.openrewrite.Singleton recipeList: - org.openrewrite.xml.ChangeTagAttribute: diff --git a/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxPersistenceXmlToJakartaPersistenceXmlTest.java b/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxPersistenceXmlToJakartaPersistenceXmlTest.java new file mode 100644 index 0000000000..15b53ab375 --- /dev/null +++ b/src/test/java/org/openrewrite/java/migrate/jakarta/JavaxPersistenceXmlToJakartaPersistenceXmlTest.java @@ -0,0 +1,54 @@ +/* + * 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 org.junit.jupiter.api.Test; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.RewriteTest; + +import static org.openrewrite.xml.Assertions.xml; + +class JavaxPersistenceXmlToJakartaPersistenceXmlTest implements RewriteTest { + @Override + public void defaults(RecipeSpec spec) { + spec.recipeFromResources("org.openrewrite.java.migrate.jakarta.JavaxPersistenceXmlToJakartaPersistenceXml"); + } + + @Test + void migratesCustomResourceName() { + rewriteRun( + xml( + """ + + """, + """ + + """, + spec -> spec.path("src/test/resources/test-persistence.xml") + ) + ); + } + + @Test + void preservesUnrelatedXmlAndNewerJakartaDescriptors() { + rewriteRun( + xml("", + spec -> spec.path("config.xml")), + xml("", + spec -> spec.path("META-INF/persistence.xml")) + ); + } +}