30
30
31
31
import static org .assertj .core .api .AssertionsForInterfaceTypes .assertThat ;
32
32
33
- @ Disabled ("Falky at CI hence disabling it" )
34
33
public class BootUpgrade_27_30_IntegrationTest extends IntegrationTestBaseClass {
35
34
36
35
@ Override
@@ -46,6 +45,7 @@ void migrateSimpleApplication() {
46
45
scanProject ();
47
46
48
47
applyRecipe ("boot-2.7-3.0-dependency-version-update" );
48
+ applyRecipe ("sbu30-migrate-to-jakarta-packages" );
49
49
50
50
buildProject ();
51
51
verifyParentPomVersion ();
@@ -56,9 +56,32 @@ void migrateSimpleApplication() {
56
56
verifyAutoConfigurationIsRefactored ();
57
57
verifyEhCacheVersionIsUpgraded ();
58
58
verifyJohnzonCoreDependencyIsUpgraded ();
59
- verifyWireMockDependency ();
59
+ verifyJavaxMigrationToJakarta ();
60
+ // TODO: Verify if wiremock recipe is required for 3.0.0 migration
61
+ // verifyWireMockDependency();
60
62
verifySpringCloudDependency ();
61
- }
63
+ }
64
+
65
+ private void verifyJavaxMigrationToJakarta () {
66
+
67
+ String studentClass = loadJavaFile (
68
+ "org.springboot.example.upgrade" ,
69
+ "Student" );
70
+
71
+ assertThat (studentClass ).isEqualTo ("""
72
+ package org.springboot.example.upgrade;
73
+
74
+ import jakarta.persistence.Entity;
75
+ import jakarta.persistence.Id;
76
+
77
+ @Entity
78
+ public class Student {
79
+ @Id
80
+ private long id;
81
+ private String name;
82
+ }
83
+ """ );
84
+ }
62
85
63
86
private void verifyWireMockDependency () {
64
87
Optional <Dependency > wireMock =
@@ -168,7 +191,7 @@ public interface StudentRepoReactiveSorting extends ReactiveSortingRepository<St
168
191
}
169
192
""" );
170
193
171
- String studentRepoRx = loadJavaFile ("org.springboot.example.upgrade" , "StudentRepoRxJava3Sorting" );
194
+ String studentRepoRx = loadJavaFile ("org.springboot.example.upgrade" , "StudentRepoRxJava3Sorting" );
172
195
173
196
assertThat (studentRepoRx ).isEqualTo ("""
174
197
package org.springboot.example.upgrade;
@@ -201,114 +224,116 @@ private void verifyConstructorBindingRemoval() {
201
224
private void verifyYamlConfigurationUpdate () {
202
225
String micrometerClass = loadFile (Path .of ("src/main/resources/application.yaml" ));
203
226
assertThat (micrometerClass ).isEqualTo (
204
- "spring:\n " +
205
- " datasource:\n " +
206
- " url: jdbc:h2:mem:testdb\n " +
207
- " driverClassName: org.h2.Driver\n " +
208
- " jpa:\n " +
209
- " database-platform: org.hibernate.dialect.H2Dialect\n " +
210
- " elasticsearch:\n " +
211
- " connection-timeout: '1'\n " +
212
- " password: testpassword\n " +
213
- " socket-timeout: '2'\n " +
214
- " restclient.sniffer.delay-after-failure: '3'\n " +
215
- " restclient.sniffer.interval: '4'\n " +
216
- " username: username\n " +
217
- " security:\n " +
218
- " saml2:\n " +
219
- " relyingparty:\n " +
220
- " registration:\n " +
221
- " idpone:\n " +
222
- " assertingparty:\n " +
223
- " verification:\n " +
224
- " credentials:\n " +
225
- " certificate-location: classpath:saml/idpone.crt\n " +
226
- " entity-id: https://idpone.com\n " +
227
- " sso-url: https://idpone.com\n " +
228
- " cassandra:\n " +
229
- " keyspaceName: testKeySpace\n " +
230
- " contactPoints: localhost\n " +
231
- " port: 9042\n " +
232
- " username: testusername\n " +
233
- " schemaAction: NONE\n " +
234
- " request:\n " +
235
- " timeout: 10s\n " +
236
- " connection:\n " +
237
- " connectTimeout: 10s\n " +
238
- " initQueryTimeout: 10s\n " +
239
- " elasticsearch.connection-timeout: '1000'\n " +
240
- " elasticsearch.webclient.max-in-memory-size: '122'\n " +
241
- " elasticsearch.password: abc\n " +
242
- " elasticsearch.socket-timeout: '100'\n " +
243
- " elasticsearch.username: testUser\n " +
244
- " sql.init.data-locations: testdata\n " +
245
- " sql.init.password: password\n " +
246
- " sql.init.username: sa\n " +
247
- " sql.init.mode: mode1\n " +
248
- " sql.init.platform: pls\n " +
249
- " sql.init.schema-locations: table1\n " +
250
- " sql.init.password: password\n " +
251
- " sql.init.username: sa\n " +
252
- " sql.init.separator: k\n " +
253
- " sql.init.encoding: UTF-8\n " +
254
- "server.reactive.session.cookie.same-site: 'true'\n " );
227
+ "spring:\n " +
228
+ " datasource:\n " +
229
+ " url: jdbc:h2:mem:testdb\n " +
230
+ " driverClassName: org.h2.Driver\n " +
231
+ " jpa:\n " +
232
+ " database-platform: org.hibernate.dialect.H2Dialect\n " +
233
+ " elasticsearch:\n " +
234
+ " connection-timeout: '1'\n " +
235
+ " password: testpassword\n " +
236
+ " socket-timeout: '2'\n " +
237
+ " restclient.sniffer.delay-after-failure: '3'\n " +
238
+ " restclient.sniffer.interval: '4'\n " +
239
+ " username: username\n " +
240
+ " security:\n " +
241
+ " saml2:\n " +
242
+ " relyingparty:\n " +
243
+ " registration:\n " +
244
+ " idpone:\n " +
245
+ " assertingparty:\n " +
246
+ " verification:\n " +
247
+ " credentials:\n " +
248
+ " certificate-location: classpath:saml/idpone.crt\n " +
249
+ " entity-id: https://idpone.com\n " +
250
+ " sso-url: https://idpone.com\n " +
251
+ " cassandra:\n " +
252
+ " keyspaceName: testKeySpace\n " +
253
+ " contactPoints: localhost\n " +
254
+ " port: 9042\n " +
255
+ " username: testusername\n " +
256
+ " schemaAction: NONE\n " +
257
+ " request:\n " +
258
+ " timeout: 10s\n " +
259
+ " connection:\n " +
260
+ " connectTimeout: 10s\n " +
261
+ " initQueryTimeout: 10s\n " +
262
+ " elasticsearch.connection-timeout: '1000'\n " +
263
+ " elasticsearch.webclient.max-in-memory-size: '122'\n " +
264
+ " elasticsearch.password: abc\n " +
265
+ " elasticsearch.socket-timeout: '100'\n " +
266
+ " elasticsearch.username: testUser\n " +
267
+ " sql.init.data-locations: testdata\n " +
268
+ " sql.init.password: password\n " +
269
+ " sql.init.username: sa\n " +
270
+ " sql.init.mode: mode1\n " +
271
+ " sql.init.platform: pls\n " +
272
+ " sql.init.schema-locations: table1\n " +
273
+ " sql.init.password: password\n " +
274
+ " sql.init.username: sa\n " +
275
+ " sql.init.separator: k\n " +
276
+ " sql.init.encoding: UTF-8\n " +
277
+ "server.reactive.session.cookie.same-site: 'true'\n " );
255
278
}
256
279
257
280
258
281
private void verifyPropertyConfigurationUpdate () {
259
282
260
283
String applicationProperties = loadFile (Path .of ("src/main/resources/application.properties" ));
261
284
assertThat (applicationProperties ).isEqualTo (
262
- "spring.elasticsearch.connection-timeout=1000\n " +
263
- "spring.elasticsearch.webclient.max-in-memory-size=122\n " +
264
- "spring.elasticsearch.password=abc\n " +
265
- "spring.elasticsearch.socket-timeout=100\n " +
266
- "spring.elasticsearch.username=testUser\n " +
267
- "\n " +
268
- "spring.sql.init.data-locations=testdata\n " +
269
- "spring.sql.init.password=password\n " +
270
- "spring.sql.init.username=username\n " +
271
- "spring.sql.init.mode=mode1\n " +
272
- "spring.sql.init.platform=pls\n " +
273
- "spring.sql.init.schema-locations=table1\n " +
274
- "spring.sql.init.password=password2\n " +
275
- "spring.sql.init.username=username2\n " +
276
- "spring.sql.init.separator=k\n " +
277
- "spring.sql.init.encoding=UTF-8\n " +
278
- "\n " +
279
- "spring.elasticsearch.connection-timeout=1\n " +
280
- "spring.elasticsearch.password=testpassword\n " +
281
- "spring.elasticsearch.socket-timeout=2\n " +
282
- "spring.elasticsearch.restclient.sniffer.delay-after-failure=3\n " +
283
- "spring.elasticsearch.restclient.sniffer.interval=4\n " +
284
- "spring.elasticsearch.username=username\n " +
285
- "\n " +
286
- "spring.security.saml2.relyingparty.registration.idpone.assertingparty.entity-id=https://idpone.com\n " +
287
- "spring.security.saml2.relyingparty.registration.idpone.assertingparty.sso-url=https://idpone.com\n " +
288
- "spring.security.saml2.relyingparty.registration.idpone.assertingparty.verification.credentials.certificate-location=classpath:saml/idpone.crt\n " +
289
- "\n " +
290
- "server.reactive.session.cookie.same-site=true\n " +
291
- "\n " +
292
- "spring.datasource.url=jdbc:h2:mem:testdb\n " +
293
- "spring.datasource.driverClassName=org.h2.Driver\n " +
294
- "spring.datasource.username=sa\n " +
295
- "spring.datasource.password=password\n " +
296
- "spring.jpa.database-platform=org.hibernate.dialect.H2Dialect\n " +
297
- "\n " +
298
- "spring.cassandra.keyspace-name=testKeySpace\n " +
299
- "spring.cassandra.port=9042\n " +
300
- "spring.cassandra.contact-points=localhost\n " +
301
- "spring.cassandra.username=testusername\n " +
302
- "spring.cassandra.schema-action=NONE\n " +
303
- "spring.cassandra.request.timeout=10s\n " +
304
- "spring.cassandra.connection.connect-timeout=10s\n " +
305
- "spring.cassandra.connection.init-query-timeout=10s\n " );
285
+ "spring.elasticsearch.connection-timeout=1000\n " +
286
+ "spring.elasticsearch.webclient.max-in-memory-size=122\n " +
287
+ "spring.elasticsearch.password=abc\n " +
288
+ "spring.elasticsearch.socket-timeout=100\n " +
289
+ "spring.elasticsearch.username=testUser\n " +
290
+ "\n " +
291
+ "spring.sql.init.data-locations=testdata\n " +
292
+ "spring.sql.init.password=password\n " +
293
+ "spring.sql.init.username=username\n " +
294
+ "spring.sql.init.mode=mode1\n " +
295
+ "spring.sql.init.platform=pls\n " +
296
+ "spring.sql.init.schema-locations=table1\n " +
297
+ "spring.sql.init.password=password2\n " +
298
+ "spring.sql.init.username=username2\n " +
299
+ "spring.sql.init.separator=k\n " +
300
+ "spring.sql.init.encoding=UTF-8\n " +
301
+ "\n " +
302
+ "spring.elasticsearch.connection-timeout=1\n " +
303
+ "spring.elasticsearch.password=testpassword\n " +
304
+ "spring.elasticsearch.socket-timeout=2\n " +
305
+ "spring.elasticsearch.restclient.sniffer.delay-after-failure=3\n " +
306
+ "spring.elasticsearch.restclient.sniffer.interval=4\n " +
307
+ "spring.elasticsearch.username=username\n " +
308
+ "\n " +
309
+ "spring.security.saml2.relyingparty.registration.idpone.assertingparty.entity-id=https://idpone.com\n " +
310
+ "spring.security.saml2.relyingparty.registration.idpone.assertingparty.sso-url=https://idpone.com\n " +
311
+ "spring.security.saml2.relyingparty.registration.idpone.assertingparty.verification.credentials.certificate-location=classpath:saml/idpone.crt\n " +
312
+ "\n " +
313
+ "server.reactive.session.cookie.same-site=true\n " +
314
+ "\n " +
315
+ "spring.datasource.url=jdbc:h2:mem:testdb\n " +
316
+ "spring.datasource.driverClassName=org.h2.Driver\n " +
317
+ "spring.datasource.username=sa\n " +
318
+ "spring.datasource.password=password\n " +
319
+ "spring.jpa.database-platform=org.hibernate.dialect.H2Dialect\n " +
320
+ "\n " +
321
+ "spring.cassandra.keyspace-name=testKeySpace\n " +
322
+ "spring.cassandra.port=9042\n " +
323
+ "spring.cassandra.contact-points=localhost\n " +
324
+ "spring.cassandra.username=testusername\n " +
325
+ "spring.cassandra.schema-action=NONE\n " +
326
+ "spring.cassandra.request.timeout=10s\n " +
327
+ "spring.cassandra.connection.connect-timeout=10s\n " +
328
+ "spring.cassandra.connection.init-query-timeout=10s\n " +
329
+ "logging.pattern.dateformat=yyyy-MM-dd HH:mm:ss.SSS\n " +
330
+ "management.endpoints.jmx.exposure.include=*\n " );
306
331
}
307
332
308
333
private void verifyParentPomVersion () {
309
334
Xml .Document mavenAsXMLDocument = getRootBuildFile ();
310
335
311
- Xml .Tag parentTag =mavenAsXMLDocument
336
+ Xml .Tag parentTag = mavenAsXMLDocument
312
337
.getRoot ()
313
338
.getChildren ("parent" ).get (0 );
314
339
@@ -317,7 +342,7 @@ private void verifyParentPomVersion() {
317
342
String groupId = parentTag .getChildValue ("groupId" ).get ();
318
343
String artifactId = parentTag .getChildValue ("artifactId" ).get ();
319
344
320
- assertThat (version ).isEqualTo ("3.0.0-M3 " );
345
+ assertThat (version ).isEqualTo ("3.0.0" );
321
346
assertThat (groupId ).isEqualTo ("org.springframework.boot" );
322
347
assertThat (artifactId ).isEqualTo ("spring-boot-starter-parent" );
323
348
}
0 commit comments