Skip to content

Commit ffa3045

Browse files
bmuschkotimtebeekgithub-actions[bot]
authored
JavaxMailToJakartaMail recipe should support the migration of javax.mail:mail (#721)
* Support the migration of javax.mail:mail * Don't include dependency in type table * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review --------- Co-authored-by: Tim te Beek <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent f63fca7 commit ffa3045

File tree

4 files changed

+165
-0
lines changed

4 files changed

+165
-0
lines changed

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ dependencies {
7272
testRuntimeOnly("jakarta.annotation:jakarta.annotation-api:2.1.1")
7373
testRuntimeOnly("org.springframework:spring-core:6.1.13")
7474
testRuntimeOnly("com.google.code.findbugs:jsr305:3.0.2")
75+
testRuntimeOnly("javax.mail:mail:1.4.7")
76+
testRuntimeOnly("javax.mail:javax.mail-api:1.6.2")
7577
testRuntimeOnly(gradleApi())
7678
}
7779

-197 Bytes
Binary file not shown.

src/main/resources/META-INF/rewrite/jakarta-ee-9.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,12 @@ name: org.openrewrite.java.migrate.jakarta.JavaxMailToJakartaMail
484484
displayName: Migrate deprecated `javax.mail` packages to `jakarta.mail`
485485
description: Java EE has been rebranded to Jakarta EE, necessitating a package relocation.
486486
recipeList:
487+
- org.openrewrite.java.dependencies.ChangeDependency:
488+
oldGroupId: javax.mail
489+
oldArtifactId: mail
490+
newGroupId: jakarta.mail
491+
newArtifactId: jakarta.mail-api
492+
newVersion: 2.0.x
487493
- org.openrewrite.java.dependencies.ChangeDependency:
488494
oldGroupId: javax.mail
489495
oldArtifactId: javax.mail-api
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
/*
2+
* Copyright 2025 the original author or authors.
3+
* <p>
4+
* Licensed under the Moderne Source Available License (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
* <p>
8+
* https://docs.moderne.io/licensing/moderne-source-available-license
9+
* <p>
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.openrewrite.java.migrate.jakarta;
17+
18+
import org.junit.jupiter.api.Test;
19+
import org.openrewrite.java.JavaParser;
20+
import org.openrewrite.test.RecipeSpec;
21+
import org.openrewrite.test.RewriteTest;
22+
23+
import static org.openrewrite.java.Assertions.*;
24+
import static org.openrewrite.maven.Assertions.pomXml;
25+
26+
class JavaxMailToJakartaMailTest implements RewriteTest {
27+
@Override
28+
public void defaults(RecipeSpec spec) {
29+
spec.parser(JavaParser.fromJavaVersion()
30+
.classpath("mail-1.4.7", "javax.mail-api-1.6.2"))
31+
.recipeFromResource(
32+
"/META-INF/rewrite/jakarta-ee-9.yml",
33+
"org.openrewrite.java.migrate.jakarta.JavaxMailToJakartaMail");
34+
}
35+
36+
@Test
37+
void switchesJavaxMailApiDependencyToJakartaMailApiDependency() {
38+
rewriteRun(
39+
mavenProject(
40+
"Sample",
41+
//language=xml
42+
pomXml(
43+
"""
44+
<?xml version="1.0" encoding="UTF-8"?>
45+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
46+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
47+
<modelVersion>4.0.0</modelVersion>
48+
<groupId>com.example</groupId>
49+
<artifactId>demo</artifactId>
50+
<version>0.0.1-SNAPSHOT</version>
51+
<dependencies>
52+
<dependency>
53+
<groupId>javax.mail</groupId>
54+
<artifactId>javax.mail-api</artifactId>
55+
<version>1.4.7</version>
56+
</dependency>
57+
</dependencies>
58+
</project>
59+
""",
60+
"""
61+
<?xml version="1.0" encoding="UTF-8"?>
62+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
63+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
64+
<modelVersion>4.0.0</modelVersion>
65+
<groupId>com.example</groupId>
66+
<artifactId>demo</artifactId>
67+
<version>0.0.1-SNAPSHOT</version>
68+
<dependencies>
69+
<dependency>
70+
<groupId>jakarta.mail</groupId>
71+
<artifactId>jakarta.mail-api</artifactId>
72+
<version>2.0.1</version>
73+
</dependency>
74+
</dependencies>
75+
</project>
76+
"""
77+
)
78+
),
79+
srcMainJava(
80+
//language=java
81+
java(
82+
"""
83+
import javax.mail.Session;
84+
public class TestApplication {
85+
}
86+
""",
87+
"""
88+
import jakarta.mail.Session;
89+
public class TestApplication {
90+
}
91+
"""
92+
)
93+
)
94+
);
95+
}
96+
97+
@Test
98+
void switchesJavaxMailDependencyToJakartaMailApiDependency() {
99+
rewriteRun(
100+
mavenProject(
101+
"Sample",
102+
//language=xml
103+
pomXml(
104+
"""
105+
<?xml version="1.0" encoding="UTF-8"?>
106+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
107+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
108+
<modelVersion>4.0.0</modelVersion>
109+
<groupId>com.example</groupId>
110+
<artifactId>demo</artifactId>
111+
<version>0.0.1-SNAPSHOT</version>
112+
<dependencies>
113+
<dependency>
114+
<groupId>javax.mail</groupId>
115+
<artifactId>mail</artifactId>
116+
<version>1.3.3</version>
117+
</dependency>
118+
</dependencies>
119+
</project>
120+
""",
121+
"""
122+
<?xml version="1.0" encoding="UTF-8"?>
123+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
124+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
125+
<modelVersion>4.0.0</modelVersion>
126+
<groupId>com.example</groupId>
127+
<artifactId>demo</artifactId>
128+
<version>0.0.1-SNAPSHOT</version>
129+
<dependencies>
130+
<dependency>
131+
<groupId>jakarta.mail</groupId>
132+
<artifactId>jakarta.mail-api</artifactId>
133+
<version>2.0.1</version>
134+
</dependency>
135+
</dependencies>
136+
</project>
137+
"""
138+
)
139+
),
140+
srcMainJava(
141+
//language=java
142+
java(
143+
"""
144+
import javax.mail.Session;
145+
public class TestApplication {
146+
}
147+
""",
148+
"""
149+
import jakarta.mail.Session;
150+
public class TestApplication {
151+
}
152+
"""
153+
)
154+
)
155+
);
156+
}
157+
}

0 commit comments

Comments
 (0)