Dropwizard JDBI with Java 8 support

Addon bundle for Dropwizard to support Java 8 features

License

License

Categories

Categories

Java 8 Languages DropWizard Container Microservices JDBI Data Databases
GroupId

GroupId

com.github.joschi
ArtifactId

ArtifactId

dropwizard-java8-jdbi
Last Version

Last Version

0.2.0
Release Date

Release Date

Type

Type

jar
Description

Description

Dropwizard JDBI with Java 8 support
Addon bundle for Dropwizard to support Java 8 features

Download dropwizard-java8-jdbi

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.joschi/dropwizard-java8-jdbi/ -->
<dependency>
    <groupId>com.github.joschi</groupId>
    <artifactId>dropwizard-java8-jdbi</artifactId>
    <version>0.2.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.joschi/dropwizard-java8-jdbi/
implementation 'com.github.joschi:dropwizard-java8-jdbi:0.2.0'
// https://jarcasting.com/artifacts/com.github.joschi/dropwizard-java8-jdbi/
implementation ("com.github.joschi:dropwizard-java8-jdbi:0.2.0")
'com.github.joschi:dropwizard-java8-jdbi:jar:0.2.0'
<dependency org="com.github.joschi" name="dropwizard-java8-jdbi" rev="0.2.0">
  <artifact name="dropwizard-java8-jdbi" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.joschi', module='dropwizard-java8-jdbi', version='0.2.0')
)
libraryDependencies += "com.github.joschi" % "dropwizard-java8-jdbi" % "0.2.0"
[com.github.joschi/dropwizard-java8-jdbi "0.2.0"]

Dependencies

compile (1)

Group / Artifact Type Version
io.dropwizard : dropwizard-jdbi jar 0.7.1

test (2)

Group / Artifact Type Version
junit : junit jar 4.11
org.assertj : assertj-core jar 1.6.1

Project Modules

There are no modules declared in this project.

Dropwizard Java 8 Bundle

Build Status Coverage Status Maven Central

An addon bundle and a set of classes for using Java 8 features like Optional<T> and the new Date/Time API (JSR-310) in a Dropwizard application.

Currently it supports Java 8 versions of dropwizard-auth and dropwizard-jdbi.

INFO: The Dropwizard Java 8 Bundle has been integrated into Dropwizard 1.0.0 and higher and not required any more. Please only use this bundle if you're using an older version of Dropwizard.

Usage

Just add Java8Bundle to your Application class as described in the manual in the Bundles paragraph.

Serialization and deserialization

This will add support for Optional<T> to Jersey and support for JSR-310 and Optional<T> to Jackson.

public class DemoApplication extends Application<DemoConfiguration> {
    // [...]
    @Override
    public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) {
        bootstrap.addBundle(new Java8Bundle());
        // [...]
    }
}

When using ResourceTestRule in unit tests, Java8 providers need to registered to ensure correct behaviour:

public static final ResourceTestRule resources = ResourceTestRule.builder()
    .addResource(new HelloWorldResource())
    .addProvider(OptionalMessageBodyWriter.class)
    .addProvider(OptionalParamFeature.class)
    .build();

JDBI

To get support for Java 8 objects use io.dropwizard.java8.jdbi.DBIFactory

import io.dropwizard.java8.jdbi.DBIFactory;

@Override
public void run(ExampleConfiguration config, Environment environment) {
    final DBIFactory factory = new DBIFactory();
    final DBI jdbi = factory.build(environment, config.getDataSourceFactory(), "postgresql");
    final UserDAO dao = jdbi.onDemand(UserDAO.class);
    environment.jersey().register(new UserResource(dao));
}

When getting a single result use the annotation @SingleValueResult

public interface MyDAO {
    @SingleValueResult
    @SqlQuery("select name from something where id = :id")
    Optional<String> findNameById(@Bind("id") int id);
}

Maven Artifacts

This project is available on Maven Central. To add it to your project simply add the following dependencies to your pom.xml:

<dependency>
  <groupId>io.dropwizard.modules</groupId>
  <artifactId>dropwizard-java8</artifactId>
  <version>0.9.0-1</version>
</dependency>

<dependency>
  <groupId>io.dropwizard.modules</groupId>
  <artifactId>dropwizard-java8-auth</artifactId>
  <version>0.9.0-1</version>
</dependency>

<dependency>
  <groupId>io.dropwizard.modules</groupId>
  <artifactId>dropwizard-java8-jdbi</artifactId>
  <version>0.9.0-1</version>
</dependency>

When using JSR-310 Dates with Hibernate, Jadira UserType Extend needs to be added:

<dependency>
    <groupId>org.jadira.usertype</groupId>
    <artifactId>usertype.extended</artifactId>
    <version>4.0.0.GA</version>
</dependency>

Dropwizard will auto register this in SessionFactoryFactory.

Support

Please file bug reports and feature requests in GitHub issues.

License

Copyright (c) 2014-2015 Jochen Schalanda

This library is licensed under the Apache License, Version 2.0.

See http://www.apache.org/licenses/LICENSE-2.0.html or the LICENSE file in this repository for the full license text.

Versions

Version
0.2.0