--- a/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApi.java Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApi.java Thu Feb 23 05:40:53 2017 -0800
@@ -20,42 +20,135 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-
package sampleapi;
-import java.io.File;
-import java.io.FilenameFilter;
+import com.sun.source.util.JavacTask;
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.util.Context;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import static java.util.stream.Collectors.toList;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import sampleapi.generator.ModuleGenerator;
import sampleapi.generator.PackageGenerator;
public class SampleApi {
- PackageGenerator pkgGen = new PackageGenerator();
+ private final Context ctx;
+ private final List<ModuleGenerator> modules = new ArrayList<>();
+
+ public SampleApi() {
+ JavacTool jt = JavacTool.create();
+ JavacTask task = jt.getTask(null, null, null, null, null, null);
+ ctx = ((JavacTaskImpl) task).getContext();
+ }
- public void generate(File resDir, File outDir) throws Fault {
- FilenameFilter filter = (dir, name) -> { return name.endsWith(".xml"); };
- File[] resFiles = resDir.listFiles(filter);
- for (File resFile : resFiles) {
- pkgGen.processDataSet(resFile);
- pkgGen.generate(outDir);
- }
+ public static SampleApi load(Path resDir)
+ throws ParserConfigurationException, IOException, SAXException {
+ SampleApi result = new SampleApi();
+ System.out.println("Loading resources from " + resDir);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Files.list(resDir)
+ .peek(f -> System.out.println(f.getFileName()))
+ .filter(f -> f.getFileName().toString().endsWith(".xml"))
+ .peek(f -> System.out.println(f.getFileName()))
+ .forEach(resFile -> {
+ try (InputStream is = Files.newInputStream(resFile)) {
+ Document document = builder.parse(is);
+ NodeList moduleElements = document.getElementsByTagName("module");
+ for (int i = 0; i < moduleElements.getLength(); i++) {
+ result.modules.add(ModuleGenerator
+ .load((Element) moduleElements.item(i)));
+ }
+ } catch (IOException ex) {
+ throw new UncheckedIOException(ex);
+ } catch (SAXException ex) {
+ throw new RuntimeException(ex);
+ }
+ });
+ return result;
+ }
+
+ public Context getContext() {
+ return ctx;
+ }
+
+ public List<ModuleGenerator> getModules() {
+ return modules;
}
- public void generate(Path res, Path dir) throws Fault {
- generate(res.toFile(), dir.toFile());
+
+ public void generate(Path outDir) {
+ //resolveIDs(modules);
+ modules.forEach(m -> {
+ try {
+ m.generate(outDir, this);
+ } catch (IOException ex) {
+ throw new UncheckedIOException(ex);
+ }
+ });
}
- public void generate(String res, String dir) throws Fault {
- generate(new File(res), new File(dir));
+ public void generate(String dir)
+ throws ParserConfigurationException, IOException, SAXException {
+ generate(Paths.get(dir));
+ }
+
+ public ModuleGenerator moduleById(String id) {
+ String real_id = getId(id);
+ return modules.stream()
+ .filter(m -> m.id.equals(real_id))
+ .findAny().orElseThrow(() -> new IllegalStateException("No module with id: " + real_id));
}
- public static class Fault extends Exception {
- public Fault(String msg) {
- super(msg);
+ public PackageGenerator packageById(String id) {
+ String real_id = getId(id);
+ return modules.stream()
+ .flatMap(m -> m.packages.stream())
+ .filter(p -> p.id.equals(real_id)).findAny()
+ .orElseThrow(() -> new IllegalStateException("No package with id: " + real_id));
+ }
+
+ public String classById(String id) {
+ String real_id = getId(id);
+ return modules.stream()
+ .flatMap(m -> m.packages.stream())
+ .peek(p -> System.out.println(p.packageName + " " + p.idBases.size()))
+ .flatMap(p -> p.idBases.entrySet().stream()
+ .filter(e -> e.getKey().equals(real_id))
+ .map(e -> p.packageName + "." + e.getValue().name.toString())
+ .peek(System.out::println))
+ .findAny().orElseThrow(() -> new IllegalStateException("No class with id: " + id));
+ }
+
+ public boolean isId(String name) {
+ return name.startsWith("$");
+ }
+
+ public boolean isIdEqual(String name, String id) {
+ return isId(name) && getId(name).equals(id);
+ }
+
+ public String getId(String name) {
+ if(!isId(name)) {
+ throw new IllegalStateException("Not an id: " + name);
}
- public Fault(String msg, Throwable th) {
- super(msg, th);
- }
+ return name.substring(1);
}
}
--- a/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApiDefaultRunner.java Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApiDefaultRunner.java Thu Feb 23 05:40:53 2017 -0800
@@ -23,9 +23,9 @@
package sampleapi;
-import java.io.File;
-
-import sampleapi.SampleApi.Fault;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
public class SampleApiDefaultRunner {
@@ -132,12 +132,12 @@
return 1;
}
- File resDir = new File(resDirName);
- File outDir = new File(outDirName);
- outDir.mkdirs();
+ Path resDir = Paths.get(resDirName);
+ Path outDir = Paths.get(outDirName);
+ Files.createDirectories(outDir);
SampleApi apiGen = new SampleApi();
- apiGen.generate(resDir, outDir);
+ apiGen.load(resDir).generate(outDir);
return 0;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/ModuleGenerator.java Thu Feb 23 05:40:53 2017 -0800
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2016, 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.
+ *
+ * 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 sampleapi.generator;
+
+import com.sun.source.tree.ModuleTree.ModuleKind;
+import com.sun.tools.javac.code.Symbol;
+import com.sun.tools.javac.parser.Scanner;
+import com.sun.tools.javac.parser.ScannerFactory;
+import com.sun.tools.javac.parser.Tokens;
+import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCDirective;
+import com.sun.tools.javac.tree.JCTree.JCExpression;
+import com.sun.tools.javac.tree.TreeMaker;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Names;
+import com.sun.tools.javac.util.ListBuffer;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.ArrayList;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import sampleapi.SampleApi;
+import sampleapi.util.PoorDocCommentTable;
+
+import static com.sun.tools.javac.parser.Tokens.Comment.CommentStyle.JAVADOC;
+
+/**
+ *
+ * This class is responsible for loading module description from an XML and then generating the
+ * <code>module-info.java</code>. It is using {@link PackageGenerator} class for parsing content of the module.
+ */
+public class ModuleGenerator {
+
+ private static final String UNNAMED = "UNNAMED";
+ private static final String MODULE_INFO = "module-info.java";
+
+ public String name;
+ public String id;
+ public ModuleKind kind;
+ public final List<Exports> exportss = new ArrayList<>();
+ public final List<Opens> openss = new ArrayList<>();
+ public final List<Requires> requiress = new ArrayList<>();
+ public final List<Uses> usess = new ArrayList<>();
+ public final List<Provides> providess = new ArrayList<>();
+ public final List<PackageGenerator> packages = new ArrayList<>();
+
+ private ModuleGenerator() {
+ }
+
+ public static ModuleGenerator load(Element rootElement) {
+ ModuleGenerator result = new ModuleGenerator();
+ result.name = rootElement.getAttribute("name");
+ result.id = rootElement.getAttribute("id");
+ String kind = rootElement.getAttribute("kind");
+ result.kind = kind.isEmpty() ? ModuleKind.STRONG :
+ ModuleKind.valueOf(kind.toUpperCase());
+ //exports
+ NodeList exportsList = rootElement.getElementsByTagName("exports");
+ for (int i = 0; i < exportsList.getLength(); i++) {
+ Element exportsEl = (Element) exportsList.item(i);
+ Exports exports = new Exports(exportsEl.getAttribute("package"));
+ NodeList toList = exportsEl.getElementsByTagName("to");
+ for (int j = 0; j < toList.getLength(); j++) {
+ Element toElement = (Element) toList.item(j);
+ exports.modules.add(toElement.getAttribute("module"));
+ }
+ result.exportss.add(exports);
+ }
+ //opens
+ NodeList opensList = rootElement.getElementsByTagName("opens");
+ for (int i = 0; i < opensList.getLength(); i++) {
+ Element opensEl = (Element) opensList.item(i);
+ Opens opens = new Opens(opensEl.getAttribute("package"));
+ NodeList toList = opensEl.getElementsByTagName("to");
+ for (int j = 0; j < toList.getLength(); j++) {
+ Element toElement = (Element) toList.item(j);
+ opens.modules.add(toElement.getAttribute("module"));
+ }
+ result.openss.add(opens);
+ }
+ //requires
+ NodeList requiresList = rootElement.getElementsByTagName("requires");
+ for (int i = 0; i < requiresList.getLength(); i++) {
+ Element requiresEl = (Element) requiresList.item(i);
+ result.requiress.add(new Requires(requiresEl.getAttribute("module"),
+ Boolean.parseBoolean(requiresEl.getAttribute("transitive")),
+ Boolean.parseBoolean(requiresEl.getAttribute("static"))));
+ }
+ //uses
+ NodeList usesList = rootElement.getElementsByTagName("uses");
+ for (int i = 0; i < usesList.getLength(); i++) {
+ Element usesEl = (Element) usesList.item(i);
+ result.usess.add(new Uses(usesEl.getAttribute("service")));
+ }
+ //provides
+ NodeList providesList = rootElement.getElementsByTagName("provides");
+ for (int i = 0; i < providesList.getLength(); i++) {
+ Element providesEl = (Element) providesList.item(i);
+ Provides provides = new Provides(providesEl.getAttribute("service"));
+ NodeList implList = providesEl.getElementsByTagName("implementation");
+ for (int j = 0; j < implList.getLength(); j++) {
+ Element implElement = (Element) implList.item(j);
+ provides.implementations.add(implElement.getAttribute("class"));
+ }
+ result.providess.add(provides);
+ }
+ //packages
+ NodeList packagesList = rootElement.getElementsByTagName("package");
+ for (int i = 0; i < packagesList.getLength(); i++) {
+ result.packages.add(PackageGenerator
+ .processDataSet((Element) packagesList.item(i)));
+ }
+ return result;
+ }
+
+ public void generate(Path outDir, SampleApi api) throws IOException {
+ Files.createDirectories(outDir);
+ Path moduleSourceDir;
+ if (!name.equals(UNNAMED)) {
+ moduleSourceDir = outDir.resolve(name);
+ Files.createDirectory(moduleSourceDir);
+ generateModuleInfo(moduleSourceDir, api);
+ } else {
+ moduleSourceDir = outDir;
+ }
+ packages.forEach(pkg -> pkg.generate(moduleSourceDir));
+ }
+
+ private void generateModuleInfo(Path moduleSourceDir, SampleApi api) throws IOException {
+ TreeMaker make = TreeMaker.instance(api.getContext());
+ Names names = Names.instance(api.getContext());
+ JCTree.JCExpression modQual = make.QualIdent(
+ new Symbol.ModuleSymbol(names.fromString(name), null));
+ ListBuffer<JCDirective> exportsBuffer = new ListBuffer<>();
+ exportss.forEach(e -> {
+ ListBuffer<JCExpression> modulesBuffer = new ListBuffer<>();
+ e.modules.stream()
+ .map(m -> api.isId(m) ? api.moduleById(m).name : m)
+ .forEach(m -> {
+ modulesBuffer.add(make.Ident(
+ names.fromString(m)));
+ });
+ exportsBuffer.add(make.Exports(
+ make.Ident(names.fromString(api.isId(e.pkg) ?
+ api.packageById(e.pkg).packageName : e.pkg)),
+ (modulesBuffer.size() > 0) ? modulesBuffer.toList() : null));
+ });
+ openss.forEach(o -> {
+ ListBuffer<JCExpression> modulesBuffer = new ListBuffer<>();
+ o.modules.stream()
+ .map(m -> api.isId(m) ? api.moduleById(m).name : m)
+ .forEach(m -> {
+ modulesBuffer.add(make.Ident(
+ names.fromString(m)));
+ });
+ exportsBuffer.add(make.Opens(
+ make.Ident(names.fromString(api.isId(o.pkg) ?
+ api.packageById(o.pkg).packageName : o.pkg)),
+ (modulesBuffer.size() > 0) ? modulesBuffer.toList() : null));
+ });
+ ListBuffer<JCDirective> requiresBuffer = new ListBuffer<>();
+ requiress.forEach(r -> requiresBuffer.add(make.Requires(
+ r.transitive, r.statc,
+ make.Ident(names.fromString(api.isId(r.module)
+ ? api.moduleById(r.module).name : r.module)))));
+ ListBuffer<JCDirective> usesBuffer = new ListBuffer<>();
+ usess.forEach(u -> usesBuffer
+ .add(make.Uses(make.Ident(names.fromString(api.isId(u.service)
+ ? api.classById(u.service) : u.service)))));
+ ListBuffer<JCDirective> providesBuffer = new ListBuffer<>();
+ providess.forEach(p -> {
+ ListBuffer<JCExpression> implementationsBuffer = new ListBuffer<>();
+ p.implementations.stream()
+ .map(c -> api.isId(c) ? api.classById(c) : c)
+ .forEach(i -> {
+ implementationsBuffer.add(make.Ident(names.fromString(i)));
+ });
+ providesBuffer.add(make.Provides(
+ make.Ident(names.fromString(api.isId(p.service) ?
+ api.classById(p.service) : p.service)),
+ implementationsBuffer.toList()));
+ });
+ ListBuffer<JCDirective> fullList = new ListBuffer<>();
+ fullList.addAll(exportsBuffer.toList());
+ fullList.addAll(requiresBuffer.toList());
+ fullList.addAll(usesBuffer.toList());
+ fullList.addAll(providesBuffer.toList());
+ JCTree.JCModuleDecl mod = make.ModuleDef(
+ make.Modifiers(0), //TODO how to support this?
+ kind, modQual, fullList.toList());
+ ListBuffer<JCTree> top = new ListBuffer<>();
+ top.add(mod);
+ JCTree.JCCompilationUnit compilationUnit = make.TopLevel(top.toList());
+ try (OutputStream module_info = Files.newOutputStream(moduleSourceDir.resolve(MODULE_INFO))) {
+ module_info.write(compilationUnit.toString().getBytes());
+ }
+ }
+
+
+ public static class Requires {
+ public String module;
+ public boolean transitive;
+ public boolean statc;
+
+ private Requires(String module, boolean transitive, boolean statc) {
+ this.module = module;
+ this.transitive = transitive;
+ this.statc = this.statc;
+ }
+ }
+
+ public static class Exports {
+ public final String pkg;
+ public final List<String> modules = new ArrayList<>();
+
+ private Exports(String pkg) {
+ this.pkg = pkg;
+ }
+ }
+
+ public static class Opens {
+ public final String pkg;
+ public final List<String> modules = new ArrayList<>();
+
+ private Opens(String pkg) {
+ this.pkg = pkg;
+ }
+ }
+
+ public static class Uses {
+ public final String service;
+
+ private Uses(String service) {
+ this.service = service;
+ }
+ }
+
+ public static class Provides {
+ public final String service;
+ public final List<String> implementations = new ArrayList<>();
+
+ private Provides(String service) {
+ this.service = service;
+ }
+ }
+}
--- a/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/PackageGenerator.java Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/PackageGenerator.java Thu Feb 23 05:40:53 2017 -0800
@@ -25,17 +25,11 @@
import java.io.File;
import java.io.FileWriter;
-import java.io.InputStream;
-import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-import org.xml.sax.SAXException;
-import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -56,18 +50,19 @@
import com.sun.tools.javac.code.TypeTag;
import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.code.Symtab;
+import java.nio.file.Path;
import sampleapi.util.*;
-import sampleapi.SampleApi.Fault;
public class PackageGenerator {
- String packageName;
+ public String packageName;
String packageDirName;
+ public String id;
ArrayList<JCCompilationUnit> topLevels;
Map<String, Integer> nameIndex;
- Map<String, JCClassDecl> idBases;
+ public Map<String, JCClassDecl> idBases;
Map<String, JCAnnotation> idAnnos;
TreeMaker make;
@@ -92,48 +87,43 @@
boolean isDataSetProcessed = false;
- public void processDataSet(File dsFile) throws Fault {
- isDataSetProcessed = true;
- topLevels = new ArrayList<>();
- nameIndex = new HashMap<>();
- idBases = new HashMap<>();
- idAnnos = new HashMap<>();
- fx = false;
+ public static PackageGenerator processDataSet(Element rootElement) {
+ PackageGenerator result = new PackageGenerator();
+ result.isDataSetProcessed = true;
+ result.topLevels = new ArrayList<>();
+ result.nameIndex = new HashMap<>();
+ result.idBases = new HashMap<>();
+ result.idAnnos = new HashMap<>();
+ result.fx = false;
+
+ if (!rootElement.getTagName().equals("package")) {
+ throw new IllegalStateException("Unexpected tag name: "
+ + rootElement.getTagName());
+ }
+ result.packageName = rootElement.getAttribute("name");
+ result.id = rootElement.getAttribute("id");
+ result.fx = "fx".equals(rootElement.getAttribute("style"));
+ result.packageDirName = result.packageName.replace('.', '/');
+
+ // process nodes (toplevels)
+ NodeList nodeList = rootElement.getChildNodes();
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node node = nodeList.item(i);
+
+ if (!(node instanceof Element)) {
+ continue;
+ }
+ result.processTopLevel((Element) node);
+ }
+ return result;
+ }
+
+ public void generate(Path outDir) {
+ if (!isDataSetProcessed)
+ throw new RuntimeException("No Data Set processed");
try {
- InputStream is = new FileInputStream(dsFile);
-
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document document = builder.parse(is);
-
- Element rootElement = document.getDocumentElement();
- if (!rootElement.getTagName().equals("package"))
- throw new IllegalStateException("Unexpected tag name: "
- + rootElement.getTagName());
- packageName = rootElement.getAttribute("name");
- fx = "fx".equals(rootElement.getAttribute("style"));
- packageDirName = packageName.replace('.', '/');
-
- // process nodes (toplevels)
- NodeList nodeList = rootElement.getChildNodes();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node node = nodeList.item(i);
-
- if (!(node instanceof Element))
- continue;
- processTopLevel((Element) node);
- }
- } catch (ParserConfigurationException | SAXException | IOException e) {
- throw new Fault("Error parsing dataset " + dsFile, e);
- }
- }
-
- public void generate(File outDir) throws Fault {
- if (!isDataSetProcessed)
- throw new Fault("No Data Set processed");
-
- try {
- File pkgDir = new File(outDir, packageDirName);
+ File pkgDir = new File(outDir.toFile(), packageDirName);
pkgDir.mkdirs();
for (JCCompilationUnit decl : topLevels) {
@@ -168,7 +158,7 @@
writer.flush();
writer.close();
} catch (IOException e) {
- throw new Fault("Error writing output");
+ throw new RuntimeException("Error writing output");
}
}
@@ -211,6 +201,7 @@
String baseName = baseTag.getAttribute("basename");
String typeParam = baseTag.getAttribute("tparam");
String baseId = baseTag.getAttribute("id");
+ System.out.println("Found class id: " + baseId);
long kindFlag = 0;
switch (kind) {
--- a/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/util/SimpleMultiplier.java Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/lib/sampleapi/util/SimpleMultiplier.java Thu Feb 23 05:40:53 2017 -0800
@@ -72,8 +72,8 @@
}
public void initIterator() {
+ size = 1;
if (!valueSpace.isEmpty()) {
- size = 1;
for (int i = 0; i < valueSpace.size(); i++)
size *= valueSpace.get(i).size();
}
--- a/langtools/test/jdk/javadoc/tool/sampleapi/res/fx.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/res/fx.xml Thu Feb 23 05:40:53 2017 -0800
@@ -21,25 +21,27 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.fx" style="fx">
-
- <class basename="FXClass">
- <modifier>public</modifier>
- <member>
- <field basename="id">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.fx" style="fx">
+ <class basename="FXClass">
<modifier>public</modifier>
- <type>int|boolean</type>
- </field>
- <method basename="setProp">
- <modifier>public|protected|private</modifier>
- <param>int|String</param>
- <type>void</type>
- </method>
- <method basename="getProp">
- <modifier>public|protected|private</modifier>
- <type>int|int|String</type>
- </method>
- </member>
- </class>
-
-</package>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </field>
+ <method basename="setProp">
+ <modifier>public|protected|private</modifier>
+ <param>int|String</param>
+ <type>void</type>
+ </method>
+ <method basename="getProp">
+ <modifier>public|protected|private</modifier>
+ <type>int|int|String</type>
+ </method>
+ </member>
+ </class>
+ </package>
+ </module>
+</sampleapi>
--- a/langtools/test/jdk/javadoc/tool/sampleapi/res/simple.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/res/simple.xml Thu Feb 23 05:40:53 2017 -0800
@@ -21,509 +21,512 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.simple">
-
- <class basename="SampleClass" id="baseclass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <member>
- <field basename="field">
- <modifier>none|public</modifier>
- <modifier>none|static</modifier>
- <modifier>none|final</modifier>
- <type>boolean|int|String</type>
- </field>
- <field basename="field">
- <modifier>protected|private</modifier>
- <type>String</type>
- </field>
- <constructor>
- <modifier>public</modifier>
- <param>none|int|int,boolean|int,String</param>
- </constructor>
- <constructor>
- <modifier>public</modifier>
- <param>String</param>
- <throw>NullPointerException</throw>
- <throw>SampleException0</throw>
- </constructor>
- <method basename="set">
- <modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>int|boolean|String</type>
- </method>
- <method basename="doSomething">
- <modifier>public</modifier>
- <type>void|int</type>
- <param>none|int|Object,int</param>
- <throw>NullPointerException</throw>
- <throw>ArithmeticException</throw>
- </method>
- </member>
- </class>
-
- <class basename="Derived">
- <modifier>public</modifier>
- <extend id="baseclass"/>
- <member>
- <field basename="myField">
- <modifier>public</modifier>
- <type>int|boolean</type>
- </field>
- <constructor>
- <modifier>public</modifier>
- <param>none|int|int,boolean|int,String</param>
- </constructor>
- <method basename="myGet">
- <modifier>public</modifier>
- <type>int|boolean</type>
- </method>
- </member>
- </class>
-
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <field basename="specialData">
- <modifier>private|none|public</modifier>
- <type>boolean|int|String</type>
- </field>
- </member>
- </class>
-
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <import>java.io.ObjectStreamField</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <serialfield basename="serialField">String,Long,Boolean</serialfield>
- <method basename="justToBeHere">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.simple">
+ <class basename="SampleClass" id="baseclass">
<modifier>public</modifier>
- <type>String|long|boolean</type>
- </method>
- </member>
- </class>
-
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <import>java.io.ObjectOutputStream</import>
- <import>java.io.ObjectOutput</import>
- <import>java.io.IOException</import>
- <import>java.io.ObjectStreamException</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <method name="writeObject">
- <modifier>private</modifier>
- <param>ObjectOutputStream</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- <method name="writeExternal">
- <modifier>public</modifier>
- <param>ObjectOutput</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- <method name="writeReplace">
- <modifier>protected</modifier>
- <param>none</param>
- <type>Object</type>
- <throw>ObjectStreamException</throw>
- </method>
- <method name="writeSomethingElse">
- <modifier>public</modifier>
- <param>Object</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <member>
+ <field basename="field">
+ <modifier>none|public</modifier>
+ <modifier>none|static</modifier>
+ <modifier>none|final</modifier>
+ <type>boolean|int|String</type>
+ </field>
+ <field basename="field">
+ <modifier>protected|private</modifier>
+ <type>String</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>none|int|int,boolean|int,String</param>
+ </constructor>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ <throw>NullPointerException</throw>
+ <throw>SampleException0</throw>
+ </constructor>
+ <method basename="set">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int|boolean|String</type>
+ </method>
+ <method basename="doSomething">
+ <modifier>public</modifier>
+ <type>void|int</type>
+ <param>none|int|Object,int</param>
+ <throw>NullPointerException</throw>
+ <throw>ArithmeticException</throw>
+ </method>
+ </member>
+ </class>
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <import>java.io.ObjectInputStream</import>
- <import>java.io.ObjectInput</import>
- <import>java.io.IOException</import>
- <import>java.io.ObjectStreamException</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <method name="readObject">
- <modifier>private</modifier>
- <param>ObjectInputStream</param>
- <type>void</type>
- <throw>IOException</throw>
- <throw>ClassNotFoundException</throw>
- </method>
- <method name="readExternal">
+ <class basename="Derived">
<modifier>public</modifier>
- <param>ObjectInput</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- <method name="readResolve">
- <modifier>protected</modifier>
- <param>none</param>
- <type>Object</type>
- <throw>ObjectStreamException</throw>
- </method>
- <method name="readSomethingElse">
+ <extend id="baseclass"/>
+ <member>
+ <field basename="myField">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>none|int|int,boolean|int,String</param>
+ </constructor>
+ <method basename="myGet">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </method>
+ </member>
+ </class>
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
<modifier>public</modifier>
- <param>Object</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- </member>
- </class>
-
- <class basename="Container">
- <modifier>public</modifier>
- <member>
- <class basename="Inner">
- <modifier>public</modifier>
+ <implement ref="Serializable"/>
<member>
- <field basename="value">
- <modifier>public</modifier>
- <type>int</type>
+ <field basename="specialData">
+ <modifier>private|none|public</modifier>
+ <type>boolean|int|String</type>
</field>
</member>
</class>
- <class basename="Nested">
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
+ <import>java.io.ObjectStreamField</import>
+ <modifier>public</modifier>
+ <implement ref="Serializable"/>
+ <member>
+ <serialfield basename="serialField">String,Long,Boolean</serialfield>
+ <method basename="justToBeHere">
+ <modifier>public</modifier>
+ <type>String|long|boolean</type>
+ </method>
+ </member>
+ </class>
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
+ <import>java.io.ObjectOutputStream</import>
+ <import>java.io.ObjectOutput</import>
+ <import>java.io.IOException</import>
+ <import>java.io.ObjectStreamException</import>
<modifier>public</modifier>
- <modifier>static</modifier>
+ <implement ref="Serializable"/>
+ <member>
+ <method name="writeObject">
+ <modifier>private</modifier>
+ <param>ObjectOutputStream</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ <method name="writeExternal">
+ <modifier>public</modifier>
+ <param>ObjectOutput</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ <method name="writeReplace">
+ <modifier>protected</modifier>
+ <param>none</param>
+ <type>Object</type>
+ <throw>ObjectStreamException</throw>
+ </method>
+ <method name="writeSomethingElse">
+ <modifier>public</modifier>
+ <param>Object</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ </member>
</class>
- <interface basename="EventListener">
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
+ <import>java.io.ObjectInputStream</import>
+ <import>java.io.ObjectInput</import>
+ <import>java.io.IOException</import>
+ <import>java.io.ObjectStreamException</import>
<modifier>public</modifier>
- <modifier>static</modifier>
+ <implement ref="Serializable"/>
+ <member>
+ <method name="readObject">
+ <modifier>private</modifier>
+ <param>ObjectInputStream</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ <throw>ClassNotFoundException</throw>
+ </method>
+ <method name="readExternal">
+ <modifier>public</modifier>
+ <param>ObjectInput</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ <method name="readResolve">
+ <modifier>protected</modifier>
+ <param>none</param>
+ <type>Object</type>
+ <throw>ObjectStreamException</throw>
+ </method>
+ <method name="readSomethingElse">
+ <modifier>public</modifier>
+ <param>Object</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ </member>
+ </class>
+
+ <class basename="Container">
+ <modifier>public</modifier>
<member>
- <method basename="onEvent">
- <modifier>public</modifier>
- <type>void</type>
+ <class basename="Inner">
+ <modifier>public</modifier>
+ <member>
+ <field basename="value">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ </member>
+ </class>
+ <class basename="Nested">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ </class>
+ <interface basename="EventListener">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <member>
+ <method basename="onEvent">
+ <modifier>public</modifier>
+ <type>void</type>
+ </method>
+ </member>
+ </interface>
+ </member>
+ </class>
+
+ <!-- Errors and exceptions -->
+ <class basename="SampleError">
+ <modifier>public</modifier>
+ <extend ref="java.lang.Error"/>
+ <member>
+ <field basename="errorInfo">
+ <modifier>private</modifier>
+ <type>boolean|int|String</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ <method basename="getSampleData">
+ <modifier>public</modifier>
+ <type>int|String</type>
+ </method>
+ </member>
+ </class>
+
+ <class basename="SampleException">
+ <modifier>public</modifier>
+ <extend ref="java.lang.Exception"/>
+ <member>
+ <field basename="exceptionInfo">
+ <modifier>private</modifier>
+ <type>boolean|int|String</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ <method basename="getSampleData">
+ <modifier>public</modifier>
+ <type>int|String</type>
+ </method>
+ </member>
+ </class>
+
+ <interface basename="SampleInterface" id="baseinterface">
+ <modifier>public|none</modifier>
+ <member>
+ <method basename="method">
+ <modifier>public</modifier>
+ <type>void|int|Object</type>
</method>
</member>
</interface>
- </member>
- </class>
-
- <!-- Errors and exceptions -->
- <class basename="SampleError">
- <modifier>public</modifier>
- <extend ref="java.lang.Error"/>
- <member>
- <field basename="errorInfo">
- <modifier>private</modifier>
- <type>boolean|int|String</type>
- </field>
- <constructor>
- <modifier>public</modifier>
- <param>String</param>
- </constructor>
- <method basename="getSampleData">
- <modifier>public</modifier>
- <type>int|String</type>
- </method>
- </member>
- </class>
- <class basename="SampleException">
- <modifier>public</modifier>
- <extend ref="java.lang.Exception"/>
- <member>
- <field basename="exceptionInfo">
- <modifier>private</modifier>
- <type>boolean|int|String</type>
- </field>
- <constructor>
+ <class basename="Implementor">
<modifier>public</modifier>
- <param>String</param>
- </constructor>
- <method basename="getSampleData">
- <modifier>public</modifier>
- <type>int|String</type>
- </method>
- </member>
- </class>
+ <implement id="baseinterface"/>
+ <member>
+ <field basename="myField">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </field>
+ <method basename="myGet">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </method>
+ </member>
+ </class>
- <interface basename="SampleInterface" id="baseinterface">
- <modifier>public|none</modifier>
- <member>
- <method basename="method">
- <modifier>public</modifier>
- <type>void|int|Object</type>
- </method>
- </member>
- </interface>
-
- <class basename="Implementor">
- <modifier>public</modifier>
- <implement id="baseinterface"/>
- <member>
- <field basename="myField">
- <modifier>public</modifier>
- <type>int|boolean</type>
- </field>
- <method basename="myGet">
+ <class basename="GenericClass" tparam="T">
+ <import>java.util.List</import>
<modifier>public</modifier>
- <type>int|boolean</type>
- </method>
- </member>
- </class>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>T</param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>T</type>
+ <param>int</param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>List<T></type>
+ </method>
+ </member>
+ </class>
- <class basename="GenericClass" tparam="T">
- <import>java.util.List</import>
- <modifier>public</modifier>
- <member>
- <method basename="put">
- <modifier>public</modifier>
- <type>void</type>
- <param>T</param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>T</type>
- <param>int</param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>List<T></type>
- </method>
- </member>
- </class>
-
- <class basename="GenericClass" tparam="K,V">
- <import>java.util.Set</import>
- <import>java.util.List</import>
- <import>java.util.Map</import>
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <class basename="GenericClass" tparam="K,V">
+ <import>java.util.Set</import>
+ <import>java.util.List</import>
+ <import>java.util.Map</import>
<modifier>public</modifier>
- <type>void</type>
- <param>K,V</param>
- </method>
- <method basename="putMap">
- <modifier>public</modifier>
- <type>void</type>
- <param>Map<K,V></param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>V</type>
- <param>K</param>
- </method>
- <method basename="getV">
- <modifier>public</modifier>
- <type>Set<V>|List<V></type>
- </method>
- <method basename="getK">
- <modifier>public</modifier>
- <type>Set<K>|List<K></type>
- </method>
- </member>
- </class>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>K,V</param>
+ </method>
+ <method basename="putMap">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>Map<K,V></param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>V</type>
+ <param>K</param>
+ </method>
+ <method basename="getV">
+ <modifier>public</modifier>
+ <type>Set<V>|List<V></type>
+ </method>
+ <method basename="getK">
+ <modifier>public</modifier>
+ <type>Set<K>|List<K></type>
+ </method>
+ </member>
+ </class>
- <class basename="GenericClass" tparam="M,N,O">
- <import>java.util.Set</import>
- <import>java.util.List</import>
- <import>java.util.Map</import>
- <modifier>public</modifier>
- <member>
- <method basename="get">
- <modifier>public</modifier>
- <type>Set<M>|List<M></type>
- <param>Map<N,O></param>
- </method>
- <method basename="get">
+ <class basename="GenericClass" tparam="M,N,O">
+ <import>java.util.Set</import>
+ <import>java.util.List</import>
+ <import>java.util.Map</import>
<modifier>public</modifier>
- <type>Set<N>|List<N></type>
- <param>Map<M,O></param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>Set<O>|List<O></type>
- <param>Map<M,N></param>
- </method>
- </member>
- </class>
+ <member>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Set<M>|List<M></type>
+ <param>Map<N,O></param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Set<N>|List<N></type>
+ <param>Map<M,O></param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Set<O>|List<O></type>
+ <param>Map<M,N></param>
+ </method>
+ </member>
+ </class>
- <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
- <import>java.util.Set</import>
- <import>java.util.List</import>
- <import>java.util.Map</import>
- <import>java.util.function.Supplier</import>
- <modifier>public</modifier>
- <member>
- <method tparam="E" basename="getSomething">
- <modifier>public</modifier>
- <modifier>static</modifier>
- <type>Set<? extends E>|List<? extends E></type>
- </method>
- <method tparam="V,K" basename="getMore">
- <modifier>public|private</modifier>
- <modifier>static</modifier>
- <type>Map<V,K></type>
- </method>
- <method tparam="E" basename="doSomething">
+ <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
+ <import>java.util.Set</import>
+ <import>java.util.List</import>
+ <import>java.util.Map</import>
+ <import>java.util.function.Supplier</import>
<modifier>public</modifier>
- <modifier>static</modifier>
- <type>void</type>
- <param>E</param>
- </method>
- <method tparam="X extends Throwable" basename="orElseThrow">
- <modifier>public|private</modifier>
- <modifier>static</modifier>
- <type>X</type>
- <param>Supplier<? extends X></param>
- <throw>X</throw>
- </method>
- </member>
- </class>
-
- <enum basename="SampleEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="VALUE" count="3"/>
- </member>
- </enum>
-
- <enum basename="SampleEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="VALUE" count="2"/>
- <constant basename="NOVALUE" count="1"/>
- <field basename="field">
- <modifier>private</modifier>
- <type>int|String</type>
- </field>
- <method basename="method">
- <modifier>public</modifier>
- <type>void|String</type>
- </method>
- </member>
- </enum>
+ <member>
+ <method tparam="E" basename="getSomething">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <type>Set<? extends E>|List<? extends E></type>
+ </method>
+ <method tparam="V,K" basename="getMore">
+ <modifier>public|private</modifier>
+ <modifier>static</modifier>
+ <type>Map<V,K></type>
+ </method>
+ <method tparam="E" basename="doSomething">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <type>void</type>
+ <param>E</param>
+ </method>
+ <method tparam="X extends Throwable" basename="orElseThrow">
+ <modifier>public|private</modifier>
+ <modifier>static</modifier>
+ <type>X</type>
+ <param>Supplier<? extends X></param>
+ <throw>X</throw>
+ </method>
+ </member>
+ </class>
- <annodecl id="documented">
- <class>Documented</class>
- </annodecl>
-
- <annodecl id="reten-source">
- <class>Retention</class>
- <arg name="value" value="RetentionPolicy.SOURCE"/>
- </annodecl>
-
- <annodecl id="reten-class">
- <class>Retention</class>
- <arg name="value" value="RetentionPolicy.CLASS"/>
- </annodecl>
+ <enum basename="SampleEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="VALUE" count="3"/>
+ </member>
+ </enum>
+
+ <enum basename="SampleEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="VALUE" count="2"/>
+ <constant basename="NOVALUE" count="1"/>
+ <field basename="field">
+ <modifier>private</modifier>
+ <type>int|String</type>
+ </field>
+ <method basename="method">
+ <modifier>public</modifier>
+ <type>void|String</type>
+ </method>
+ </member>
+ </enum>
- <annodecl id="reten-runtime">
- <class>Retention</class>
- <arg name="value" value="RetentionPolicy.RUNTIME"/>
- </annodecl>
-
- <annodecl id="target-method">
- <class>Target</class>
- <arg value="ElementType.METHOD"/>
- </annodecl>
-
- <annodecl id="target-field">
- <class>Target</class>
- <arg value="ElementType.FIELD"/>
- </annodecl>
-
- <annodecl id="target-type">
- <class>Target</class>
- <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
- </annodecl>
+ <annodecl id="documented">
+ <class>Documented</class>
+ </annodecl>
- <annotation basename="AnnotatedAnno">
- <import>java.lang.annotation.Documented</import>
- <anno>@documented</anno>
- <modifier>public</modifier>
- <member>
- <method basename="value">
- <modifier>public</modifier>
- <type>boolean|String</type>
- </method>
- </member>
- </annotation>
+ <annodecl id="reten-source">
+ <class>Retention</class>
+ <arg name="value" value="RetentionPolicy.SOURCE"/>
+ </annodecl>
+
+ <annodecl id="reten-class">
+ <class>Retention</class>
+ <arg name="value" value="RetentionPolicy.CLASS"/>
+ </annodecl>
+
+ <annodecl id="reten-runtime">
+ <class>Retention</class>
+ <arg name="value" value="RetentionPolicy.RUNTIME"/>
+ </annodecl>
- <annotation basename="AnnotatedAnno">
- <import>java.lang.annotation.Retention</import>
- <import>java.lang.annotation.RetentionPolicy</import>
- <anno>@reten-source|@reten-class|@reten-runtime</anno>
- <modifier>public</modifier>
- <member>
- <method basename="value">
- <modifier>public</modifier>
- <type>int</type>
- </method>
- </member>
- </annotation>
+ <annodecl id="target-method">
+ <class>Target</class>
+ <arg value="ElementType.METHOD"/>
+ </annodecl>
+
+ <annodecl id="target-field">
+ <class>Target</class>
+ <arg value="ElementType.FIELD"/>
+ </annodecl>
- <class basename="AnnoContainer">
- <import>java.lang.annotation.Retention</import>
- <import>java.lang.annotation.RetentionPolicy</import>
- <import>java.lang.annotation.Target</import>
- <import>java.lang.annotation.ElementType</import>
- <modifier>public</modifier>
- <member>
+ <annodecl id="target-type">
+ <class>Target</class>
+ <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
+ </annodecl>
+
<annotation basename="AnnotatedAnno">
- <anno>@reten-source|@reten-class|@reten-runtime</anno>
- <anno>@target-method|@target-field|@target-type</anno>
+ <import>java.lang.annotation.Documented</import>
+ <anno>@documented</anno>
<modifier>public</modifier>
- <modifier>static</modifier>
<member>
<method basename="value">
<modifier>public</modifier>
- <type>String</type>
+ <type>boolean|String</type>
+ </method>
+ </member>
+ </annotation>
+
+ <annotation basename="AnnotatedAnno">
+ <import>java.lang.annotation.Retention</import>
+ <import>java.lang.annotation.RetentionPolicy</import>
+ <anno>@reten-source|@reten-class|@reten-runtime</anno>
+ <modifier>public</modifier>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>int</type>
</method>
</member>
</annotation>
- </member>
- </class>
-
- <annodecl id="deprecated">
- <class>Deprecated</class>
- </annodecl>
- <annodecl id="safevarargs">
- <class>SafeVarargs</class>
- </annodecl>
+ <class basename="AnnoContainer">
+ <import>java.lang.annotation.Retention</import>
+ <import>java.lang.annotation.RetentionPolicy</import>
+ <import>java.lang.annotation.Target</import>
+ <import>java.lang.annotation.ElementType</import>
+ <modifier>public</modifier>
+ <member>
+ <annotation basename="AnnotatedAnno">
+ <anno>@reten-source|@reten-class|@reten-runtime</anno>
+ <anno>@target-method|@target-field|@target-type</anno>
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>String</type>
+ </method>
+ </member>
+ </annotation>
+ </member>
+ </class>
- <annodecl id="suppresswarnings">
- <class>SuppressWarnings</class>
- <arg value="{"unchecked", "rawtypes"}"/>
- </annodecl>
+ <annodecl id="deprecated">
+ <class>Deprecated</class>
+ </annodecl>
+
+ <annodecl id="safevarargs">
+ <class>SafeVarargs</class>
+ </annodecl>
- <class basename="AnnotatedClass">
- <modifier>public</modifier>
- <member>
- <method basename="deprecatedMethod">
- <anno>@deprecated</anno>
- <modifier>public</modifier>
- <type>void</type>
- </method>
- <method basename="safeVarargsMethod">
- <anno>@safevarargs</anno>
+ <annodecl id="suppresswarnings">
+ <class>SuppressWarnings</class>
+ <arg value="{"unchecked", "rawtypes"}"/>
+ </annodecl>
+
+ <class basename="AnnotatedClass">
<modifier>public</modifier>
- <type>void|int</type>
- <param>String...</param>
- </method>
- <method basename="suppressWarningsMethod">
- <anno>@suppresswarnings</anno>
- <modifier>public</modifier>
- <type>void</type>
- <param>int|Object</param>
- </method>
- </member>
- </class>
-</package>
+ <member>
+ <method basename="deprecatedMethod">
+ <anno>@deprecated</anno>
+ <modifier>public</modifier>
+ <type>void</type>
+ </method>
+ <method basename="safeVarargsMethod">
+ <anno>@safevarargs</anno>
+ <modifier>public</modifier>
+ <type>void|int</type>
+ <param>String...</param>
+ </method>
+ <method basename="suppressWarningsMethod">
+ <anno>@suppresswarnings</anno>
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int|Object</param>
+ </method>
+ </member>
+ </class>
+ </package>
+ </module>
+</sampleapi>
--- a/langtools/test/jdk/javadoc/tool/sampleapi/res/sub.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/res/sub.xml Thu Feb 23 05:40:53 2017 -0800
@@ -21,69 +21,72 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.simple.sub">
-
- <class basename="SClass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <implement>SInterface0</implement>
- <member>
- <field basename="id">
- <modifier>public</modifier>
- <type>int</type>
- </field>
- <method basename="get">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.simple.sub">
+ <class basename="SClass">
<modifier>public</modifier>
- <type>int</type>
- <throw>SException0</throw>
- </method>
- <method basename="put">
- <modifier>public</modifier>
- <param>int</param>
- <type>void</type>
- <throw>SException0</throw>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <implement>SInterface0</implement>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int</type>
+ <throw>SException0</throw>
+ </method>
+ <method basename="put">
+ <modifier>public</modifier>
+ <param>int</param>
+ <type>void</type>
+ <throw>SException0</throw>
+ </method>
+ </member>
+ </class>
- <class basename="SException">
- <modifier>public</modifier>
- <extend ref="java.lang.Exception"/>
- <member>
- <constructor>
+ <class basename="SException">
<modifier>public</modifier>
- <param>String</param>
- </constructor>
- </member>
- </class>
+ <extend ref="java.lang.Exception"/>
+ <member>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ </member>
+ </class>
- <interface basename="SInterface">
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <interface basename="SInterface">
<modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- </member>
- </interface>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ </member>
+ </interface>
- <enum basename="SEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="ON" count="1"/>
- <constant basename="OFF" count="1"/>
- </member>
- </enum>
+ <enum basename="SEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="ON" count="1"/>
+ <constant basename="OFF" count="1"/>
+ </member>
+ </enum>
- <annotation basename="SAnno">
- <modifier>public</modifier>
- <member>
- <method basename="value">
+ <annotation basename="SAnno">
<modifier>public</modifier>
- <type>boolean</type>
- </method>
- </member>
- </annotation>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>boolean</type>
+ </method>
+ </member>
+ </annotation>
-</package>
+ </package>
+ </module>
+</sampleapi>
--- a/langtools/test/jdk/javadoc/tool/sampleapi/res/tiny.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/res/tiny.xml Thu Feb 23 05:40:53 2017 -0800
@@ -21,51 +21,53 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.tiny" module="sat.sampleapi">
-
- <class basename="TinyClass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <member>
- <field basename="id">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.tiny" module="sat.sampleapi">
+ <class basename="TinyClass">
<modifier>public</modifier>
- <type>int</type>
- </field>
- <method basename="get">
- <modifier>public</modifier>
- <type>int</type>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int</type>
+ </method>
+ </member>
+ </class>
- <interface basename="TinyInterface">
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <interface basename="TinyInterface">
<modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- </member>
- </interface>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ </member>
+ </interface>
- <enum basename="TinyEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="YES" count="1"/>
- <constant basename="NO" count="1"/>
- <constant basename="MAYBE" count="1"/>
- </member>
- </enum>
+ <enum basename="TinyEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="YES" count="1"/>
+ <constant basename="NO" count="1"/>
+ <constant basename="MAYBE" count="1"/>
+ </member>
+ </enum>
- <annotation basename="TinyAnno">
- <modifier>public</modifier>
- <member>
- <method basename="value">
+ <annotation basename="TinyAnno">
<modifier>public</modifier>
- <type>boolean</type>
- </method>
- </member>
- </annotation>
-
-</package>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>boolean</type>
+ </method>
+ </member>
+ </annotation>
+ </package>
+ </module>
+</sampleapi>
--- a/langtools/test/jdk/javadoc/tool/sampleapi/res/tinysub.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/res/tinysub.xml Thu Feb 23 05:40:53 2017 -0800
@@ -21,69 +21,71 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.tiny.sub" module="sat.sampleapi">
-
- <class basename="TSClass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <implement>TSInterface0</implement>
- <member>
- <field basename="id">
- <modifier>public</modifier>
- <type>int</type>
- </field>
- <method basename="get">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.tiny.sub" module="sat.sampleapi">
+ <class basename="TSClass">
<modifier>public</modifier>
- <type>int</type>
- <throw>TSException0</throw>
- </method>
- <method basename="put">
- <modifier>public</modifier>
- <param>int</param>
- <type>void</type>
- <throw>TSException0</throw>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <implement>TSInterface0</implement>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int</type>
+ <throw>TSException0</throw>
+ </method>
+ <method basename="put">
+ <modifier>public</modifier>
+ <param>int</param>
+ <type>void</type>
+ <throw>TSException0</throw>
+ </method>
+ </member>
+ </class>
- <class basename="TSException">
- <modifier>public</modifier>
- <extend ref="java.lang.Exception"/>
- <member>
- <constructor>
+ <class basename="TSException">
<modifier>public</modifier>
- <param>String</param>
- </constructor>
- </member>
- </class>
+ <extend ref="java.lang.Exception"/>
+ <member>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ </member>
+ </class>
- <interface basename="TSInterface">
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <interface basename="TSInterface">
<modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- </member>
- </interface>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ </member>
+ </interface>
- <enum basename="TSEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="ON" count="1"/>
- <constant basename="OFF" count="1"/>
- </member>
- </enum>
+ <enum basename="TSEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="ON" count="1"/>
+ <constant basename="OFF" count="1"/>
+ </member>
+ </enum>
- <annotation basename="TSAnno">
- <modifier>public</modifier>
- <member>
- <method basename="value">
+ <annotation basename="TSAnno">
<modifier>public</modifier>
- <type>boolean</type>
- </method>
- </member>
- </annotation>
-
-</package>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>boolean</type>
+ </method>
+ </member>
+ </annotation>
+ </package>
+ </module>
+</sampleapi>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/tool/sampleapi/res/transitive.xml Thu Feb 23 05:40:53 2017 -0800
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2016, 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.
+
+ 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.
+-->
+<sampleapi>
+ <module name="my.first.module" id="first">
+ <exports package="$exported"/>
+ <exports package="$exported.to">
+ <to module="$second"/>
+ </exports>
+ <opens package="$internal">
+ <to module="$second"/>
+ </opens>
+ <uses service="$service"/>
+ <package name="sampleapi.exported" id="exported">
+ <class basename="API" id="service">
+ <modifier>public</modifier>
+ <member>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Object</type>
+ </method>
+ </member>
+ </class>
+ </package>
+ <package name="sampleapi.exported.to" id="exported.to">
+ <class basename="API" id="baseclass">
+ <modifier>public</modifier>
+ <member>
+ <method basename="put">
+ <param>Object</param>
+ <type>void</type>
+ </method>
+ </member>
+ </class>
+ </package>
+ <package name="sampleapi.not.exported" id="internal">
+ <class basename="AnImplementationDetail"/>
+ </package>
+ </module>
+ <module name="my.second.module" id="second" kind="open">
+ <requires module="$first" transitive="true"/>
+ <requires module="java.xml" static="true"/>
+ <provides service="$service">
+ <implementation class="$second.impl"/>
+ <implementation class="$third.impl"/>
+ </provides>
+ <package name="sampleapi.exported.second">
+ <class basename="API" id="second.impl">
+ <extend id="baseclass"/>
+ </class>
+ <class basename="OtherAPI" id="third.impl">
+ <extend id="baseclass"/>
+ </class>
+ <class basename="TClass">
+ <modifier>public</modifier>
+ <modifier>none|abstract</modifier>
+ <implement>SInterface0</implement>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int</type>
+ <throw>SException0</throw>
+ </method>
+ <method basename="put">
+ <modifier>public</modifier>
+ <param>int</param>
+ <type>void</type>
+ <throw>SException0</throw>
+ </method>
+ </member>
+ </class>
+ </package>
+ </module>
+</sampleapi>
--- a/langtools/test/tools/javadoc/sampleapi/SampleApiTest.java Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/tools/javadoc/sampleapi/SampleApiTest.java Thu Feb 23 05:40:53 2017 -0800
@@ -30,6 +30,8 @@
* jdk.compiler/com.sun.tools.javac.parser
* jdk.compiler/com.sun.tools.javac.tree
* jdk.compiler/com.sun.tools.javac.util
+ * jdk.javadoc/jdk.javadoc.internal.tool
+ * @build sampleapi.SampleApiDefaultRunner
* @run main SampleApiTest
*/
--- a/langtools/test/tools/javadoc/sampleapi/res/fx.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/tools/javadoc/sampleapi/res/fx.xml Thu Feb 23 05:40:53 2017 -0800
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2015, 2016 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
@@ -21,25 +21,29 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.fx" style="fx">
-
- <class basename="FXClass">
- <modifier>public</modifier>
- <member>
- <field basename="id">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.fx" style="fx">
+ <class basename="FXClass">
<modifier>public</modifier>
- <type>int|boolean</type>
- </field>
- <method basename="setProp">
- <modifier>public|protected|private</modifier>
- <param>int|String</param>
- <type>void</type>
- </method>
- <method basename="getProp">
- <modifier>public|protected|private</modifier>
- <type>int|int|String</type>
- </method>
- </member>
- </class>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </field>
+ <method basename="setProp">
+ <modifier>public|protected|private</modifier>
+ <param>int|String</param>
+ <type>void</type>
+ </method>
+ <method basename="getProp">
+ <modifier>public|protected|private</modifier>
+ <type>int|int|String</type>
+ </method>
+ </member>
+ </class>
-</package>
+ </package>
+ </module>
+</sampleapi>
+
--- a/langtools/test/tools/javadoc/sampleapi/res/simple.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/tools/javadoc/sampleapi/res/simple.xml Thu Feb 23 05:40:53 2017 -0800
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2015, 2016 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
@@ -21,509 +21,514 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.simple">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.simple">
- <class basename="SampleClass" id="baseclass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <member>
- <field basename="field">
- <modifier>none|public</modifier>
- <modifier>none|static</modifier>
- <modifier>none|final</modifier>
- <type>boolean|int|String</type>
- </field>
- <field basename="field">
- <modifier>protected|private</modifier>
- <type>String</type>
- </field>
- <constructor>
- <modifier>public</modifier>
- <param>none|int|int,boolean|int,String</param>
- </constructor>
- <constructor>
- <modifier>public</modifier>
- <param>String</param>
- <throw>NullPointerException</throw>
- <throw>SampleException0</throw>
- </constructor>
- <method basename="set">
- <modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>int|boolean|String</type>
- </method>
- <method basename="doSomething">
- <modifier>public</modifier>
- <type>void|int</type>
- <param>none|int|Object,int</param>
- <throw>NullPointerException</throw>
- <throw>ArithmeticException</throw>
- </method>
- </member>
- </class>
-
- <class basename="Derived">
- <modifier>public</modifier>
- <extend id="baseclass"/>
- <member>
- <field basename="myField">
- <modifier>public</modifier>
- <type>int|boolean</type>
- </field>
- <constructor>
- <modifier>public</modifier>
- <param>none|int|int,boolean|int,String</param>
- </constructor>
- <method basename="myGet">
- <modifier>public</modifier>
- <type>int|boolean</type>
- </method>
- </member>
- </class>
-
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <field basename="specialData">
- <modifier>private|none|public</modifier>
- <type>boolean|int|String</type>
- </field>
- </member>
- </class>
-
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <import>java.io.ObjectStreamField</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <serialfield basename="serialField">String,Long,Boolean</serialfield>
- <method basename="justToBeHere">
+ <class basename="SampleClass" id="baseclass">
<modifier>public</modifier>
- <type>String|long|boolean</type>
- </method>
- </member>
- </class>
-
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <import>java.io.ObjectOutputStream</import>
- <import>java.io.ObjectOutput</import>
- <import>java.io.IOException</import>
- <import>java.io.ObjectStreamException</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <method name="writeObject">
- <modifier>private</modifier>
- <param>ObjectOutputStream</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- <method name="writeExternal">
- <modifier>public</modifier>
- <param>ObjectOutput</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- <method name="writeReplace">
- <modifier>protected</modifier>
- <param>none</param>
- <type>Object</type>
- <throw>ObjectStreamException</throw>
- </method>
- <method name="writeSomethingElse">
- <modifier>public</modifier>
- <param>Object</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <member>
+ <field basename="field">
+ <modifier>none|public</modifier>
+ <modifier>none|static</modifier>
+ <modifier>none|final</modifier>
+ <type>boolean|int|String</type>
+ </field>
+ <field basename="field">
+ <modifier>protected|private</modifier>
+ <type>String</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>none|int|int,boolean|int,String</param>
+ </constructor>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ <throw>NullPointerException</throw>
+ <throw>SampleException0</throw>
+ </constructor>
+ <method basename="set">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int|boolean|String</type>
+ </method>
+ <method basename="doSomething">
+ <modifier>public</modifier>
+ <type>void|int</type>
+ <param>none|int|Object,int</param>
+ <throw>NullPointerException</throw>
+ <throw>ArithmeticException</throw>
+ </method>
+ </member>
+ </class>
- <class basename="SampleSerial">
- <import>java.io.Serializable</import>
- <import>java.io.ObjectInputStream</import>
- <import>java.io.ObjectInput</import>
- <import>java.io.IOException</import>
- <import>java.io.ObjectStreamException</import>
- <modifier>public</modifier>
- <implement ref="Serializable"/>
- <member>
- <method name="readObject">
- <modifier>private</modifier>
- <param>ObjectInputStream</param>
- <type>void</type>
- <throw>IOException</throw>
- <throw>ClassNotFoundException</throw>
- </method>
- <method name="readExternal">
+ <class basename="Derived">
<modifier>public</modifier>
- <param>ObjectInput</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- <method name="readResolve">
- <modifier>protected</modifier>
- <param>none</param>
- <type>Object</type>
- <throw>ObjectStreamException</throw>
- </method>
- <method name="readSomethingElse">
+ <extend id="baseclass"/>
+ <member>
+ <field basename="myField">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>none|int|int,boolean|int,String</param>
+ </constructor>
+ <method basename="myGet">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </method>
+ </member>
+ </class>
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
<modifier>public</modifier>
- <param>Object</param>
- <type>void</type>
- <throw>IOException</throw>
- </method>
- </member>
- </class>
-
- <class basename="Container">
- <modifier>public</modifier>
- <member>
- <class basename="Inner">
- <modifier>public</modifier>
+ <implement ref="Serializable"/>
<member>
- <field basename="value">
- <modifier>public</modifier>
- <type>int</type>
+ <field basename="specialData">
+ <modifier>private|none|public</modifier>
+ <type>boolean|int|String</type>
</field>
</member>
</class>
- <class basename="Nested">
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
+ <import>java.io.ObjectStreamField</import>
+ <modifier>public</modifier>
+ <implement ref="Serializable"/>
+ <member>
+ <serialfield basename="serialField">String,Long,Boolean</serialfield>
+ <method basename="justToBeHere">
+ <modifier>public</modifier>
+ <type>String|long|boolean</type>
+ </method>
+ </member>
+ </class>
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
+ <import>java.io.ObjectOutputStream</import>
+ <import>java.io.ObjectOutput</import>
+ <import>java.io.IOException</import>
+ <import>java.io.ObjectStreamException</import>
<modifier>public</modifier>
- <modifier>static</modifier>
+ <implement ref="Serializable"/>
+ <member>
+ <method name="writeObject">
+ <modifier>private</modifier>
+ <param>ObjectOutputStream</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ <method name="writeExternal">
+ <modifier>public</modifier>
+ <param>ObjectOutput</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ <method name="writeReplace">
+ <modifier>protected</modifier>
+ <param>none</param>
+ <type>Object</type>
+ <throw>ObjectStreamException</throw>
+ </method>
+ <method name="writeSomethingElse">
+ <modifier>public</modifier>
+ <param>Object</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ </member>
</class>
- <interface basename="EventListener">
+
+ <class basename="SampleSerial">
+ <import>java.io.Serializable</import>
+ <import>java.io.ObjectInputStream</import>
+ <import>java.io.ObjectInput</import>
+ <import>java.io.IOException</import>
+ <import>java.io.ObjectStreamException</import>
<modifier>public</modifier>
- <modifier>static</modifier>
+ <implement ref="Serializable"/>
+ <member>
+ <method name="readObject">
+ <modifier>private</modifier>
+ <param>ObjectInputStream</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ <throw>ClassNotFoundException</throw>
+ </method>
+ <method name="readExternal">
+ <modifier>public</modifier>
+ <param>ObjectInput</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ <method name="readResolve">
+ <modifier>protected</modifier>
+ <param>none</param>
+ <type>Object</type>
+ <throw>ObjectStreamException</throw>
+ </method>
+ <method name="readSomethingElse">
+ <modifier>public</modifier>
+ <param>Object</param>
+ <type>void</type>
+ <throw>IOException</throw>
+ </method>
+ </member>
+ </class>
+
+ <class basename="Container">
+ <modifier>public</modifier>
<member>
- <method basename="onEvent">
- <modifier>public</modifier>
- <type>void</type>
+ <class basename="Inner">
+ <modifier>public</modifier>
+ <member>
+ <field basename="value">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ </member>
+ </class>
+ <class basename="Nested">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ </class>
+ <interface basename="EventListener">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <member>
+ <method basename="onEvent">
+ <modifier>public</modifier>
+ <type>void</type>
+ </method>
+ </member>
+ </interface>
+ </member>
+ </class>
+
+ <!-- Errors and exceptions -->
+ <class basename="SampleError">
+ <modifier>public</modifier>
+ <extend ref="java.lang.Error"/>
+ <member>
+ <field basename="errorInfo">
+ <modifier>private</modifier>
+ <type>boolean|int|String</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ <method basename="getSampleData">
+ <modifier>public</modifier>
+ <type>int|String</type>
+ </method>
+ </member>
+ </class>
+
+ <class basename="SampleException">
+ <modifier>public</modifier>
+ <extend ref="java.lang.Exception"/>
+ <member>
+ <field basename="exceptionInfo">
+ <modifier>private</modifier>
+ <type>boolean|int|String</type>
+ </field>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ <method basename="getSampleData">
+ <modifier>public</modifier>
+ <type>int|String</type>
+ </method>
+ </member>
+ </class>
+
+ <interface basename="SampleInterface" id="baseinterface">
+ <modifier>public|none</modifier>
+ <member>
+ <method basename="method">
+ <modifier>public</modifier>
+ <type>void|int|Object</type>
</method>
</member>
</interface>
- </member>
- </class>
-
- <!-- Errors and exceptions -->
- <class basename="SampleError">
- <modifier>public</modifier>
- <extend ref="java.lang.Error"/>
- <member>
- <field basename="errorInfo">
- <modifier>private</modifier>
- <type>boolean|int|String</type>
- </field>
- <constructor>
- <modifier>public</modifier>
- <param>String</param>
- </constructor>
- <method basename="getSampleData">
- <modifier>public</modifier>
- <type>int|String</type>
- </method>
- </member>
- </class>
- <class basename="SampleException">
- <modifier>public</modifier>
- <extend ref="java.lang.Exception"/>
- <member>
- <field basename="exceptionInfo">
- <modifier>private</modifier>
- <type>boolean|int|String</type>
- </field>
- <constructor>
+ <class basename="Implementor">
<modifier>public</modifier>
- <param>String</param>
- </constructor>
- <method basename="getSampleData">
- <modifier>public</modifier>
- <type>int|String</type>
- </method>
- </member>
- </class>
+ <implement id="baseinterface"/>
+ <member>
+ <field basename="myField">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </field>
+ <method basename="myGet">
+ <modifier>public</modifier>
+ <type>int|boolean</type>
+ </method>
+ </member>
+ </class>
- <interface basename="SampleInterface" id="baseinterface">
- <modifier>public|none</modifier>
- <member>
- <method basename="method">
- <modifier>public</modifier>
- <type>void|int|Object</type>
- </method>
- </member>
- </interface>
-
- <class basename="Implementor">
- <modifier>public</modifier>
- <implement id="baseinterface"/>
- <member>
- <field basename="myField">
- <modifier>public</modifier>
- <type>int|boolean</type>
- </field>
- <method basename="myGet">
+ <class basename="GenericClass" tparam="T">
+ <import>java.util.List</import>
<modifier>public</modifier>
- <type>int|boolean</type>
- </method>
- </member>
- </class>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>T</param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>T</type>
+ <param>int</param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>List<T></type>
+ </method>
+ </member>
+ </class>
- <class basename="GenericClass" tparam="T">
- <import>java.util.List</import>
- <modifier>public</modifier>
- <member>
- <method basename="put">
- <modifier>public</modifier>
- <type>void</type>
- <param>T</param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>T</type>
- <param>int</param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>List<T></type>
- </method>
- </member>
- </class>
-
- <class basename="GenericClass" tparam="K,V">
- <import>java.util.Set</import>
- <import>java.util.List</import>
- <import>java.util.Map</import>
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <class basename="GenericClass" tparam="K,V">
+ <import>java.util.Set</import>
+ <import>java.util.List</import>
+ <import>java.util.Map</import>
<modifier>public</modifier>
- <type>void</type>
- <param>K,V</param>
- </method>
- <method basename="putMap">
- <modifier>public</modifier>
- <type>void</type>
- <param>Map<K,V></param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>V</type>
- <param>K</param>
- </method>
- <method basename="getV">
- <modifier>public</modifier>
- <type>Set<V>|List<V></type>
- </method>
- <method basename="getK">
- <modifier>public</modifier>
- <type>Set<K>|List<K></type>
- </method>
- </member>
- </class>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>K,V</param>
+ </method>
+ <method basename="putMap">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>Map<K,V></param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>V</type>
+ <param>K</param>
+ </method>
+ <method basename="getV">
+ <modifier>public</modifier>
+ <type>Set<V>|List<V></type>
+ </method>
+ <method basename="getK">
+ <modifier>public</modifier>
+ <type>Set<K>|List<K></type>
+ </method>
+ </member>
+ </class>
- <class basename="GenericClass" tparam="M,N,O">
- <import>java.util.Set</import>
- <import>java.util.List</import>
- <import>java.util.Map</import>
- <modifier>public</modifier>
- <member>
- <method basename="get">
- <modifier>public</modifier>
- <type>Set<M>|List<M></type>
- <param>Map<N,O></param>
- </method>
- <method basename="get">
+ <class basename="GenericClass" tparam="M,N,O">
+ <import>java.util.Set</import>
+ <import>java.util.List</import>
+ <import>java.util.Map</import>
<modifier>public</modifier>
- <type>Set<N>|List<N></type>
- <param>Map<M,O></param>
- </method>
- <method basename="get">
- <modifier>public</modifier>
- <type>Set<O>|List<O></type>
- <param>Map<M,N></param>
- </method>
- </member>
- </class>
+ <member>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Set<M>|List<M></type>
+ <param>Map<N,O></param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Set<N>|List<N></type>
+ <param>Map<M,O></param>
+ </method>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>Set<O>|List<O></type>
+ <param>Map<M,N></param>
+ </method>
+ </member>
+ </class>
- <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
- <import>java.util.Set</import>
- <import>java.util.List</import>
- <import>java.util.Map</import>
- <import>java.util.function.Supplier</import>
- <modifier>public</modifier>
- <member>
- <method tparam="E" basename="getSomething">
- <modifier>public</modifier>
- <modifier>static</modifier>
- <type>Set<? extends E>|List<? extends E></type>
- </method>
- <method tparam="V,K" basename="getMore">
- <modifier>public|private</modifier>
- <modifier>static</modifier>
- <type>Map<V,K></type>
- </method>
- <method tparam="E" basename="doSomething">
+ <class basename="GenericUtil"> <!-- public static generic methods like Collections -->
+ <import>java.util.Set</import>
+ <import>java.util.List</import>
+ <import>java.util.Map</import>
+ <import>java.util.function.Supplier</import>
<modifier>public</modifier>
- <modifier>static</modifier>
- <type>void</type>
- <param>E</param>
- </method>
- <method tparam="X extends Throwable" basename="orElseThrow">
- <modifier>public|private</modifier>
- <modifier>static</modifier>
- <type>X</type>
- <param>Supplier<? extends X></param>
- <throw>X</throw>
- </method>
- </member>
- </class>
-
- <enum basename="SampleEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="VALUE" count="3"/>
- </member>
- </enum>
-
- <enum basename="SampleEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="VALUE" count="2"/>
- <constant basename="NOVALUE" count="1"/>
- <field basename="field">
- <modifier>private</modifier>
- <type>int|String</type>
- </field>
- <method basename="method">
- <modifier>public</modifier>
- <type>void|String</type>
- </method>
- </member>
- </enum>
+ <member>
+ <method tparam="E" basename="getSomething">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <type>Set<? extends E>|List<? extends E></type>
+ </method>
+ <method tparam="V,K" basename="getMore">
+ <modifier>public|private</modifier>
+ <modifier>static</modifier>
+ <type>Map<V,K></type>
+ </method>
+ <method tparam="E" basename="doSomething">
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <type>void</type>
+ <param>E</param>
+ </method>
+ <method tparam="X extends Throwable" basename="orElseThrow">
+ <modifier>public|private</modifier>
+ <modifier>static</modifier>
+ <type>X</type>
+ <param>Supplier<? extends X></param>
+ <throw>X</throw>
+ </method>
+ </member>
+ </class>
- <annodecl id="documented">
- <class>Documented</class>
- </annodecl>
-
- <annodecl id="reten-source">
- <class>Retention</class>
- <arg name="value" value="RetentionPolicy.SOURCE"/>
- </annodecl>
-
- <annodecl id="reten-class">
- <class>Retention</class>
- <arg name="value" value="RetentionPolicy.CLASS"/>
- </annodecl>
+ <enum basename="SampleEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="VALUE" count="3"/>
+ </member>
+ </enum>
- <annodecl id="reten-runtime">
- <class>Retention</class>
- <arg name="value" value="RetentionPolicy.RUNTIME"/>
- </annodecl>
-
- <annodecl id="target-method">
- <class>Target</class>
- <arg value="ElementType.METHOD"/>
- </annodecl>
+ <enum basename="SampleEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="VALUE" count="2"/>
+ <constant basename="NOVALUE" count="1"/>
+ <field basename="field">
+ <modifier>private</modifier>
+ <type>int|String</type>
+ </field>
+ <method basename="method">
+ <modifier>public</modifier>
+ <type>void|String</type>
+ </method>
+ </member>
+ </enum>
- <annodecl id="target-field">
- <class>Target</class>
- <arg value="ElementType.FIELD"/>
- </annodecl>
-
- <annodecl id="target-type">
- <class>Target</class>
- <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
- </annodecl>
+ <annodecl id="documented">
+ <class>Documented</class>
+ </annodecl>
- <annotation basename="AnnotatedAnno">
- <import>java.lang.annotation.Documented</import>
- <anno>@documented</anno>
- <modifier>public</modifier>
- <member>
- <method basename="value">
- <modifier>public</modifier>
- <type>boolean|String</type>
- </method>
- </member>
- </annotation>
+ <annodecl id="reten-source">
+ <class>Retention</class>
+ <arg name="value" value="RetentionPolicy.SOURCE"/>
+ </annodecl>
+
+ <annodecl id="reten-class">
+ <class>Retention</class>
+ <arg name="value" value="RetentionPolicy.CLASS"/>
+ </annodecl>
+
+ <annodecl id="reten-runtime">
+ <class>Retention</class>
+ <arg name="value" value="RetentionPolicy.RUNTIME"/>
+ </annodecl>
- <annotation basename="AnnotatedAnno">
- <import>java.lang.annotation.Retention</import>
- <import>java.lang.annotation.RetentionPolicy</import>
- <anno>@reten-source|@reten-class|@reten-runtime</anno>
- <modifier>public</modifier>
- <member>
- <method basename="value">
- <modifier>public</modifier>
- <type>int</type>
- </method>
- </member>
- </annotation>
+ <annodecl id="target-method">
+ <class>Target</class>
+ <arg value="ElementType.METHOD"/>
+ </annodecl>
+
+ <annodecl id="target-field">
+ <class>Target</class>
+ <arg value="ElementType.FIELD"/>
+ </annodecl>
- <class basename="AnnoContainer">
- <import>java.lang.annotation.Retention</import>
- <import>java.lang.annotation.RetentionPolicy</import>
- <import>java.lang.annotation.Target</import>
- <import>java.lang.annotation.ElementType</import>
- <modifier>public</modifier>
- <member>
+ <annodecl id="target-type">
+ <class>Target</class>
+ <arg value="{ElementType.TYPE, ElementType.TYPE_USE}"/>
+ </annodecl>
+
<annotation basename="AnnotatedAnno">
- <anno>@reten-source|@reten-class|@reten-runtime</anno>
- <anno>@target-method|@target-field|@target-type</anno>
+ <import>java.lang.annotation.Documented</import>
+ <anno>@documented</anno>
<modifier>public</modifier>
- <modifier>static</modifier>
<member>
<method basename="value">
<modifier>public</modifier>
- <type>String</type>
+ <type>boolean|String</type>
+ </method>
+ </member>
+ </annotation>
+
+ <annotation basename="AnnotatedAnno">
+ <import>java.lang.annotation.Retention</import>
+ <import>java.lang.annotation.RetentionPolicy</import>
+ <anno>@reten-source|@reten-class|@reten-runtime</anno>
+ <modifier>public</modifier>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>int</type>
</method>
</member>
</annotation>
- </member>
- </class>
-
- <annodecl id="deprecated">
- <class>Deprecated</class>
- </annodecl>
- <annodecl id="safevarargs">
- <class>SafeVarargs</class>
- </annodecl>
+ <class basename="AnnoContainer">
+ <import>java.lang.annotation.Retention</import>
+ <import>java.lang.annotation.RetentionPolicy</import>
+ <import>java.lang.annotation.Target</import>
+ <import>java.lang.annotation.ElementType</import>
+ <modifier>public</modifier>
+ <member>
+ <annotation basename="AnnotatedAnno">
+ <anno>@reten-source|@reten-class|@reten-runtime</anno>
+ <anno>@target-method|@target-field|@target-type</anno>
+ <modifier>public</modifier>
+ <modifier>static</modifier>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>String</type>
+ </method>
+ </member>
+ </annotation>
+ </member>
+ </class>
- <annodecl id="suppresswarnings">
- <class>SuppressWarnings</class>
- <arg value="{"unchecked", "rawtypes"}"/>
- </annodecl>
+ <annodecl id="deprecated">
+ <class>Deprecated</class>
+ </annodecl>
+
+ <annodecl id="safevarargs">
+ <class>SafeVarargs</class>
+ </annodecl>
- <class basename="AnnotatedClass">
- <modifier>public</modifier>
- <member>
- <method basename="deprecatedMethod">
- <anno>@deprecated</anno>
- <modifier>public</modifier>
- <type>void</type>
- </method>
- <method basename="safeVarargsMethod">
- <anno>@safevarargs</anno>
+ <annodecl id="suppresswarnings">
+ <class>SuppressWarnings</class>
+ <arg value="{"unchecked", "rawtypes"}"/>
+ </annodecl>
+
+ <class basename="AnnotatedClass">
<modifier>public</modifier>
- <type>void|int</type>
- <param>String...</param>
- </method>
- <method basename="suppressWarningsMethod">
- <anno>@suppresswarnings</anno>
- <modifier>public</modifier>
- <type>void</type>
- <param>int|Object</param>
- </method>
- </member>
- </class>
-</package>
+ <member>
+ <method basename="deprecatedMethod">
+ <anno>@deprecated</anno>
+ <modifier>public</modifier>
+ <type>void</type>
+ </method>
+ <method basename="safeVarargsMethod">
+ <anno>@safevarargs</anno>
+ <modifier>public</modifier>
+ <type>void|int</type>
+ <param>String...</param>
+ </method>
+ <method basename="suppressWarningsMethod">
+ <anno>@suppresswarnings</anno>
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int|Object</param>
+ </method>
+ </member>
+ </class>
+ </package>
+ </module>
+</sampleapi>
+
--- a/langtools/test/tools/javadoc/sampleapi/res/sub.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/tools/javadoc/sampleapi/res/sub.xml Thu Feb 23 05:40:53 2017 -0800
@@ -21,69 +21,72 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.simple.sub">
-
- <class basename="SClass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <implement>SInterface0</implement>
- <member>
- <field basename="id">
- <modifier>public</modifier>
- <type>int</type>
- </field>
- <method basename="get">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.simple.sub">
+ <class basename="SClass">
<modifier>public</modifier>
- <type>int</type>
- <throw>SException0</throw>
- </method>
- <method basename="put">
- <modifier>public</modifier>
- <param>int</param>
- <type>void</type>
- <throw>SException0</throw>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <implement>SInterface0</implement>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int</type>
+ <throw>SException0</throw>
+ </method>
+ <method basename="put">
+ <modifier>public</modifier>
+ <param>int</param>
+ <type>void</type>
+ <throw>SException0</throw>
+ </method>
+ </member>
+ </class>
- <class basename="SException">
- <modifier>public</modifier>
- <extend ref="java.lang.Exception"/>
- <member>
- <constructor>
+ <class basename="SException">
<modifier>public</modifier>
- <param>String</param>
- </constructor>
- </member>
- </class>
+ <extend ref="java.lang.Exception"/>
+ <member>
+ <constructor>
+ <modifier>public</modifier>
+ <param>String</param>
+ </constructor>
+ </member>
+ </class>
- <interface basename="SInterface">
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <interface basename="SInterface">
<modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- </member>
- </interface>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ </member>
+ </interface>
- <enum basename="SEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="ON" count="1"/>
- <constant basename="OFF" count="1"/>
- </member>
- </enum>
+ <enum basename="SEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="ON" count="1"/>
+ <constant basename="OFF" count="1"/>
+ </member>
+ </enum>
- <annotation basename="SAnno">
- <modifier>public</modifier>
- <member>
- <method basename="value">
+ <annotation basename="SAnno">
<modifier>public</modifier>
- <type>boolean</type>
- </method>
- </member>
- </annotation>
-
-</package>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>boolean</type>
+ </method>
+ </member>
+ </annotation>
+ </package>
+ </module>
+</sampleapi>
+
--- a/langtools/test/tools/javadoc/sampleapi/res/tiny.xml Wed Feb 22 12:01:15 2017 -0800
+++ b/langtools/test/tools/javadoc/sampleapi/res/tiny.xml Thu Feb 23 05:40:53 2017 -0800
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2015, 2016 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
@@ -21,51 +21,53 @@
or visit www.oracle.com if you need additional information or have any
questions.
-->
-<package name="sampleapi.tiny">
-
- <class basename="TinyClass">
- <modifier>public</modifier>
- <modifier>none|abstract</modifier>
- <member>
- <field basename="id">
+<sampleapi>
+ <module name="UNNAMED">
+ <package name="sampleapi.tiny">
+ <class basename="TinyClass">
<modifier>public</modifier>
- <type>int</type>
- </field>
- <method basename="get">
- <modifier>public</modifier>
- <type>int</type>
- </method>
- </member>
- </class>
+ <modifier>none|abstract</modifier>
+ <member>
+ <field basename="id">
+ <modifier>public</modifier>
+ <type>int</type>
+ </field>
+ <method basename="get">
+ <modifier>public</modifier>
+ <type>int</type>
+ </method>
+ </member>
+ </class>
- <interface basename="TinyInterface">
- <modifier>public</modifier>
- <member>
- <method basename="put">
+ <interface basename="TinyInterface">
<modifier>public</modifier>
- <type>void</type>
- <param>int</param>
- </method>
- </member>
- </interface>
+ <member>
+ <method basename="put">
+ <modifier>public</modifier>
+ <type>void</type>
+ <param>int</param>
+ </method>
+ </member>
+ </interface>
- <enum basename="TinyEnum">
- <modifier>public</modifier>
- <member>
- <constant basename="YES" count="1"/>
- <constant basename="NO" count="1"/>
- <constant basename="MAYBE" count="1"/>
- </member>
- </enum>
+ <enum basename="TinyEnum">
+ <modifier>public</modifier>
+ <member>
+ <constant basename="YES" count="1"/>
+ <constant basename="NO" count="1"/>
+ <constant basename="MAYBE" count="1"/>
+ </member>
+ </enum>
- <annotation basename="TinyAnno">
- <modifier>public</modifier>
- <member>
- <method basename="value">
+ <annotation basename="TinyAnno">
<modifier>public</modifier>
- <type>boolean</type>
- </method>
- </member>
- </annotation>
-
-</package>
+ <member>
+ <method basename="value">
+ <modifier>public</modifier>
+ <type>boolean</type>
+ </method>
+ </member>
+ </annotation>
+ </package>
+ </module>
+</sampleapi>