Dropwizard Money
A bundle for using Money objects in Dropwizard applications. This bundle provides:
- Jackson module for serializing/deserializing
Money/FastMoneyobjects - JDBI argument mappers for persisting
Moneyobjects as a BigDecimal SQL type - JDBI argument mappers for persisting
FastMoneyobjects as a Numeric SQL type - Jersey
MoneyParamfor serializing/deserialzingMoneyobjects - Jersey
FastMoneyParamfor serializing/deserialzingFastMoneyobjects - Jersey
MonetaryExceptionMapperfor handlingMonetaryException
Usage
Within your Configuration class, add the following:
@Valid
@NotNull
private final MoneyFactory money = new MoneyFactory();
@JsonProperty
public MoneyFactory getMoneyFactory() {
return money;
}
Then within your Application class:
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
bootstrap.addBundle(new MoneyBundle<MyConfiguration>() {
@Override
public MoneyFactory getMoneyFactory(MyConfiguration configuration) {
return configuration.getMoneyFactory();
}
});
}
@Override
public void run(MyConfiguration config, Environment environment) throws Exception {
final String defaultCurrency = config.getMoneyFactory().getDefaultCurrencyCode();
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, config.getDataSourceFactory(), "postgresql");
jdbi.registerArgumentFactory(new MoneyArgumentFactory());
jdbi.registerColumnMapper(new MoneyMapper(defaultCurrency));
}
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>com.smoketurner.dropwizard</groupId>
<artifactId>dropwizard-money</artifactId>
<version>1.2.0-1</version>
</dependency>
Support
Please file bug reports and feature requests in GitHub issues.
License
Copyright (c) 2018 Smoke Turner, LLC
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.