You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bval.apache.org by "Romain Manni-Bucau (JIRA)" <ji...@apache.org> on 2011/08/24 20:02:30 UTC

[jira] [Commented] (BVAL-97) More than one META-INF/validation.xml in tomcat webapp

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

Romain Manni-Bucau commented on BVAL-97:
----------------------------------------

replacing ValidationParser.getInputStream() with:

{code}
private InputStream getInputStream(String path) throws IOException {
        ClassLoader loader = PrivilegedActions.getClassLoader(getClass());
        InputStream inputStream = loader.getResourceAsStream( path );

        if ( inputStream != null ) {
            // spec says: If more than one META-INF/validation.xml file
            // is found in the classpath, a ValidationException is raised.
            if ( path.equals("META-INF/validation.xml") ) {
                Enumeration<URL> urls = loader.getResources(path);
                Set<String> uniqueUrls = new HashSet<String>();
                while (urls.hasMoreElements()) {
                    uniqueUrls.add(urls.nextElement().toString());
                }
                if (uniqueUrls.size() > 1) {
                    throw new ValidationException("More than one " + path + " is found in the classpath"
                            + uniqueUrls);
                }
            }
        }

        return inputStream;
    }
{code}

works.

> More than one META-INF/validation.xml in tomcat webapp
> ------------------------------------------------------
>
>                 Key: BVAL-97
>                 URL: https://issues.apache.org/jira/browse/BVAL-97
>             Project: BeanValidation
>          Issue Type: Bug
>    Affects Versions: 0.3-incubating
>         Environment: Tomcat 7.0.16 + OpenEJB 4.0.0-SNAPSHOT
>            Reporter: Romain Manni-Bucau
>
> To be spec compliant bval check there is only one validation.xml in the classloader.
> However in tomcat WEB-INF/classes/META-INF/validation.xml is returned twice so it fails because of the following code in ValidationParser:
> {code}
>            if ( path.equals("META-INF/validation.xml") ) {
>                 Enumeration<URL> urls = loader.getResources(path);
>                 if ( urls.hasMoreElements() && (urls.nextElement() != null) && urls.hasMoreElements() ) {
>                     throw new ValidationException("More than one " + path + " is found in the classpath");
>                 }
>             }
> {code}
> To fix it urls should be check to see if they are all equals or loader.findResources(path) could be used instead of loader.getResources(path).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira