Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.4.1, 1.7.6
-
None
-
None
-
linux (debian/redhat)
all axis2 versions impacted
Description
The wsdl2java command with xmlbeans code generation applied to a complex wsdl with schemas redefinitions FAILS on LINUX os but NOT on WINDOWS os:
wsdl2java.sh -o out -d xmlbeans -or -noBuildXML -uri sample.wsdl
... error on *nix platforms only
The issue was initially produced on axis2-1.4.1, reproduced on latest version axis2-1.7.6
This platform specific issue comes from the method 'getFileFromURI' in "./modules/xmlbeans/src/org/apache/axis2/xmlbeans/CodeGenerationUtility.java": the method remove the prefix of the url/uri-like path param. It works on windows, but on unix it removes the root slash.
private File getFileFromURI(String path) {
if(path.startsWith("file:///"))
else if(path.startsWith("file://"))
{ path = path.substring(7); }else if(path.startsWith("file:/"))
{ path = path.substring(6); } return new File(path);
}
Exemple,
'file:/drive:/dir1/dir2/file1' becomes 'drive:/dir1/dir2/file1' => OK
'file:/dir1/dir2/file1' becomes 'dir1/dir2/file1' => KO
A fix could be:
private File getFileFromURI(String path) {
//on windows, will remove the 'file:' prefix and ALL slashes
//on unix, will remove the 'file:' prefix and keep the ROOT slash
int offset = "/".equals(File.separator) ? 1 : 0;
if(path.startsWith("file:///"))
else if(path.startsWith("file://"))
{ path = path.substring(7-offset); }else if(path.startsWith("file:/"))
{ path = path.substring(6-offset); } return new File(path);
}