⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doctranslet.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* gnu.classpath.tools.doclets.xmldoclet.doctranslet.DocTranslet   Copyright (C) 2001 Free Software Foundation, Inc.This file is part of GNU Classpath.GNU Classpath is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING.  If not, write to theFree Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307 USA. */package gnu.classpath.tools.doclets.xmldoclet.doctranslet;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.IOException;import java.io.OutputStream;import java.io.PrintStream;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.HashMap;import java.util.Map;import java.util.jar.JarFile;import java.util.jar.Manifest;import java.util.jar.Attributes;import javax.xml.transform.ErrorListener;import javax.xml.transform.Source;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.TransformerFactoryConfigurationError;import javax.xml.transform.URIResolver;import javax.xml.transform.dom.DOMResult;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;import gnu.classpath.tools.IOToolkit;import gnu.classpath.tools.doclets.xmldoclet.Driver;import com.sun.javadoc.DocErrorReporter;public class DocTranslet implements ErrorListener {   private static class DocErrorReporterOutputStream      extends OutputStream   {      private ByteArrayOutputStream out = new ByteArrayOutputStream();      private DocErrorReporter reporter;      public DocErrorReporterOutputStream(DocErrorReporter reporter) {         this.reporter = reporter;      }      public void write(int ch) {         out.write(ch);         if (ch == 10) {            reporter.printNotice(out.toString());            out.reset();         }      }   }   private String mainResourceFilename;   private ClassLoader classLoader;   private Map transformerMap = new java.util.HashMap(); //WeakHashMap();   private DocTransletOptions options;      protected DocTranslet(String mainResourceFilename,                         ClassLoader classLoader)      throws DocTransletConfigurationException {      if (mainResourceFilename.length() > 0 && mainResourceFilename.charAt(0) == '/') {         mainResourceFilename = mainResourceFilename.substring(1);      }      this.mainResourceFilename = mainResourceFilename;      this.classLoader = classLoader;   }   private static boolean equalsFile(File file1, File file2) {      return file1.getAbsolutePath().equals(file2.getAbsolutePath());   }   private static File getParentFile(File file) {      String filename = file.getAbsolutePath();      if (filename.endsWith(File.separator)) {         filename = filename.substring(0, filename.length() - 1);      }      int lastSlash = filename.lastIndexOf(File.separatorChar);      if (lastSlash > 0) {         filename = filename.substring(0, lastSlash);      }      else {         filename = File.separator;      }      return new File(filename);   }   private static boolean cacheXSLTSheets = true;   public void apply(File xmlSourceDirectory, File targetDirectory,                     DocErrorReporter reporter)      throws DocTransletException {      PrintStream err = System.err;      try{         URL mainResourceURL = classLoader == null ?	     ClassLoader.getSystemResource(mainResourceFilename):	     classLoader.getResource(mainResourceFilename);         if (null == mainResourceURL) {            throw new DocTransletException("Cannot find resource '" + mainResourceFilename + "'");         }                  Map parameters = new HashMap();         parameters.put("gjdoc.xmldoclet.version", Driver.XMLDOCLET_VERSION);         parameters.put("gjdoc.option.nonavbar", xsltBoolean(options.nonavbar));         parameters.put("gjdoc.option.noindex", xsltBoolean(options.noindex));         parameters.put("gjdoc.option.notree", xsltBoolean(options.notree));         parameters.put("gjdoc.option.nocomment", xsltBoolean(options.nocomment));         parameters.put("gjdoc.option.nohelp", xsltBoolean(options.nohelp));         parameters.put("gjdoc.option.splitindex", xsltBoolean(options.splitindex));         parameters.put("gjdoc.option.linksource", xsltBoolean(options.linksource));         parameters.put("gjdoc.option.nodeprecatedlist", xsltBoolean(options.nodeprecatedlist));         parameters.put("gjdoc.option.uses", xsltBoolean(options.uses));         parameters.put("gjdoc.option.windowtitle", options.windowtitle);         parameters.put("gjdoc.option.helpfile", options.helpfile);         parameters.put("gjdoc.option.stylesheetfile", options.stylesheetfile);         parameters.put("gjdoc.option.header", options.header);         parameters.put("gjdoc.option.footer", options.footer);         parameters.put("gjdoc.option.bottom", options.bottom);         parameters.put("gjdoc.option.doctitle", options.doctitle);         List outputFileList = getOutputFileList(mainResourceURL,                                                 xmlSourceDirectory,                                                 parameters);         reporter.printNotice("Running DocTranslet...");                     TransformerFactory transformerFactory             = TransformerFactory.newInstance();         transformerFactory.setErrorListener(this);         boolean isLibxmlJ             = transformerFactory.getClass().getName().equals("gnu.xml.libxmlj.transform.TransformerFactoryImpl");         for (Iterator it = outputFileList.iterator(); it.hasNext(); ) {            if (isLibxmlJ) {               System.gc();               Runtime.getRuntime().runFinalization();            }            OutputFileInfo fileInfo = (OutputFileInfo)it.next();            File targetFile = new File(targetDirectory, fileInfo.getName());            File packageTargetDir = getParentFile(targetFile);            if (!packageTargetDir.exists() && !packageTargetDir.mkdirs()) {               throw new DocTransletException("Target directory " + packageTargetDir + " does not exist and cannot be created.");            }            if (options.linksource) {               File sourceTargetDirectory = new File(targetDirectory, "src-html");               File sourceTargetFile = new File(sourceTargetDirectory, fileInfo.getName());               File sourcePackageTargetDir = getParentFile(sourceTargetFile);               if (!sourcePackageTargetDir.exists() && !sourcePackageTargetDir.mkdirs()) {                  throw new DocTransletException("Target directory " + packageTargetDir + " does not exist and cannot be created.");               }            }            if (options.uses) {               File usesTargetDirectory = new File(targetDirectory, "class-use");               File usesTargetFile = new File(usesTargetDirectory, fileInfo.getName());               File usesPackageTargetDir = getParentFile(usesTargetFile);               if (!usesPackageTargetDir.exists() && !usesPackageTargetDir.mkdirs()) {                  throw new DocTransletException("Target directory " + packageTargetDir + " does not exist and cannot be created.");               }            }            if (null != fileInfo.getSource()) {                           reporter.printNotice("Copying " + fileInfo.getComment() + "...");               InputStream in = new URL(mainResourceURL, fileInfo.getSource()).openStream();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -