@@ -93,10 +93,6 @@ void jacksonUpgradeToVersion3() {
9393 assertThat (versionMatcher .find ()).describedAs ("Expected 3.0.x in %s" , pom ).isTrue ();
9494 String jacksonVersion = versionMatcher .group (0 );
9595
96- Matcher annotationsVersionMatcher = Pattern .compile ("3\\ .\\ d+(\\ .\\ d+)*(-rc[\\ d]*)?" ).matcher (pom );
97- assertThat (annotationsVersionMatcher .find ()).describedAs ("Expected 3.x in %s" , pom ).isTrue ();
98- String annotationsVersion = annotationsVersionMatcher .group (0 );
99-
10096 return """
10197 <project>
10298 <modelVersion>4.0.0</modelVersion>
@@ -107,7 +103,7 @@ void jacksonUpgradeToVersion3() {
107103 <dependency>
108104 <groupId>com.fasterxml.jackson.core</groupId>
109105 <artifactId>jackson-annotations</artifactId>
110- <version>2.19.2 </version>
106+ <version>2.20-rc1 </version>
111107 </dependency>
112108 <dependency>
113109 <groupId>tools.jackson.core</groupId>
@@ -121,7 +117,95 @@ void jacksonUpgradeToVersion3() {
121117 </dependency>
122118 </dependencies>
123119 </project>
124- """ .formatted (annotationsVersion , jacksonVersion , jacksonVersion );
120+ """ .formatted (jacksonVersion , jacksonVersion );
121+ })),
122+ //language=java
123+ java (
124+ """
125+ import com.fasterxml.jackson.annotation.JsonProperty;
126+ import com.fasterxml.jackson.core.JsonFactory;
127+ import com.fasterxml.jackson.core.JsonFactoryBuilder;
128+ import com.fasterxml.jackson.databind.ObjectMapper;
129+
130+ class Test {
131+ public String foo(@JsonProperty("foo") String foo) {
132+ return foo;
133+ }
134+
135+ static void helloJackson() {
136+ Object[] input = new Object[] { "one", "two" };
137+ JsonFactory factory = new JsonFactoryBuilder().build();
138+ }
139+ }
140+ """ ,
141+ """
142+ import com.fasterxml.jackson.annotation.JsonProperty;
143+ import tools.jackson.core.JsonFactory;
144+ import tools.jackson.core.JsonFactoryBuilder;
145+ import tools.jackson.databind.ObjectMapper;
146+
147+ class Test {
148+ public String foo(@JsonProperty("foo") String foo) {
149+ return foo;
150+ }
151+
152+ static void helloJackson() {
153+ Object[] input = new Object[] { "one", "two" };
154+ JsonFactory factory = new JsonFactoryBuilder().build();
155+ }
156+ }
157+ """
158+ )
159+ );
160+ }
161+
162+ @ Test
163+ void jacksonUpgradeToVersion3_jacksonBomOnly () {
164+ rewriteRun (
165+ //language=xml
166+ pomXml (
167+ """
168+ <project>
169+ <modelVersion>4.0.0</modelVersion>
170+ <groupId>org.example</groupId>
171+ <artifactId>example</artifactId>
172+ <version>1.0.0</version>
173+ <dependencyManagement>
174+ <dependencies>
175+ <dependency>
176+ <groupId>com.fasterxml.jackson</groupId>
177+ <artifactId>jackson-bom</artifactId>
178+ <version>2.19.0</version>
179+ <scope>pom</scope>
180+ <type>import</type>
181+ </dependency>
182+ </dependencies>
183+ </dependencyManagement>
184+ </project>
185+ """ ,
186+ spec -> spec .after (pom -> {
187+ Matcher versionMatcher = Pattern .compile ("3\\ .\\ d+\\ .\\ d+(-rc[\\ d]*)?" ).matcher (pom );
188+ assertThat (versionMatcher .find ()).describedAs ("Expected 3.0.x in %s" , pom ).isTrue ();
189+ String jacksonVersion = versionMatcher .group (0 );
190+ return """
191+ <project>
192+ <modelVersion>4.0.0</modelVersion>
193+ <groupId>org.example</groupId>
194+ <artifactId>example</artifactId>
195+ <version>1.0.0</version>
196+ <dependencyManagement>
197+ <dependencies>
198+ <dependency>
199+ <groupId>tools.jackson</groupId>
200+ <artifactId>jackson-bom</artifactId>
201+ <version>%s</version>
202+ <scope>pom</scope>
203+ <type>import</type>
204+ </dependency>
205+ </dependencies>
206+ </dependencyManagement>
207+ </project>
208+ """ .formatted (jacksonVersion );
125209 })),
126210 //language=java
127211 java (
0 commit comments