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