springfox-grails-integration
springfox-grails-integration copied to clipboard
Integration throws exception when allowedMethods contains List of methods instead of single string
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) ...
Thanks for reporting!