| /* gnu.classpath.tools.doclets.htmldoclet.ExternalDocSet |
| Copyright (C) 2004 Free Software Foundation, Inc. |
| |
| This file is part of GNU Classpath. |
| |
| GNU Classpath is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2, or (at your option) |
| any later version. |
| |
| GNU Classpath is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GNU Classpath; see the file COPYING. If not, write to the |
| Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 02111-1307 USA. */ |
| |
| package gnu.classpath.tools.doclets.htmldoclet; |
| |
| import java.io.BufferedReader; |
| import java.io.File; |
| import java.io.FileNotFoundException; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.InputStreamReader; |
| |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| |
| import java.util.HashSet; |
| import java.util.Properties; |
| import java.util.Set; |
| |
| import com.sun.javadoc.ClassDoc; |
| |
| public class ExternalDocSet |
| { |
| private String url; |
| private String packageListDir; |
| private URL docSetDirectoryURL; |
| |
| public String getPackageListDir() |
| { |
| return packageListDir; |
| } |
| |
| public ExternalDocSet(String url, |
| String packageListDir) |
| { |
| this.url = url; |
| this.packageListDir = packageListDir; |
| } |
| |
| private Set packageNames = new HashSet(); |
| private boolean javadocCompatible; |
| |
| public void load(File targetDirectory) |
| throws IOException, MalformedURLException |
| { |
| if (!url.endsWith("/")) { |
| url += "/"; |
| } |
| |
| this.docSetDirectoryURL = new URL(targetDirectory.toURL(), |
| url); |
| |
| URL packageListDirURL; |
| if (null != packageListDir) { |
| if (!packageListDir.endsWith("/")) { |
| packageListDir += "/"; |
| } |
| packageListDirURL = new URL(new File(System.getProperty("user.dir")).toURL(), |
| packageListDir); |
| } |
| else { |
| packageListDirURL = docSetDirectoryURL; |
| } |
| |
| URL packageListURL = new URL(packageListDirURL, |
| "package-list"); |
| InputStream in = packageListURL.openStream(); |
| if (null != in) { |
| readPackages(in); |
| in.close(); |
| } |
| else { |
| throw new FileNotFoundException(packageListURL.toString()); |
| } |
| |
| URL gjdocPropertiesURL = new URL(packageListDirURL, |
| "gjdoc.properties"); |
| try { |
| InputStream propertiesIn = gjdocPropertiesURL.openStream(); |
| if (null != in) { |
| Properties properties = new Properties(); |
| properties.load(propertiesIn); |
| propertiesIn.close(); |
| |
| String gjdocCompatProperty = properties.getProperty("gjdoc.compat"); |
| if (null != gjdocCompatProperty) { |
| javadocCompatible = "true".equals(properties.getProperty("gjdoc.compat")); |
| } |
| else { |
| javadocCompatible = true; |
| } |
| } |
| else { |
| javadocCompatible = true; |
| } |
| } |
| catch (FileNotFoundException e) { |
| javadocCompatible = true; |
| } |
| } |
| |
| public String getPackageDocURL(String packageName) |
| { |
| try { |
| URL packageURL = new URL(docSetDirectoryURL, |
| packageName.replace('.', '/')); |
| return packageURL.toString(); |
| } |
| catch (MalformedURLException e) { |
| // This should not happen since we know that packageName is a |
| // proper Java identifiers, so the resulting URL can't be |
| // invalid |
| throw new RuntimeException(e); |
| } |
| } |
| |
| public String getClassDocURL(String packageName, String typeName) |
| { |
| try { |
| URL fileURL = new URL(docSetDirectoryURL, |
| packageName.replace('.', '/') + "/" + typeName + ".html"); |
| return fileURL.toString(); |
| } |
| catch (MalformedURLException e) { |
| // This should not happen since we know that packageName and |
| // typeName are proper Java identifiers, so the resulting URL |
| // can't be invalid |
| throw new RuntimeException(e); |
| } |
| } |
| |
| protected void readPackages(InputStream in) |
| throws IOException |
| { |
| BufferedReader reader |
| = new BufferedReader(new InputStreamReader(in, "UTF-8")); |
| String line; |
| while ((line = reader.readLine()) != null) { |
| line = line.trim(); |
| packageNames.add(line); |
| } |
| } |
| |
| public Set getPackageNames() |
| { |
| return packageNames; |
| } |
| |
| public boolean isJavadocCompatible() |
| { |
| return javadocCompatible; |
| } |
| } |