Apache Meecrowave is a small Microprofile server (JAX-RS + CDI + JSON) fully based on Apache products.
If you want to start with your first Hello World you have to add the following dependencies to your pom.xml
.
<properties>
<meecrowave.version>1.2.3</meecrowave.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-specs-api</artifactId>
<version>${meecrowave.version}</version>
</dependency>
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-core</artifactId>
<version>${meecrowave.version}</version>
</dependency>
<dependency>
<groupId>org.apache.meecrowave</groupId>
<artifactId>meecrowave-junit</artifactId>
<version>${meecrowave.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
The project itself should be used with Java8 as the minimum JDK-version.
To work with the latest SNAPSHOT, you can clone the repo and make a
.mvn clean install
Let´s start with an minimal REST Endpoint.
The only result you can get is a Hello World.
Additionally there is a class called
to make sure your path will start with /api/HelloApplication
@Dependent
@ApplicationPath("api")
public class HelloApplication extends Application {
}
@Path("hello")
@ApplicationScoped
public class HelloEndpoint {
@GET
@Produces(MediaType.APPLICATION_JSON)
public String sayHi() {
return "Hello World";
}
}
You can start writing your first test , now.
Using junit4, the test class should annotated with
The Container start and stop will be managed for you.
To have access to the dynamic data, like the random used port, use the the injected @RunWith(MonoMeecrowave.Runner.class)
.Meecrowave.Builder
`
The test-request itself is written like a normal request.
This example is using the class
.javax.ws.rs.client.ClientBuilder
@RunWith(MonoMeecrowave.Runner.class)
public class HelloEndpointTest {
@ConfigurationInject
private Meecrowave.Builder configuration;
@Test
public void hello() {
final Client client = ClientBuilder.newClient();
try {
assertEquals("Hello World", client.target("http://localhost:" + configuration.getHttpPort())
.path("api/hello")
.request(APPLICATION_JSON_TYPE)
.get(String.class));
} finally {
client.close();
}
}
}