[
https://issues.apache.org/jira/browse/BVAL-97?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13091083#comment-13091083
]
Roman Stumm edited comment on BVAL-97 at 8/25/11 3:58 PM:
----------------------------------------------------------
This is the version I committed:
protected 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.
Enumeration<URL> urls = loader.getResources(path);
if (urls.hasMoreElements()) {
String url = urls.nextElement().toString();
while (urls.hasMoreElements()) {
if (!url.equals(urls.nextElement().toString())) { //
complain when first duplicate found
throw new ValidationException("More than one " + path +
" is found in the classpath");
}
}
}
}
return inputStream;
}
was (Author: romanstumm):
This is the version I committed:
protected 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.
Enumeration<URL> urls = loader.getResources(path);
Set<String> uniqueUrls = new HashSet<String>(2);
while (urls.hasMoreElements()) {
uniqueUrls.add(urls.nextElement().toString());
if (uniqueUrls.size() > 1){ // complain when first duplicate
found
throw new ValidationException("More than one " + path + "
is found in the classpath"
+ uniqueUrls);
}
}
}
return inputStream;
}
> 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
> Assignee: Roman Stumm
>
> 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