code: URI createEntryUri(String r_entryPath, File useArchiveFile) {
          URI archiveUri = getURI(useArchiveFile);
          if ( archiveUri == null ) {
              return null;
          }
  
          if ( r_entryPath.isEmpty() ) {
              return null;
          }
  
          // URLs for jar/zip data now use wsjar to avoid locking issues via jar protocol.
          //
          // The single string constructor is used to control the encoding an ddecoding.
          //
          // The return value of 'parentUri.toString()' is an encoded string.  The
          // handler (usually WSJarURLStreamHandler) must decode that string.
          //
          // See: http://stackoverflow.com/questions/9419658/normalising-possibly-encoded-uri-strings-in-java.
  
          String encodedUriText =
              getProtocol() + ":" +
              archiveUri.toString() + "!/" +
              ParserUtils.encode(r_entryPath);
  
          try {
              return new URI(encodedUriText);
          } catch ( URISyntaxException e ) {
              // FFDC
              return null;
          }
      }
docs: Create and return a URI for an entry of an archive.
  
  Usually, "wsjar" is used as the protocol:
  
  <code>wsjar:&lt;archiveUri&gt;!/&lt;entryPath&gt;</code>
  
  Optionally, the protocol can be changed to "jar":
  
  <code>jar:&lt;archiveUri&gt;!/&lt;entryPath&gt;</code>
  
  @param absPath The path to the entry.
  @param useArchiveFile The archive file containing the entry.
  
  @return The URI of the entry in the archive file.
  
  TODO: Has default protection, but should not.  Having default
  protection allows it to be used from
  "com.ibm.ws.artifact.zip.internal.ZipFileContainerTest".