You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Mickael Pouliquen (JIRA)" <ji...@apache.org> on 2017/11/16 10:38:00 UTC

[jira] [Created] (AXIS2-5899) wsdl2java/xmlbeans issue on *nix

Mickael Pouliquen created AXIS2-5899:
----------------------------------------

             Summary: wsdl2java/xmlbeans issue on *nix
                 Key: AXIS2-5899
                 URL: https://issues.apache.org/jira/browse/AXIS2-5899
             Project: Axis2
          Issue Type: Bug
          Components: codegen
    Affects Versions: 1.7.6, 1.4.1
         Environment: linux (debian/redhat)
all axis2 versions impacted

            Reporter: Mickael Pouliquen


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:///")){
                            path = path.substring(8);
            } 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:///")){
                            path = path.substring(8-offset);
            } else if(path.startsWith("file://")){
                path = path.substring(7-offset);
            } else if(path.startsWith("file:/")){
                path = path.substring(6-offset);
            }
            return new File(path);
        }





--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org