I seem to be having a problem with case insensitivity. I have a class with
two methods whose names differ only in case that causes the scanner to have
problems.
More specifically, I have a response class for my REST API:
public interface Job {
@CheckForNull
List<Job> getPredecessors();
@CheckForNull
String getPREDECESSORS();
}
This class is autogenerated in the build, and it really is the intention to
have two different getters that are similarly named, but with different
capitalizations.
When swagger scans my classes I get an error:
Caused by: java.lang.IllegalArgumentException: Conflicting getter
definitions for property "predecessors":
com.termalabs.ac.rest.Job#getPREDECESSORS(0 params) vs
com.termalabs.ac.rest.Job#getPredecessors(0 params)
at
com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getGetter(POJOPropertyBuilder.java:244)
at
com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getAccessor(POJOPropertyBuilder.java:364)
at
com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getPrimaryMember(POJOPropertyBuilder.java:396)
at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:306)
at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:183)
at
io.swagger.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:100)
at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:234)
at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:183)
at
io.swagger.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:100)
at
io.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:159)
at
io.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:110)
at
io.swagger.converter.ModelConverterContextImpl.resolveProperty(ModelConverterContextImpl.java:80)
at
io.swagger.converter.ModelConverters.readAsProperty(ModelConverters.java:58)
at io.swagger.jaxrs.Reader.parseMethod(Reader.java:896)
at io.swagger.jaxrs.Reader.read(Reader.java:322)
at io.swagger.jaxrs.Reader.read(Reader.java:172)
at io.swagger.jaxrs.config.BeanConfig.scanAndRead(BeanConfig.java:242)
at io.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:221)
at
com.termalabs.server.restapi.JawsSwaggerApplication.<init>(JawsSwaggerApplication.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at
org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:150)
... 18 more
Apparently jackson can't handle having two different getters with the same
spelling but different capitalizations. This is strange to me because both
java and Json are case sensitive.
I can find some references to
MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES in jackson, but I can't
figure out how to use it.
Is there a way to make this scanning of my services case sensitive?
Thanks,
Michael
--
You received this message because you are subscribed to the Google Groups
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.