Conflicting setter definitions for property \“currency\”: javax.money.MonetaryAmountFactory
See original GitHub issueI use com.fasterxml.jackson and io.swagger libraries. In my REST endpoint I use org.javamoney.moneta.Money type for a GET query. When deploying the war i get following exception ;
Caused by: java.lang.IllegalArgumentException: Conflicting setter definitions for property "currency": javax.money.MonetaryAmountFactory#setCurrency(1 params) vs javax.money.MonetaryAmountFactory#setCurrency(1 params) at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getSetter(POJOPropertyBuilder.java:293) at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:246) at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:127) at io.swagger.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:99) at io.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:106) a
I have followed this reference (http://stairs-jumper.livejournal.com/33244.html) and wrote following code snippet[2]; and registered it at @ApplicationPath. But still getting same issue.
import javax.money.CurrencyUnit;
import javax.money.Monetary;
import javax.money.MonetaryAmountFactory;
import javax.ws.rs.ext.Provider;
import javax.xml.bind.annotation.XmlTransient;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
@Provider
public class JsonMoneyProvider extends JacksonJsonProvider {
public JsonMoneyProvider() {
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(MonetaryAmountFactory.class, MixIn.class);
setMapper(mapper);
}
public static interface MixIn {
@JsonIgnore
@XmlTransient
MonetaryAmountFactory setCurrency(CurrencyUnit currency);
@JsonIgnore
@XmlTransient
default MonetaryAmountFactory setCurrency(String currencyCode) {
return setCurrency(Monetary.getCurrency(currencyCode));
}
}
}
Registering;
@ApplicationPath("/rest")
public class RestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
set.add(com.test.JsonMoneyProvider.class);
SO query
Issue Analytics
- State:
- Created 7 years ago
- Reactions:1
- Comments:7 (4 by maintainers)
Top GitHub Comments
Maybe will be useful even with this huge delay: If you’re using
swagger-maven-plugin
validate version. I’ve fount that in version 3.1.4 is very old version of FaxterXML(1.9.X branch) Fix for it already placed in the 3.1.5-SNAPSOT of this pluginFirst: have you tried latest Jackson version (2.7.4)?