Skip to content

Instantly share code, notes, and snippets.

@ck1125
Created August 7, 2012 20:05
Show Gist options
  • Save ck1125/3288880 to your computer and use it in GitHub Desktop.
Save ck1125/3288880 to your computer and use it in GitHub Desktop.
optional request body method parameter processor
import org.springframework.core.MethodParameter
import org.springframework.http.HttpInputMessage
import org.springframework.http.converter.HttpMessageConverter
import org.springframework.web.bind.support.WebDataBinderFactory
import org.springframework.web.context.request.NativeWebRequest
import org.springframework.web.method.support.ModelAndViewContainer
import org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor
class OptionalRequestBodyMethodProcessor extends RequestResponseBodyMethodProcessor {
OptionalRequestBodyMethodProcessor(List<HttpMessageConverter<?>> messageConverters) {
super(messageConverters)
}
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(OptionalRequestBody.class)
}
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
HttpInputMessage inputMessage = createInputMessage(webRequest)
if (inputMessage.headers.getContentLength() > 0 && inputMessage.body) {
return super.resolveArgument(parameter, mavContainer, webRequest, binderFactory)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment