bval-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Benson (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (BVAL-82) Validation of inherited methods causes ValidationException
Date Sat, 07 Apr 2012 06:15:20 GMT

    [ https://issues.apache.org/jira/browse/BVAL-82?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13249184#comment-13249184
] 

Matt Benson commented on BVAL-82:
---------------------------------

Rather than merging info from superclass/interface methods into the descriptor, it could be
easier to simply traverse the whole hierarchy and process method validation metadata from
separate types in multiple passes.  In any event the next version of the spec will contain
method validation so we should be steering in that direction.  Let's defer the issue beyond
0.4.
                
> Validation of inherited methods causes ValidationException
> ----------------------------------------------------------
>
>                 Key: BVAL-82
>                 URL: https://issues.apache.org/jira/browse/BVAL-82
>             Project: BVal
>          Issue Type: Bug
>          Components: method validation
>    Affects Versions: 0.1-incubating, 0.2-incubating, 0.3-incubating, 0.4
>            Reporter: Daniel Drachau
>            Assignee: Mohammad Nour
>             Fix For: 0.5
>
>
> MethodValidationImpl throws an exception if it tries to verify an inherited method (definition
in the abstract superclass).
>   public <T> Set<ConstraintViolation<T>> validateParameter(Class<T>
clazz, Method method,
>                                                            Object parameter,
>                                                            int parameterIndex,
>                                                            Class<?>... groupArray)
{
>     MethodBeanDescriptorImpl beanDesc =
>         (MethodBeanDescriptorImpl) getConstraintsForClass(clazz);
>     MethodDescriptorImpl methodDescriptor =
>         (MethodDescriptorImpl) beanDesc.getConstraintsForMethod(method);
>     if ( methodDescriptor == null ) {
> -->        throw new ValidationException("Method " + method + " doesn't belong to
class " + clazz);
>     }
> a possible fix might be to collect the method declarations of the parent classes as well
(in the MethodValidatorMetaBeanFactory). I cannot decide if this really fix the problem or
just one symptom.
>   private void buildMethodConstraints(MethodBeanDescriptorImpl beanDesc)
>       throws InvocationTargetException, IllegalAccessException {
>     beanDesc.setMethodConstraints(new HashMap<Method, MethodDescriptor>());
> ### new ###
>     ArrayList<Method> methods = new ArrayList<Method>();
>     for (Method m : beanDesc.getMetaBean().getBeanClass().getDeclaredMethods()) {
>       methods.add(m);
>     }
>     Class clazz = beanDesc.getMetaBean().getBeanClass();
>     while (clazz.getSuperclass() != null) {
>       clazz = clazz.getSuperclass();
>       for (Method m : clazz.getDeclaredMethods()) {
>         methods.add(m);
>       }
>     }
>     for (Method method : methods) {
> ### end new ###

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message