Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions customer-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
92 changes: 40 additions & 52 deletions customer-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,15 @@
<packaging>war</packaging>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<meecrowave.version>1.2.9</meecrowave.version>
<meecrowave.version>1.2.11</meecrowave.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.2.0.Final</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

<build>
<finalName>customer-service</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand All @@ -42,14 +31,39 @@
<artifactId>meecrowave-maven-plugin</artifactId>
<version>${meecrowave.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-runner</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-core</artifactId>
<version>${meecrowave.version}</version>
<classifier>runner</classifier>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/runner</outputDirectory>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.apache.tomee</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0-2</version>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-specs-api</artifactId>
<version>${meecrowave.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -80,47 +94,21 @@
<version>3.9</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-arquillian</artifactId>
<artifactId>meecrowave-junit</artifactId>
<version>${meecrowave.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-impl-javaee</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-arquillian</artifactId>
<version>${meecrowave.version}</version>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -132,7 +120,7 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
<version>2.12.7.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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";

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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(
Expand All @@ -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 {

Expand Down
2 changes: 2 additions & 0 deletions customer-service/src/main/webapp/versions/v1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,10 @@ components:
properties:
firstName:
type: "string"
deprecated: true
lastName:
type: "string"
deprecated: true
emailAddress:
type: "string"
gender:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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");
}

Expand Down
Loading