springfox-grails-integration icon indicating copy to clipboard operation
springfox-grails-integration copied to clipboard

Integration throws exception when allowedMethods contains List of methods instead of single string

Open billjamesdev opened this issue 7 years ago • 1 comments

In a Grails controller, there are two forms for the static allowedMethods. static allowedMethods = [ 'actionName': 'POST' ] // for a single verb or static allowedMethods = [ 'actionName': [ 'POST', 'GET' ] ] // for allowing more than one verb against a single action

The code in Actions.java that reads those verbs currently assumes the value in the allowedMethods map will be a String, and throws a ClassCastException when you use the 2nd form above. methods.add(RequestMethod.valueOf(allowedMethods.get(context.getAction()))); throws

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String at springfox.documentation.grails.Actions.methodOverrides(Actions.java:61) at springfox.documentation.grails.Actions.methodOverrides(Actions.java:72) at springfox.documentation.grails.GrailsActionAttributes.httpMethods(GrailsActionAttributes.java:63) at springfox.documentation.grails.GrailsActionContext.(GrailsActionContext.java:47) at springfox.documentation.grails.GrailsRequestHandlerProvider.lambda$fromGrailsAction$1(GrailsRequestHandlerProvider.java:57) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1548) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ...

billjamesdev avatar Apr 05 '18 21:04 billjamesdev

Thanks for reporting!

dilipkrish avatar Apr 08 '18 12:04 dilipkrish