Я использую библиотеки com.fasterxml.jackson
и io.swagger
. В моей конечной точке REST я использую тип org.javamoney.moneta.Money
для запроса GET. При развертывании войны я получаю следующее исключение 1;
Я следовал этому ссылке и написал следующий код[2]; и зарегистрировал его в @ApplicationPath. Но все еще получаю ту же проблему. Любое руководство было бы действительно полезно?
@ApplicationPath("/rest")
public class RestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
set.add(com.test.JsonMoneyProvider.class);
[2]
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));
}
}
}
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
setCurrency(String currencyCode)
реализации Только имя и подпись метода (и поля) используются для сопоставления аннотаций MixIn: определения доступа (частный, защищенный, ...) и реализации методов игнорируются wiki.fasterxml.com/JacksonMixInAnnotations - person varren   schedule 26.05.2016