Description:
|
This has been spawned from a forum posting. If a bean validated with the
MethodValidationInterceptor
_MethodValidationInterceptor_
has two methods with the same name that are prefixed with get/has/is, calling one of these methods will result in a
NullPointerException
_NullPointerException_
.
{noformat}
java.lang.NullPointerException at org.hibernate.validator.internal.engine.ValidatorImpl.validateParametersInContext(ValidatorImpl.java:846) at org.hibernate.validator.internal.engine.ValidatorImpl.validateAllParameters(ValidatorImpl.java:218) at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:88) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
{noformat}
Code snippet example: Problem experienced when calling following methods on method validated bean.
{code}
ValidatedObject getMyValidObject(arg1); ValidatedObject getMyValidObject(arg1, arg2);
{code}
Workaround:
{code}
ValidatedObject retrieveMyValidObject(arg1); ValidatedObject retrieveMyValidObject(arg1, arg2);
{code}
or:
{code}
ValidatedObject getMyValidObject(arg1); ValidatedObject getMyValidObjectDifferentMethodName(arg1, arg2);
{code}
I'm not aware of a workaround that doesn't involve having to change the interface! A detailed description with some code references is available here: https://forum.hibernate.org/viewtopic.php?f=9&t=1016470&p=2456768#p2456768
|