1/* 2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24import java.util.EnumSet; 25import java.util.List; 26import java.util.Set; 27import javax.lang.model.element.Element; 28 29import jdk.javadoc.doclet.Doclet; 30import jdk.javadoc.doclet.DocletEnvironment; 31import jdk.javadoc.doclet.Taglet; 32import static jdk.javadoc.doclet.Taglet.Location.*; 33 34import com.sun.source.doctree.DocTree; 35 36/** 37 * A taglet to test access to a taglet's context. 38 */ 39public class InfoTaglet implements Taglet { 40 private DocletEnvironment env; 41 private Doclet doclet; 42 43 @Override 44 public void init(DocletEnvironment env, Doclet doclet) { 45 this.env = env; 46 this.doclet = doclet; 47 } 48 49 @Override 50 public Set<Location> getAllowedLocations() { 51 return EnumSet.of(TYPE); 52 } 53 54 @Override 55 public boolean isInlineTag() { 56 return false; 57 } 58 59 @Override 60 public String getName() { 61 return "info"; 62 } 63 64 @Override 65 public String toString(List<? extends DocTree> tags, Element element) { 66 // The content lines below are primarily to help verify the element 67 // and the values passed to init. 68 return "<dt>" 69 +"<span class=\"simpleTagLabel\">Info:</span>\n" 70 + "</dt>" 71 + "<dd>" 72 + "<ul>\n" 73 + "<li>Element: " + element.getKind() + " " + element.getSimpleName() + "\n" 74 + "<li>Element supertypes: " + 75 env.getTypeUtils().directSupertypes(element.asType()) + "\n" 76 + "<li>Doclet: " + doclet.getClass() + "\n" 77 + "</ul>\n" 78 + "</dd>"; 79 } 80} 81 82