Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-5899

wsdl2java/xmlbeans issue on *nix

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.4.1, 1.7.6
    • Fix Version/s: None
    • Component/s: codegen
    • Labels:
      None
    • Environment:
      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:///"))

      { 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);
      }

        Attachments

          Activity

            People

            • Assignee:
              robertlazarski Robert Lazarski
              Reporter:
              mpo22 Mickael Pouliquen

              Dates

              • Created:
                Updated:

                Issue deployment