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.

Reply via email to