diff -r 024ed9c9ed13 -r 83c19f00452c langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DocTreeMaker.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DocTreeMaker.java Sun Aug 17 15:52:32 2014 +0100 @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2011, 2012, 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.javac.tree; + +import com.sun.source.doctree.AttributeTree.ValueKind; +import com.sun.source.doctree.DocTree.Kind; + +import com.sun.tools.javac.parser.Tokens.Comment; +import com.sun.tools.javac.tree.DCTree.*; +import com.sun.tools.javac.util.Context; +import com.sun.tools.javac.util.DiagnosticSource; +import com.sun.tools.javac.util.JCDiagnostic; +import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; +import com.sun.tools.javac.util.List; +import com.sun.tools.javac.util.Name; +import com.sun.tools.javac.util.Position; + +/** + * + *

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. + */ +public class DocTreeMaker { + + /** The context key for the tree factory. */ + protected static final Context.Key treeMakerKey = new Context.Key<>(); + + /** Get the TreeMaker instance. */ + public static DocTreeMaker instance(Context context) { + DocTreeMaker instance = context.get(treeMakerKey); + if (instance == null) + instance = new DocTreeMaker(context); + return instance; + } + + /** The position at which subsequent trees will be created. + */ + public int pos = Position.NOPOS; + + /** Access to diag factory for ErroneousTrees. */ + private final JCDiagnostic.Factory diags; + + /** Create a tree maker with NOPOS as initial position. + */ + protected DocTreeMaker(Context context) { + context.put(treeMakerKey, this); + diags = JCDiagnostic.Factory.instance(context); + this.pos = Position.NOPOS; + } + + /** Reassign current position. + */ + public DocTreeMaker at(int pos) { + this.pos = pos; + return this; + } + + /** Reassign current position. + */ + public DocTreeMaker at(DiagnosticPosition pos) { + this.pos = (pos == null ? Position.NOPOS : pos.getStartPosition()); + return this; + } + + public DCAttribute Attribute(Name name, ValueKind vkind, List value) { + DCAttribute tree = new DCAttribute(name, vkind, value); + tree.pos = pos; + return tree; + } + + public DCAuthor Author(List name) { + DCAuthor tree = new DCAuthor(name); + tree.pos = pos; + return tree; + } + + public DCLiteral Code(DCText text) { + DCLiteral tree = new DCLiteral(Kind.CODE, text); + tree.pos = pos; + return tree; + } + + public DCComment Comment(String text) { + DCComment tree = new DCComment(text); + tree.pos = pos; + return tree; + } + + public DCDeprecated Deprecated(List text) { + DCDeprecated tree = new DCDeprecated(text); + tree.pos = pos; + return tree; + } + + public DCDocComment DocComment(Comment comment, List firstSentence, List body, List tags) { + DCDocComment tree = new DCDocComment(comment, firstSentence, body, tags); + tree.pos = pos; + return tree; + } + + public DCDocRoot DocRoot() { + DCDocRoot tree = new DCDocRoot(); + tree.pos = pos; + return tree; + } + + public DCEndElement EndElement(Name name) { + DCEndElement tree = new DCEndElement(name); + tree.pos = pos; + return tree; + } + + public DCEntity Entity(Name name) { + DCEntity tree = new DCEntity(name); + tree.pos = pos; + return tree; + } + + public DCErroneous Erroneous(String text, DiagnosticSource diagSource, String code, Object... args) { + DCErroneous tree = new DCErroneous(text, diags, diagSource, code, args); + tree.pos = pos; + return tree; + } + + public DCThrows Exception(DCReference name, List description) { + DCThrows tree = new DCThrows(Kind.EXCEPTION, name, description); + tree.pos = pos; + return tree; + } + + public DCIdentifier Identifier(Name name) { + DCIdentifier tree = new DCIdentifier(name); + tree.pos = pos; + return tree; + } + + public DCInheritDoc InheritDoc() { + DCInheritDoc tree = new DCInheritDoc(); + tree.pos = pos; + return tree; + } + + public DCLink Link(DCReference ref, List label) { + DCLink tree = new DCLink(Kind.LINK, ref, label); + tree.pos = pos; + return tree; + } + + public DCLink LinkPlain(DCReference ref, List label) { + DCLink tree = new DCLink(Kind.LINK_PLAIN, ref, label); + tree.pos = pos; + return tree; + } + + public DCLiteral Literal(DCText text) { + DCLiteral tree = new DCLiteral(Kind.LITERAL, text); + tree.pos = pos; + return tree; + } + + public DCParam Param(boolean isTypeParameter, DCIdentifier name, List description) { + DCParam tree = new DCParam(isTypeParameter, name, description); + tree.pos = pos; + return tree; + } + + public DCReference Reference(String signature, + JCTree qualExpr, Name member, List paramTypes) { + DCReference tree = new DCReference(signature, qualExpr, member, paramTypes); + tree.pos = pos; + return tree; + } + + public DCReturn Return(List description) { + DCReturn tree = new DCReturn(description); + tree.pos = pos; + return tree; + } + + public DCSee See(List reference) { + DCSee tree = new DCSee(reference); + tree.pos = pos; + return tree; + } + + public DCSerial Serial(List description) { + DCSerial tree = new DCSerial(description); + tree.pos = pos; + return tree; + } + + public DCSerialData SerialData(List description) { + DCSerialData tree = new DCSerialData(description); + tree.pos = pos; + return tree; + } + + public DCSerialField SerialField(DCIdentifier name, DCReference type, List description) { + DCSerialField tree = new DCSerialField(name, type, description); + tree.pos = pos; + return tree; + } + + public DCSince Since(List text) { + DCSince tree = new DCSince(text); + tree.pos = pos; + return tree; + } + + public DCStartElement StartElement(Name name, List attrs, boolean selfClosing) { + DCStartElement tree = new DCStartElement(name, attrs, selfClosing); + tree.pos = pos; + return tree; + } + + public DCText Text(String text) { + DCText tree = new DCText(text); + tree.pos = pos; + return tree; + } + + public DCThrows Throws(DCReference name, List description) { + DCThrows tree = new DCThrows(Kind.THROWS, name, description); + tree.pos = pos; + return tree; + } + + public DCUnknownBlockTag UnknownBlockTag(Name name, List content) { + DCUnknownBlockTag tree = new DCUnknownBlockTag(name, content); + tree.pos = pos; + return tree; + } + + public DCUnknownInlineTag UnknownInlineTag(Name name, List content) { + DCUnknownInlineTag tree = new DCUnknownInlineTag(name, content); + tree.pos = pos; + return tree; + } + + public DCValue Value(DCReference ref) { + DCValue tree = new DCValue(ref); + tree.pos = pos; + return tree; + } + + public DCVersion Version(List text) { + DCVersion tree = new DCVersion(text); + tree.pos = pos; + return tree; + } +}