Thanks, I fixed the test using your suggestion but used the File(parent, child)
ctor:
String file = new File(basedir, "build.xml").toURI().toString();
--Sean
Eric Tournier wrote:
Hi :)
I am facing an AssertionFailedError during the execution of
testLocalFileWithEmptyBaseURI() from
org.apache.xml.security.test.utils.resolver.ResourceResolverTest class.
All the source files have been downloaded from SVN trunk
I'm using Windows XP, Eclipse 3.4, Maven 2.0.9 and the file build.xml
used in the test is located in the
"C:\Eclipse-Ganymede\Workspaces-JIRA\XML Security\xmlsec" directory.
During the execution of testLocalFileWithEmptyBaseURI method(), the
call to resolve(Attr uri, String BaseURI) from ResourceResolver class
leads to engineResolve(Attr uri, String BaseURI) method of the
ResolverLocalFilesystem class. Inside this method, the translation of
the uri fragment ("file:C:\Eclipse-Ganymede\Workspaces-JIRA\XML
Security\xmlsec/build.xml") to a filename through static
translateUriToFilename(String uri) does not work :
===
private static String translateUriToFilename(String uri) {
String subStr = uri.substring(FILE_URI_LENGTH);
(...)
if (subStr.charAt(1) == ':') {
// we're running M$ Windows, so this works fine
return subStr;
}
// we're running some UNIX, so we have to prepend a slash
return "/" + subStr;
}
===
In the code above, subStr = :\Eclipse-Ganymede\Workspaces-JIRA\XML
Security\xmlsec/build.xml and the result of (subStr.charAt(1) == ':') is
false. Then we assume we are using UNIX OS and prepend a slash. The
returned filename is /:\Eclipse-Ganymede\Workspaces-JIRA\XML
Security\xmlsec/build.xml which is not understood by Windows :| And the
test fails.
This piece of code works perfectly when called during
org.apache.xml.security.test.c14n.implementations.testA(). In fact, the
reason is that there is a mistake in the construction of the uri
parameter in testLocalFileWithEmptyBaseURI() :
===
String file = "file:" + basedir + "/build.xml"; <===================
Should be "file:/"
uriAttr.setValue(file);
ResourceResolver res = ResourceResolver.getInstance(uriAttr, file);
try {
res.resolve(uriAttr, "");
} catch (Exception e) {
fail(e.getMessage());
}
}
===
"file:" should be replaced by "file:/".
I guess, it would be safer to use the following :
File myFile = new java.io.File(basedir + "/build.xml");
String file = myFile.toURI().toString();
(...)
Hope this could help.
Eric
Eric TOURNIER
Expertise technique Java / J2EE / XML / AOP - Spring / Hibernate / Maven
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
KEYNECTIS
11-13 Rue René Jacques - 92131 ISSY-LES-MOULINEAUX Cedex
Tél : 01.55.64.22.94 - Fax : 01.55.64.22.01
eric.tourn...@keynectis.com <outbind://60/eric.tourn...@keynectis.com>
Les chiens de cirque sautent quand le dresseur fait claquer son fouet,
mais le chien vraiment bien dressé
est celui qui exécute son saut périlleux sans avoir besoin du fouet.
_________________________________________________________
*Georges ORWELL* « Cela ne se fait pas » ou la censure voilée,
/Chronique À ma guise n°19, *7 juillet 1944 */
European leading provider of trust technologies and services,
*KEYNECTIS* empowers corporates, governments,
financial institutions and business partners to secure IDs and
electronic transactions to the benefit of the end users.
*KEYNECTIS* offer, software and services, benefits from experience of
more than 25 millions digital certificates issued
and 10 millions documents signed using its technologies.
*/Merci de prendre en considération votre responsabilité
environnementale avant d'imprimer cet e-mail/*