GithubHelp home page GithubHelp logo

isabella232 / dropwizard-java8 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dropwizard/dropwizard-java8

0.0 0.0 0.0 1.29 MB

Addon bundle for Dropwizard to support Java 8 features

Home Page: https://dropwizard.github.io/dropwizard-java8/

License: Apache License 2.0

Java 99.49% HTML 0.22% FreeMarker 0.30%

dropwizard-java8's Introduction

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.

dropwizard-java8's People

Contributors

joschi avatar mrserverless avatar alexheretic avatar davidillsley avatar gm2211 avatar kristoflemmens avatar msvab avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.