Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/langtools/jdk/javadoc/doclet/testBaseClass/BaseClass.java
40971 views
1
/*
2
* Copyright (c) 1999, 2019, 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
24
/**
25
* Regression test for:
26
* Javadoc does not process base class. If user specifies few classes on the
27
* command line and few packages, with a situation where one of the specified
28
* classes(on the command line) extends a class from one of the packages, then
29
* due to some anomaly in ordering in which all the class and package objects
30
* get constructed, few classes were getting marked as "not included", even
31
* thought they were included in this run and hence documentation for those
32
* packages was wrong. The test case for which javadoc was failing is given
33
* in bug# 4197513.
34
*
35
* @bug 4197513
36
* @summary Javadoc does not process base class.
37
* @build BaseClass.java
38
*/
39
40
import java.util.Collections;
41
import java.util.LinkedHashSet;
42
import java.util.List;
43
import java.util.Locale;
44
import java.util.Set;
45
import java.util.stream.Collectors;
46
47
import javax.lang.model.SourceVersion;
48
49
import javax.lang.model.element.Element;
50
import javax.lang.model.element.ElementKind;
51
import javax.lang.model.element.TypeElement;
52
import javax.lang.model.util.ElementFilter;
53
import javax.lang.model.util.Elements;
54
55
import jdk.javadoc.doclet.*;
56
57
public class BaseClass implements Doclet {
58
59
public boolean run(DocletEnvironment root) {
60
Elements elementUtils = root.getElementUtils();
61
TypeElement klass = elementUtils.getTypeElement("baz.Foo");
62
if (!root.isIncluded(klass)) {
63
throw new AssertionError("Base class is not included: baz.Foo");
64
}
65
66
for (TypeElement te : ElementFilter.typesIn(root.getSpecifiedElements())) {
67
if (te.getKind() == ElementKind.CLASS &&
68
te.getSimpleName().contentEquals("Bar")) {
69
klass = te;
70
}
71
}
72
if (klass == null) {
73
throw new AssertionError("class Bar not found");
74
}
75
List<? extends Element> members = klass.getEnclosedElements();
76
77
78
boolean foundPublic = false;
79
boolean foundProtected = false;
80
81
boolean foundPackagePrivate = false;
82
boolean foundPrivate = false;
83
84
List<Element> included = members.stream()
85
.filter(cls -> root.isIncluded(cls))
86
.collect(Collectors.toList());
87
88
for (Element e : included) {
89
System.out.println("element: " + e);
90
if (e.getSimpleName().toString().equals("aPublicMethod")) {
91
foundPublic = true;
92
}
93
if (e.getSimpleName().toString().equals("aProtectedMethod")) {
94
foundProtected = true;
95
}
96
if (e.getSimpleName().toString().equals("aPackagePrivateMethod")) {
97
foundPackagePrivate = true;
98
}
99
if (e.getSimpleName().toString().equals("aPackagePrivateMethod")) {
100
foundPrivate = true;
101
}
102
}
103
if (!foundPublic || !foundProtected) {
104
throw new AssertionError("selected methods not found");
105
}
106
107
if (foundPrivate || foundPackagePrivate) {
108
throw new AssertionError("unselected methods found");
109
}
110
111
return true;
112
}
113
114
public Set<Doclet.Option> getSupportedOptions() {
115
return Collections.emptySet();
116
}
117
118
public void init(Locale locale, Reporter reporter) {
119
return;
120
}
121
122
@Override
123
public String getName() {
124
return "BaseClass";
125
}
126
127
@Override
128
public SourceVersion getSupportedSourceVersion() {
129
return SourceVersion.latest();
130
}
131
}
132
133