A bundle for using Money objects in Dropwizard applications. This bundle provides:
- Jackson module for serializing/deserializing
Money
/FastMoney
objects - JDBI argument mappers for persisting
Money
objects as a BigDecimal SQL type - JDBI argument mappers for persisting
FastMoney
objects as a Numeric SQL type - Jersey
MoneyParam
for serializing/deserialzingMoney
objects - Jersey
FastMoneyParam
for serializing/deserialzingFastMoney
objects - Jersey
MonetaryExceptionMapper
for handlingMonetaryException
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));
}
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>
Please file bug reports and feature requests in GitHub issues.
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.