Mercurial > hg > release > icedtea6-1.11
view patches/openjdk/6851834-handle_renames.patch @ 2909:c5297dd496da
Fix patches to work with patch tools that can not handle renames
2013-06-26 Omair Majid <omajid@redhat.com>
* Makefile.am:
(SECURITY_PATCHES): Add patches/openjdk/6990754-handle_renames.patch and
patches/openjdk/6851834-handle_renames.patch
* patches/openjdk/6990754-use_native_memory_for_symboltable.patch: Don't
rename files using extended-diff-style.
* patches/openjdk/6990754-handle_renames.patch: New file. Contains the
rename portion of 6990754 since some patch programs can not handle
renames.
* patches/openjdk/6851834-restructure.patch: Don't rename files using
extended-diff-style.
* patches/openjdk/6851834-handle_renames.patch: New file. Contains rename
porition of 6851834 since some patch programs can not handle renames.
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Wed, 26 Jun 2013 10:47:13 -0400 |
parents | |
children |
line wrap: on
line source
This handles the rename bits of the original 6851834 diff -ruN openjdk.orig/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java openjdk/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java --- openjdk.orig/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java 1969-12-31 19:00:00.000000000 -0500 +++ openjdk/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java 2013-06-25 14:55:45.802321034 -0400 @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.tools.doclets.formats.html; + +import java.io.*; +import javax.tools.FileObject; +import com.sun.javadoc.*; +import com.sun.tools.doclets.internal.toolkit.*; +import com.sun.tools.doclets.internal.toolkit.util.*; +import com.sun.tools.doclets.formats.html.markup.*; + +/** + * Converts Java Source Code to HTML. + * + * This code is not part of an API. + * It is implementation that is subject to change. + * Do not use it as an API + * + * @author Jamie Ho + * @author Bhavesh Patel (Modified) + * @since 1.4 + */ +public class SourceToHTMLConverter { + + /** + * The number of trailing blank lines at the end of the page. + * This is inserted so that anchors at the bottom of small pages + * can be reached. + */ + private static final int NUM_BLANK_LINES = 60; + + /** + * New line to be added to the documentation. + */ + private static final Content NEW_LINE = new RawHtml(DocletConstants.NL); + + /** + * Relative path from the documentation root to the file that is being + * generated. + */ + private static String relativePath = ""; + + /** + * Source is converted to HTML using static methods below. + */ + private SourceToHTMLConverter() {} + + /** + * Convert the Classes in the given RootDoc to an HTML. + * + * @param configuration the configuration. + * @param rd the RootDoc to convert. + * @param outputdir the name of the directory to output to. + */ + public static void convertRoot(ConfigurationImpl configuration, RootDoc rd, + String outputdir) { + if (rd == null || outputdir == null) { + return; + } + PackageDoc[] pds = rd.specifiedPackages(); + for (int i = 0; i < pds.length; i++) { + convertPackage(configuration, pds[i], outputdir); + } + ClassDoc[] cds = rd.specifiedClasses(); + for (int i = 0; i < cds.length; i++) { + convertClass(configuration, cds[i], + getPackageOutputDir(outputdir, cds[i].containingPackage())); + } + } + + /** + * Convert the Classes in the given Package to an HTML. + * + * @param configuration the configuration. + * @param pd the Package to convert. + * @param outputdir the name of the directory to output to. + */ + public static void convertPackage(ConfigurationImpl configuration, PackageDoc pd, + String outputdir) { + if (pd == null || outputdir == null) { + return; + } + String classOutputdir = getPackageOutputDir(outputdir, pd); + ClassDoc[] cds = pd.allClasses(); + for (int i = 0; i < cds.length; i++) { + convertClass(configuration, cds[i], classOutputdir); + } + } + + /** + * Return the directory write output to for the given package. + * + * @param outputDir the directory to output to. + * @param pd the Package to generate output for. + * @return the package output directory as a String. + */ + private static String getPackageOutputDir(String outputDir, PackageDoc pd) { + return outputDir + File.separator + + DirectoryManager.getDirectoryPath(pd) + File.separator; + } + + /** + * Convert the given Class to an HTML. + * + * @param configuration the configuration. + * @param cd the class to convert. + * @param outputdir the name of the directory to output to. + */ + public static void convertClass(ConfigurationImpl configuration, ClassDoc cd, + String outputdir) { + if (cd == null || outputdir == null) { + return; + } + try { + SourcePosition sp = cd.position(); + if (sp == null) + return; + Reader r; + // temp hack until we can update SourcePosition API. + if (sp instanceof com.sun.tools.javadoc.SourcePositionImpl) { + FileObject fo = ((com.sun.tools.javadoc.SourcePositionImpl) sp).fileObject(); + if (fo == null) + return; + r = fo.openReader(true); + } else { + File file = sp.file(); + if (file == null) + return; + r = new FileReader(file); + } + LineNumberReader reader = new LineNumberReader(r); + int lineno = 1; + String line; + relativePath = DirectoryManager.getRelativePath(DocletConstants.SOURCE_OUTPUT_DIR_NAME) + + DirectoryManager.getRelativePath(cd.containingPackage()); + Content body = getHeader(); + Content pre = new HtmlTree(HtmlTag.PRE); + try { + while ((line = reader.readLine()) != null) { + addLineNo(pre, lineno); + addLine(pre, line, configuration.sourcetab, lineno); + lineno++; + } + } finally { + reader.close(); + } + addBlankLines(pre); + Content div = HtmlTree.DIV(HtmlStyle.sourceContainer, pre); + body.addContent(div); + writeToFile(body, outputdir, cd.name(), configuration); + } catch (Exception e){ + e.printStackTrace(); + } + } + + /** + * Write the output to the file. + * + * @param body the documentation content to be written to the file. + * @param outputDir the directory to output to. + * @param className the name of the class that I am converting to HTML. + * @param configuration the Doclet configuration to pass notices to. + */ + private static void writeToFile(Content body, String outputDir, + String className, ConfigurationImpl configuration) throws IOException { + Content htmlDocType = DocType.Transitional(); + Content head = new HtmlTree(HtmlTag.HEAD); + head.addContent(HtmlTree.TITLE(new StringContent( + configuration.getText("doclet.Window_Source_title")))); + head.addContent(getStyleSheetProperties(configuration)); + Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), + head, body); + Content htmlDocument = new HtmlDocument(htmlDocType, htmlTree); + File dir = new File(outputDir); + dir.mkdirs(); + File newFile = new File(dir, className + ".html"); + configuration.message.notice("doclet.Generating_0", newFile.getPath()); + FileOutputStream fout = new FileOutputStream(newFile); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout)); + bw.write(htmlDocument.toString()); + bw.close(); + fout.close(); + } + + /** + * Returns a link to the stylesheet file. + * + * @param configuration the doclet configuration for the current run of javadoc + * @return an HtmlTree for the lINK tag which provides the stylesheet location + */ + public static HtmlTree getStyleSheetProperties(ConfigurationImpl configuration) { + String filename = configuration.stylesheetfile; + if (filename.length() > 0) { + File stylefile = new File(filename); + String parent = stylefile.getParent(); + filename = (parent == null)? + filename: + filename.substring(parent.length() + 1); + } else { + filename = "stylesheet.css"; + } + filename = relativePath + filename; + HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style"); + return link; + } + + /** + * Get the header. + * + * @return the header content for the HTML file + */ + private static Content getHeader() { + return new HtmlTree(HtmlTag.BODY); + } + + /** + * Add the line numbers for the source code. + * + * @param pre the content tree to which the line number will be added + * @param lineno The line number + */ + private static void addLineNo(Content pre, int lineno) { + HtmlTree span = new HtmlTree(HtmlTag.SPAN); + span.addStyle(HtmlStyle.sourceLineNo); + if (lineno < 10) { + span.addContent("00" + Integer.toString(lineno)); + } else if (lineno < 100) { + span.addContent("0" + Integer.toString(lineno)); + } else { + span.addContent(Integer.toString(lineno)); + } + pre.addContent(span); + } + + /** + * Add a line from source to the HTML file that is generated. + * + * @param pre the content tree to which the line will be added. + * @param line the string to format. + * @param tabLength the number of spaces for each tab. + * @param currentLineNo the current number. + */ + private static void addLine(Content pre, String line, int tabLength, + int currentLineNo) { + if (line != null) { + StringBuffer lineBuffer = new StringBuffer(Util.escapeHtmlChars(line)); + Util.replaceTabs(tabLength, lineBuffer); + pre.addContent(new RawHtml(lineBuffer.toString())); + Content anchor = HtmlTree.A_NAME("line." + Integer.toString(currentLineNo)); + pre.addContent(anchor); + pre.addContent(NEW_LINE); + } + } + + /** + * Add trailing blank lines at the end of the page. + * + * @param pre the content tree to which the blank lines will be added. + */ + private static void addBlankLines(Content pre) { + for (int i = 0; i < NUM_BLANK_LINES; i++) { + pre.addContent(NEW_LINE); + } + } + + /** + * Given a <code>Doc</code>, return an anchor name for it. + * + * @param d the <code>Doc</code> to check. + * @return the name of the anchor. + */ + public static String getAnchorName(Doc d) { + return "line." + d.position().line(); + } +} diff -ruN openjdk.orig/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java openjdk/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java --- openjdk.orig/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java 2013-06-25 14:55:45.802321034 -0400 +++ openjdk/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java 1969-12-31 19:00:00.000000000 -0500 @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.tools.doclets.formats.html; - -import java.io.*; -import javax.tools.FileObject; -import com.sun.javadoc.*; -import com.sun.tools.doclets.internal.toolkit.*; -import com.sun.tools.doclets.internal.toolkit.util.*; -import com.sun.tools.doclets.formats.html.markup.*; - -/** - * Converts Java Source Code to HTML. - * - * This code is not part of an API. - * It is implementation that is subject to change. - * Do not use it as an API - * - * @author Jamie Ho - * @author Bhavesh Patel (Modified) - * @since 1.4 - */ -public class SourceToHTMLConverter { - - /** - * The number of trailing blank lines at the end of the page. - * This is inserted so that anchors at the bottom of small pages - * can be reached. - */ - private static final int NUM_BLANK_LINES = 60; - - /** - * New line to be added to the documentation. - */ - private static final Content NEW_LINE = new RawHtml(DocletConstants.NL); - - /** - * Relative path from the documentation root to the file that is being - * generated. - */ - private static String relativePath = ""; - - /** - * Source is converted to HTML using static methods below. - */ - private SourceToHTMLConverter() {} - - /** - * Convert the Classes in the given RootDoc to an HTML. - * - * @param configuration the configuration. - * @param rd the RootDoc to convert. - * @param outputdir the name of the directory to output to. - */ - public static void convertRoot(ConfigurationImpl configuration, RootDoc rd, - String outputdir) { - if (rd == null || outputdir == null) { - return; - } - PackageDoc[] pds = rd.specifiedPackages(); - for (int i = 0; i < pds.length; i++) { - convertPackage(configuration, pds[i], outputdir); - } - ClassDoc[] cds = rd.specifiedClasses(); - for (int i = 0; i < cds.length; i++) { - convertClass(configuration, cds[i], - getPackageOutputDir(outputdir, cds[i].containingPackage())); - } - } - - /** - * Convert the Classes in the given Package to an HTML. - * - * @param configuration the configuration. - * @param pd the Package to convert. - * @param outputdir the name of the directory to output to. - */ - public static void convertPackage(ConfigurationImpl configuration, PackageDoc pd, - String outputdir) { - if (pd == null || outputdir == null) { - return; - } - String classOutputdir = getPackageOutputDir(outputdir, pd); - ClassDoc[] cds = pd.allClasses(); - for (int i = 0; i < cds.length; i++) { - convertClass(configuration, cds[i], classOutputdir); - } - } - - /** - * Return the directory write output to for the given package. - * - * @param outputDir the directory to output to. - * @param pd the Package to generate output for. - * @return the package output directory as a String. - */ - private static String getPackageOutputDir(String outputDir, PackageDoc pd) { - return outputDir + File.separator + - DirectoryManager.getDirectoryPath(pd) + File.separator; - } - - /** - * Convert the given Class to an HTML. - * - * @param configuration the configuration. - * @param cd the class to convert. - * @param outputdir the name of the directory to output to. - */ - public static void convertClass(ConfigurationImpl configuration, ClassDoc cd, - String outputdir) { - if (cd == null || outputdir == null) { - return; - } - try { - SourcePosition sp = cd.position(); - if (sp == null) - return; - Reader r; - // temp hack until we can update SourcePosition API. - if (sp instanceof com.sun.tools.javadoc.SourcePositionImpl) { - FileObject fo = ((com.sun.tools.javadoc.SourcePositionImpl) sp).fileObject(); - if (fo == null) - return; - r = fo.openReader(true); - } else { - File file = sp.file(); - if (file == null) - return; - r = new FileReader(file); - } - LineNumberReader reader = new LineNumberReader(r); - int lineno = 1; - String line; - relativePath = DirectoryManager.getRelativePath(DocletConstants.SOURCE_OUTPUT_DIR_NAME) + - DirectoryManager.getRelativePath(cd.containingPackage()); - Content body = getHeader(); - Content pre = new HtmlTree(HtmlTag.PRE); - try { - while ((line = reader.readLine()) != null) { - addLineNo(pre, lineno); - addLine(pre, line, configuration.sourcetab, lineno); - lineno++; - } - } finally { - reader.close(); - } - addBlankLines(pre); - Content div = HtmlTree.DIV(HtmlStyle.sourceContainer, pre); - body.addContent(div); - writeToFile(body, outputdir, cd.name(), configuration); - } catch (Exception e){ - e.printStackTrace(); - } - } - - /** - * Write the output to the file. - * - * @param body the documentation content to be written to the file. - * @param outputDir the directory to output to. - * @param className the name of the class that I am converting to HTML. - * @param configuration the Doclet configuration to pass notices to. - */ - private static void writeToFile(Content body, String outputDir, - String className, ConfigurationImpl configuration) throws IOException { - Content htmlDocType = DocType.Transitional(); - Content head = new HtmlTree(HtmlTag.HEAD); - head.addContent(HtmlTree.TITLE(new StringContent( - configuration.getText("doclet.Window_Source_title")))); - head.addContent(getStyleSheetProperties(configuration)); - Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), - head, body); - Content htmlDocument = new HtmlDocument(htmlDocType, htmlTree); - File dir = new File(outputDir); - dir.mkdirs(); - File newFile = new File(dir, className + ".html"); - configuration.message.notice("doclet.Generating_0", newFile.getPath()); - FileOutputStream fout = new FileOutputStream(newFile); - BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout)); - bw.write(htmlDocument.toString()); - bw.close(); - fout.close(); - } - - /** - * Returns a link to the stylesheet file. - * - * @param configuration the doclet configuration for the current run of javadoc - * @return an HtmlTree for the lINK tag which provides the stylesheet location - */ - public static HtmlTree getStyleSheetProperties(ConfigurationImpl configuration) { - String filename = configuration.stylesheetfile; - if (filename.length() > 0) { - File stylefile = new File(filename); - String parent = stylefile.getParent(); - filename = (parent == null)? - filename: - filename.substring(parent.length() + 1); - } else { - filename = "stylesheet.css"; - } - filename = relativePath + filename; - HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style"); - return link; - } - - /** - * Get the header. - * - * @return the header content for the HTML file - */ - private static Content getHeader() { - return new HtmlTree(HtmlTag.BODY); - } - - /** - * Add the line numbers for the source code. - * - * @param pre the content tree to which the line number will be added - * @param lineno The line number - */ - private static void addLineNo(Content pre, int lineno) { - HtmlTree span = new HtmlTree(HtmlTag.SPAN); - span.addStyle(HtmlStyle.sourceLineNo); - if (lineno < 10) { - span.addContent("00" + Integer.toString(lineno)); - } else if (lineno < 100) { - span.addContent("0" + Integer.toString(lineno)); - } else { - span.addContent(Integer.toString(lineno)); - } - pre.addContent(span); - } - - /** - * Add a line from source to the HTML file that is generated. - * - * @param pre the content tree to which the line will be added. - * @param line the string to format. - * @param tabLength the number of spaces for each tab. - * @param currentLineNo the current number. - */ - private static void addLine(Content pre, String line, int tabLength, - int currentLineNo) { - if (line != null) { - StringBuffer lineBuffer = new StringBuffer(Util.escapeHtmlChars(line)); - Util.replaceTabs(tabLength, lineBuffer); - pre.addContent(new RawHtml(lineBuffer.toString())); - Content anchor = HtmlTree.A_NAME("line." + Integer.toString(currentLineNo)); - pre.addContent(anchor); - pre.addContent(NEW_LINE); - } - } - - /** - * Add trailing blank lines at the end of the page. - * - * @param pre the content tree to which the blank lines will be added. - */ - private static void addBlankLines(Content pre) { - for (int i = 0; i < NUM_BLANK_LINES; i++) { - pre.addContent(NEW_LINE); - } - } - - /** - * Given a <code>Doc</code>, return an anchor name for it. - * - * @param d the <code>Doc</code> to check. - * @return the name of the anchor. - */ - public static String getAnchorName(Doc d) { - return "line." + d.position().line(); - } -}