diff --git a/customer-service/Dockerfile b/customer-service/Dockerfile
new file mode 100644
index 0000000..fb066b9
--- /dev/null
+++ b/customer-service/Dockerfile
@@ -0,0 +1,15 @@
+FROM maven:3.6.3-jdk-11-openj9 AS mvn
+
+WORKDIR /usr/src/customer-service
+COPY pom.xml ./
+RUN mvn package dependency:go-offline # cache dependencies
+COPY src ./src
+RUN mvn clean package -DskipTests
+
+FROM openjdk:11
+
+EXPOSE 8080
+COPY --from=mvn /usr/src/customer-service/target/runner/meecrowave-core-runner.jar /opt/meecrowave-runner.jar
+COPY --from=mvn /usr/src/customer-service/target/customer-service.war /opt/customer-service.war
+
+ENTRYPOINT ["java", "--illegal-access=permit", "-Djava.net.preferIPv4Stack=true", "-jar", "/opt/meecrowave-runner.jar", "--webapp", "/opt/customer-service.war"]
diff --git a/customer-service/pom.xml b/customer-service/pom.xml
index 852e26d..5bf8be7 100644
--- a/customer-service/pom.xml
+++ b/customer-service/pom.xml
@@ -11,26 +11,15 @@
war
- 1.8
- 1.8
+ 11
+ 11
false
UTF-8
- 1.2.9
+ 1.2.11
-
-
-
- org.jboss.arquillian
- arquillian-bom
- 1.2.0.Final
- import
- pom
-
-
-
-
+ customer-service
org.apache.maven.plugins
@@ -42,14 +31,39 @@
meecrowave-maven-plugin
${meecrowave.version}
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-runner
+ package
+
+ copy
+
+
+
+
+ org.apache.meecrowave
+ meecrowave-core
+ ${meecrowave.version}
+ runner
+
+
+ ${project.build.directory}/runner
+ true
+
+
+
+
- org.apache.tomee
- javaee-api
- 8.0-2
+ org.apache.meecrowave
+ meecrowave-specs-api
+ ${meecrowave.version}
provided
@@ -80,47 +94,21 @@
3.9
- junit
- junit
- 4.12
- test
-
-
- org.assertj
- assertj-core
- 3.6.2
- test
-
-
- org.jboss.arquillian.junit
- arquillian-junit-container
- test
-
-
- org.jboss.shrinkwrap.resolver
- shrinkwrap-resolver-impl-maven
+ org.junit.jupiter
+ junit-jupiter
+ 5.7.2
test
org.apache.meecrowave
- meecrowave-arquillian
+ meecrowave-junit
${meecrowave.version}
test
- org.jboss.shrinkwrap.resolver
- shrinkwrap-resolver-impl-maven
- test
-
-
- org.jboss.shrinkwrap.descriptors
- shrinkwrap-descriptors-impl-javaee
- test
-
-
- org.apache.meecrowave
- meecrowave-arquillian
- ${meecrowave.version}
+ org.assertj
+ assertj-core
+ 3.6.2
test
@@ -132,7 +120,7 @@
com.fasterxml.jackson.core
jackson-databind
- 2.10.0
+ 2.12.7.1
runtime
diff --git a/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomMediaType.java b/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomMediaType.java
index 52016e8..2ad95a2 100644
--- a/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomMediaType.java
+++ b/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomMediaType.java
@@ -20,7 +20,7 @@
*/
public final class CustomMediaType {
- public static final String CUSTOMER_V1 = "application/vnd.de.openknowledge.sample.customer.v1+json2";
- public static final String CUSTOMER_V2 = "application/vnd.de.openknowledge.sample.customer.v2+json2";
+ public static final String CUSTOMER_V1 = "application/vnd.de.openknowledge.sample.customer.v1+json";
+ public static final String CUSTOMER_V2 = "application/vnd.de.openknowledge.sample.customer.v2+json";
}
diff --git a/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomerResource.java b/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomerResource.java
index 80bc895..0aef23a 100644
--- a/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomerResource.java
+++ b/customer-service/src/main/java/de/openknowledge/sample/customer/application/CustomerResource.java
@@ -21,6 +21,7 @@
import java.util.logging.Logger;
import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -49,6 +50,7 @@
* A resource that provides access to the {@link Customer} entity.
*/
@Path("customers")
+@ApplicationScoped
public class CustomerResource {
private static final Logger LOG = Logger.getLogger(CustomerResource.class.getName());
diff --git a/customer-service/src/main/java/de/openknowledge/sample/customer/application/JaxRsActivator.java b/customer-service/src/main/java/de/openknowledge/sample/customer/application/JaxRsActivator.java
index 1f51720..df71a3d 100644
--- a/customer-service/src/main/java/de/openknowledge/sample/customer/application/JaxRsActivator.java
+++ b/customer-service/src/main/java/de/openknowledge/sample/customer/application/JaxRsActivator.java
@@ -15,6 +15,7 @@
*/
package de.openknowledge.sample.customer.application;
+import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@@ -26,11 +27,13 @@
import org.eclipse.microprofile.openapi.annotations.media.Content;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import org.eclipse.microprofile.openapi.annotations.parameters.RequestBody;
+import org.eclipse.microprofile.openapi.annotations.servers.Server;
/**
* JAX-RS Activator
*/
@ApplicationPath("api")
+@ApplicationScoped
@OpenAPIDefinition(info = @Info(
title = "Customer Service",
contact = @Contact(
@@ -42,6 +45,7 @@
url = "http://www.apache.org/licenses/LICENSE-2.0"),
version = "2",
description = "A customer service"),
+ servers = @Server(url = "http://localhost:8080/api"),
components = @Components(requestBodies = @RequestBody(name = "Customer", content = @Content(schema = @Schema(implementation = CustomerResourceType.class)))))
public class JaxRsActivator extends Application {
diff --git a/customer-service/src/main/webapp/versions/v1.yaml b/customer-service/src/main/webapp/versions/v1.yaml
index d4e36a9..ca5d6f3 100644
--- a/customer-service/src/main/webapp/versions/v1.yaml
+++ b/customer-service/src/main/webapp/versions/v1.yaml
@@ -184,8 +184,10 @@ components:
properties:
firstName:
type: "string"
+ deprecated: true
lastName:
type: "string"
+ deprecated: true
emailAddress:
type: "string"
gender:
diff --git a/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV10IntegrationTest.java b/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV10IntegrationTest.java
index 8115fea..57fe917 100644
--- a/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV10IntegrationTest.java
+++ b/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV10IntegrationTest.java
@@ -22,10 +22,7 @@
import java.io.InputStream;
import java.io.StringReader;
-import java.net.URL;
import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.json.Json;
import javax.json.JsonObject;
@@ -36,62 +33,27 @@
import javax.ws.rs.core.Response.Status;
import org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.resolver.api.maven.Maven;
-import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import de.openknowledge.sample.customer.application.v1.CustomerResourceTypeV1;
-import de.openknowledge.sample.customer.domain.Customer;
-import de.openknowledge.sample.customer.domain.CustomerNotFoundException;
-import de.openknowledge.sample.customer.domain.CustomerRepository;
-import de.openknowledge.sample.customer.domain.Gender;
-import de.openknowledge.sample.customer.domain.Name;
-import de.openknowledge.sample.customer.domain.TestCustomers;
+import org.apache.meecrowave.Meecrowave;
+import org.apache.meecrowave.junit5.MonoMeecrowaveConfig;
+import org.apache.meecrowave.testing.ConfigurationInject;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
- * Arquillian test class for the rest resource {@link CustomerResource}.
+ * test class for the rest resource {@link CustomerResource}.
*/
-@RunAsClient
-@RunWith(Arquillian.class)
+@MonoMeecrowaveConfig
public class CustomerResourceV10IntegrationTest {
- private static final Logger LOG = Logger.getLogger(CustomerResourceV10IntegrationTest.class.getName());
-
- @Deployment
- public static WebArchive createDeployment() {
- PomEquippedResolveStage pomFile = Maven.resolver().loadPomFromFile("pom.xml");
-
- WebArchive archive = ShrinkWrap.create(WebArchive.class)
- .addAsLibraries(pomFile.resolve("org.apache.commons:commons-lang3").withTransitivity().asFile())
- .addPackage(CustomerResourceTypeV1.class.getPackage())
- .addClasses(CustomerResource.class, CustomerResourceType.class, CustomMediaType.class, JaxRsActivator.class)
- .addClasses(CustomerMessageBodyReader.class, CustomerMessageBodyWriter.class, CustomerListMessageBodyWriter.class)
- .addClasses(Customer.class, Name.class, CustomerRepository.class, CustomerNotFoundException.class, Gender.class)
- .addClass(TestCustomers.class)
- .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
-
- LOG.log(Level.FINE, () -> archive.toString(true));
- return archive;
- }
-
- @ArquillianResource
- private URL baseURI;
+ @ConfigurationInject
+ private Meecrowave.Builder config;
private WebTarget customerListTarget;
- @Before
+ @BeforeEach
public void initializeClient() {
customerListTarget = ClientBuilder.newClient()
.register(JsonbJaxrsProvider.class)
- .target(baseURI.toString())
+ .target("http://localhost:" + config.getHttpPort())
.path("api/customers");
}
diff --git a/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV11IntegrationTest.java b/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV11IntegrationTest.java
index bdd8a97..ddc2bf1 100644
--- a/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV11IntegrationTest.java
+++ b/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV11IntegrationTest.java
@@ -22,10 +22,7 @@
import java.io.InputStream;
import java.io.StringReader;
-import java.net.URL;
import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.json.Json;
import javax.json.JsonObject;
@@ -36,62 +33,27 @@
import javax.ws.rs.core.Response.Status;
import org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.resolver.api.maven.Maven;
-import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import de.openknowledge.sample.customer.application.v1.CustomerResourceTypeV1;
-import de.openknowledge.sample.customer.domain.Customer;
-import de.openknowledge.sample.customer.domain.CustomerNotFoundException;
-import de.openknowledge.sample.customer.domain.CustomerRepository;
-import de.openknowledge.sample.customer.domain.Gender;
-import de.openknowledge.sample.customer.domain.Name;
-import de.openknowledge.sample.customer.domain.TestCustomers;
+import org.apache.meecrowave.Meecrowave;
+import org.apache.meecrowave.junit5.MonoMeecrowaveConfig;
+import org.apache.meecrowave.testing.ConfigurationInject;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
- * Arquillian test class for the rest resource {@link CustomerResource}.
+ * test class for the rest resource {@link CustomerResource}.
*/
-@RunAsClient
-@RunWith(Arquillian.class)
+@MonoMeecrowaveConfig
public class CustomerResourceV11IntegrationTest {
- private static final Logger LOG = Logger.getLogger(CustomerResourceV11IntegrationTest.class.getName());
-
- @Deployment
- public static WebArchive createDeployment() {
- PomEquippedResolveStage pomFile = Maven.resolver().loadPomFromFile("pom.xml");
-
- WebArchive archive = ShrinkWrap.create(WebArchive.class)
- .addAsLibraries(pomFile.resolve("org.apache.commons:commons-lang3").withTransitivity().asFile())
- .addPackage(CustomerResourceTypeV1.class.getPackage())
- .addClasses(CustomerResource.class, CustomerResourceType.class, CustomMediaType.class, JaxRsActivator.class)
- .addClasses(CustomerMessageBodyReader.class, CustomerMessageBodyWriter.class, CustomerListMessageBodyWriter.class)
- .addClasses(Customer.class, Name.class, CustomerRepository.class, CustomerNotFoundException.class, Gender.class)
- .addClass(TestCustomers.class)
- .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
-
- LOG.log(Level.FINE, () -> archive.toString(true));
- return archive;
- }
-
- @ArquillianResource
- private URL baseURI;
+ @ConfigurationInject
+ private Meecrowave.Builder config;
private WebTarget customerListTarget;
- @Before
+ @BeforeEach
public void initializeClient() {
customerListTarget = ClientBuilder.newClient()
.register(JsonbJaxrsProvider.class)
- .target(baseURI.toString())
+ .target("http://localhost:" + config.getHttpPort())
.path("api/customers");
}
diff --git a/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV20IntegrationTest.java b/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV20IntegrationTest.java
index ad905a4..3d8c7ae 100644
--- a/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV20IntegrationTest.java
+++ b/customer-service/src/test/java/de/openknowledge/sample/customer/application/CustomerResourceV20IntegrationTest.java
@@ -21,10 +21,7 @@
import java.io.InputStream;
import java.io.StringReader;
-import java.net.URL;
import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.json.Json;
import javax.json.JsonObject;
@@ -35,62 +32,27 @@
import javax.ws.rs.core.Response.Status;
import org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider;
-import org.jboss.arquillian.container.test.api.Deployment;
-import org.jboss.arquillian.container.test.api.RunAsClient;
-import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.arquillian.test.api.ArquillianResource;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.resolver.api.maven.Maven;
-import org.jboss.shrinkwrap.resolver.api.maven.PomEquippedResolveStage;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import de.openknowledge.sample.customer.application.v1.CustomerResourceTypeV1;
-import de.openknowledge.sample.customer.domain.Customer;
-import de.openknowledge.sample.customer.domain.CustomerNotFoundException;
-import de.openknowledge.sample.customer.domain.CustomerRepository;
-import de.openknowledge.sample.customer.domain.Gender;
-import de.openknowledge.sample.customer.domain.Name;
-import de.openknowledge.sample.customer.domain.TestCustomers;
+import org.apache.meecrowave.Meecrowave;
+import org.apache.meecrowave.junit5.MonoMeecrowaveConfig;
+import org.apache.meecrowave.testing.ConfigurationInject;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
- * Arquillian test class for the rest resource {@link CustomerResource}.
+ * test class for the rest resource {@link CustomerResource}.
*/
-@RunAsClient
-@RunWith(Arquillian.class)
+@MonoMeecrowaveConfig
public class CustomerResourceV20IntegrationTest {
- private static final Logger LOG = Logger.getLogger(CustomerResourceV20IntegrationTest.class.getName());
-
- @Deployment
- public static WebArchive createDeployment() {
- PomEquippedResolveStage pomFile = Maven.resolver().loadPomFromFile("pom.xml");
-
- WebArchive archive = ShrinkWrap.create(WebArchive.class)
- .addAsLibraries(pomFile.resolve("org.apache.commons:commons-lang3").withTransitivity().asFile())
- .addPackage(CustomerResourceTypeV1.class.getPackage())
- .addClasses(CustomerResource.class, CustomerResourceType.class, CustomMediaType.class, JaxRsActivator.class)
- .addClasses(CustomerMessageBodyReader.class, CustomerMessageBodyWriter.class, CustomerListMessageBodyWriter.class)
- .addClasses(Customer.class, Name.class, CustomerRepository.class, CustomerNotFoundException.class, Gender.class)
- .addClass(TestCustomers.class)
- .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
-
- LOG.log(Level.FINE, () -> archive.toString(true));
- return archive;
- }
-
- @ArquillianResource
- private URL baseURI;
+ @ConfigurationInject
+ private Meecrowave.Builder config;
private WebTarget customerListTarget;
- @Before
+ @BeforeEach
public void initializeClient() {
customerListTarget = ClientBuilder.newClient()
.register(JsonbJaxrsProvider.class)
- .target(baseURI.toString())
+ .target("http://localhost:" + config.getHttpPort())
.path("api/customers");
}