protected void addPathFile(final File pathComponent) throws IOException {
   if (!this.pathComponents.contains(pathComponent)) {
     this.pathComponents.addElement(pathComponent);
   }
   if (pathComponent.isDirectory()) {
     return;
   }
   final String absPathPlusTimeAndLength =
       pathComponent.getAbsolutePath()
           + pathComponent.lastModified()
           + "-"
           + pathComponent.length();
   String classpath = AntClassLoader.pathMap.get(absPathPlusTimeAndLength);
   if (classpath == null) {
     JarFile jarFile = null;
     try {
       jarFile = new JarFile(pathComponent);
       final Manifest manifest = jarFile.getManifest();
       if (manifest == null) {
         return;
       }
       classpath = manifest.getMainAttributes().getValue(Attributes.Name.CLASS_PATH);
     } finally {
       if (jarFile != null) {
         jarFile.close();
       }
     }
     if (classpath == null) {
       classpath = "";
     }
     AntClassLoader.pathMap.put(absPathPlusTimeAndLength, classpath);
   }
   if (!"".equals(classpath)) {
     final URL baseURL = AntClassLoader.FILE_UTILS.getFileURL(pathComponent);
     final StringTokenizer st = new StringTokenizer(classpath);
     while (st.hasMoreTokens()) {
       final String classpathElement = st.nextToken();
       final URL libraryURL = new URL(baseURL, classpathElement);
       if (!libraryURL.getProtocol().equals("file")) {
         this.log(
             "Skipping jar library "
                 + classpathElement
                 + " since only relative URLs are supported by this"
                 + " loader",
             3);
       } else {
         final String decodedPath = Locator.decodeUri(libraryURL.getFile());
         final File libraryFile = new File(decodedPath);
         if (!libraryFile.exists() || this.isInPath(libraryFile)) {
           continue;
         }
         this.addPathFile(libraryFile);
       }
     }
   }
 }
示例#2
0
  protected void loadJarFiles(AppletClassLoader loader) throws IOException, InterruptedException {
    // Load the archives if present.
    // REMIND - this probably should be done in a separate thread,
    // or at least the additional archives (epll).
    String jarFiles = getJarFiles();

    if (jarFiles != null) {
      StringTokenizer st = new StringTokenizer(jarFiles, ",", false);
      while (st.hasMoreTokens()) {
        String tok = st.nextToken().trim();
        try {
          loader.addJar(tok);
        } catch (IllegalArgumentException e) {
          // bad archive name
          continue;
        }
      }
    }
  }
  protected List<String> parseStringList(String list) throws IOException {
    List<String> res = null;

    {
      if (list != null) {
        res = new ArrayList<String>();

        StringTokenizer st = new StringTokenizer(list, ",");
        while (st.hasMoreTokens()) {
          String t = st.nextToken();
          t = t.trim();
          if (t.length() > 0) {
            res.add(t);
          }
        }
      }
    }

    return res;
  }