|
Java example source code file (DocImpl.java)
The DocImpl.java Java example source code/* * Copyright (c) 1997, 2013, 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.javadoc; import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.text.CollationKey; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.tools.FileObject; import com.sun.javadoc.*; import com.sun.source.util.TreePath; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; import com.sun.tools.javac.util.Position; /** * abstract base class of all Doc classes. Doc item's are representations * of java language constructs (class, package, method,...) which have * comments and have been processed by this run of javadoc. All Doc items * are unique, that is, they are == comparable. * * <p>This is NOT part of any supported API. * If you write code that depends on this, you do so at your own risk. * This code and its internal interfaces are subject to change or * deletion without notice.</b> * * @since 1.2 * @author Robert Field * @author Atul M Dambalkar * @author Neal Gafter (rewrite) */ public abstract class DocImpl implements Doc, Comparable<Object> { /** * Doc environment */ protected final DocEnv env; //### Rename this everywhere to 'docenv' ? /** * Back pointer to the tree node for this doc item. * May be null if there is no associated tree. */ protected TreePath treePath; /** * The complex comment object, lazily initialized. */ private Comment comment; /** * The cached sort key, to take care of Natural Language Text sorting. */ private CollationKey collationkey = null; /** * Raw documentation string. */ protected String documentation; // Accessed in PackageDocImpl, RootDocImpl /** * Cached first sentence. */ private Tag[] firstSentence; /** * Cached inline tags. */ private Tag[] inlineTags; /** * Constructor. */ DocImpl(DocEnv env, TreePath treePath) { this.treePath = treePath; this.documentation = getCommentText(treePath); this.env = env; } private static String getCommentText(TreePath p) { if (p == null) return null; JCCompilationUnit topLevel = (JCCompilationUnit) p.getCompilationUnit(); JCTree tree = (JCTree) p.getLeaf(); return topLevel.docComments.getCommentText(tree); } /** * So subclasses have the option to do lazy initialization of * "documentation" string. */ protected String documentation() { if (documentation == null) documentation = ""; return documentation; } /** * For lazy initialization of comment. */ Comment comment() { if (comment == null) { String d = documentation(); if (env.doclint != null && treePath != null && d.equals(getCommentText(treePath))) { env.doclint.scan(treePath); } comment = new Comment(this, d); } return comment; } /** * Return the text of the comment for this doc item. * TagImpls have been removed. */ public String commentText() { return comment().commentText(); } /** * Return all tags in this Doc item. * * @return an array of TagImpl containing all tags on this Doc item. */ public Tag[] tags() { return comment().tags(); } /** * Return tags of the specified kind in this Doc item. * * @param tagname name of the tag kind to search for. * @return an array of TagImpl containing all tags whose 'kind()' * matches 'tagname'. */ public Tag[] tags(String tagname) { return comment().tags(tagname); } /** * Return the see also tags in this Doc item. * * @return an array of SeeTag containing all @see tags. */ public SeeTag[] seeTags() { return comment().seeTags(); } public Tag[] inlineTags() { if (inlineTags == null) { inlineTags = Comment.getInlineTags(this, commentText()); } return inlineTags; } public Tag[] firstSentenceTags() { if (firstSentence == null) { //Parse all sentences first to avoid duplicate warnings. inlineTags(); try { env.setSilent(true); firstSentence = Comment.firstSentenceTags(this, commentText()); } finally { env.setSilent(false); } } return firstSentence; } /** * Utility for subclasses which read HTML documentation files. */ String readHTMLDocumentation(InputStream input, FileObject filename) throws IOException { byte[] filecontents = new byte[input.available()]; try { DataInputStream dataIn = new DataInputStream(input); dataIn.readFully(filecontents); } finally { input.close(); } String encoding = env.getEncoding(); String rawDoc = (encoding!=null) ? new String(filecontents, encoding) : new String(filecontents); Pattern bodyPat = Pattern.compile("(?is).*<body\\b[^>]*>(.*) |
Here is a short list of links related to this Java DocImpl.java source code file:
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.