--- a/langtools/src/java.compiler/share/classes/javax/annotation/processing/Filer.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/annotation/processing/Filer.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -264,7 +264,7 @@
* @param moduleAndPkg module and/or package relative to which the file
* should be named, or the empty string if none
* @param relativeName final pathname components of the file
- * @param originatingElements type or package elements causally
+ * @param originatingElements type or package or module elements causally
* associated with the creation of this file, may be elided or
* {@code null}
* @return a {@code FileObject} to write the new resource
--- a/langtools/src/java.compiler/share/classes/javax/annotation/processing/FilerException.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/annotation/processing/FilerException.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -31,7 +31,7 @@
* Indicates a {@link Filer} detected an attempt to open a file that
* would violate the guarantees provided by the {@code Filer}. Those
* guarantees include not creating the same file more than once, not
- * creating multiple files corresponding to the same type, and not
+ * creating multiple files corresponding to the same type or package, and not
* creating files for types with invalid names.
*
* @author Joseph D. Darcy
--- a/langtools/src/java.compiler/share/classes/javax/annotation/processing/Processor.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/annotation/processing/Processor.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -194,7 +194,7 @@
* <p>The {@link Filer} interface discusses restrictions on how
* processors can operate on files.
*
- * <p>Note that implementors of this interface may find it convenient
+ * @apiNote Implementors of this interface may find it convenient
* to extend {@link AbstractProcessor} rather than implementing this
* interface directly.
*
@@ -315,7 +315,7 @@
* is returned, the annotation types are unclaimed and subsequent
* processors may be asked to process them. A processor may
* always return the same boolean value or may vary the result
- * based on chosen criteria.
+ * based on its own chosen criteria.
*
* <p>The input set will be empty if the processor supports {@code
* "*"} and the root elements have no annotations. A {@code
@@ -343,8 +343,8 @@
* <p>Since incomplete programs are being modeled, some of the
* parameters may only have partial information or may be {@code
* null}. At least one of {@code element} and {@code userText}
- * must be non-{@code null}. If {@code element} is non-{@code
- * null}, {@code annotation} and {@code member} may be {@code
+ * must be non-{@code null}. If {@code element} is non-{@code null},
+ * {@code annotation} and {@code member} may be {@code
* null}. Processors may not throw a {@code NullPointerException}
* if some parameters are {@code null}; if a processor has no
* completions to offer based on the provided information, an
--- a/langtools/src/java.compiler/share/classes/javax/annotation/processing/RoundEnvironment.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/annotation/processing/RoundEnvironment.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -65,7 +65,7 @@
boolean errorRaised();
/**
- * Returns the root elements for annotation processing generated
+ * Returns the {@linkplain Processor root elements} for annotation processing generated
* by the prior round.
*
* @return the root elements for annotation processing generated
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/AnnotatedConstruct.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/AnnotatedConstruct.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, 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
@@ -62,7 +62,7 @@
*
* If there are multiple annotations of type <i>AT</i> present on
* <i>C</i>, then if <i>AT</i> is repeatable annotation type, an
- * annotation of type <i>ATC</i> is implicitly declared on <i>C</i>.
+ * annotation of type <i>ATC</i> is {@linkplain javax.lang.model.util.Elements#getOrigin(AnnotatedConstruct, AnnotationMirror) implicitly declared} on <i>C</i>.
*
* <li> A representation of <i>A</i> appears in the executable output
* for <i>C</i>, such as the {@code RuntimeVisibleAnnotations} or
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/UnknownEntityException.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/UnknownEntityException.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2017, 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
@@ -32,8 +32,9 @@
* this exception may be thrown by visitors to indicate that the
* visitor was created for a prior version of the language.
*
- * <p>A common superclass for those exceptions allows a single catch
- * block to have code handling them uniformly.
+ * @apiNote A common superclass for exceptions specific to different
+ * kinds of unknown entities allows a single catch block to easily
+ * provide uniform handling of those related conditions.
*
* @author Joseph D. Darcy
* @see javax.lang.model.element.UnknownElementException
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/Element.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/Element.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -37,7 +37,7 @@
/**
- * Represents a program element such as a package, class, or method.
+ * Represents a program element such as a module, package, class, or method.
* Each element represents a static, language-level construct
* (and not, for example, a runtime construct of the virtual machine).
*
@@ -139,7 +139,7 @@
*
* <li> If this is a {@linkplain
* PackageElement#getEnclosingElement package}, its module is
- * returned.
+ * returned if such a module exists. Otherwise, {@code null} is returned.
*
* <li> If this is a {@linkplain
* TypeParameterElement#getEnclosingElement type parameter},
@@ -180,7 +180,7 @@
* any elements; however, that may change as this API or the
* programming language evolves.
*
- * <p>Note that elements of certain kinds can be isolated using
+ * @apiNote Elements of certain kinds can be isolated using
* methods in {@link ElementFilter}.
*
* @return the enclosed elements, or an empty list if none
@@ -197,7 +197,7 @@
* Returns {@code true} if the argument represents the same
* element as {@code this}, or {@code false} otherwise.
*
- * <p>Note that the identity of an element involves implicit state
+ * @apiNote The identity of an element involves implicit state
* not directly accessible from the element's methods, including
* state about the presence of unrelated types. Element objects
* created by different implementations of these interfaces should
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/ModuleElement.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/ModuleElement.java Thu Feb 02 21:55:45 2017 +0000
@@ -37,17 +37,18 @@
public interface ModuleElement extends Element, QualifiedNameable {
/**
- * Returns the fully qualified name of this module.
+ * Returns the fully qualified name of this module. For an
+ * {@linkplain #isUnnamed() unnamed module}, an empty name is returned.
*
- * @return the qualified name of this module, or an
+ * @return the fully qualified name of this module, or an
* empty name if this is an unnamed module
*/
@Override
Name getQualifiedName();
/**
- * Returns the simple name of this module. For an unnamed
- * module, an empty name is returned.
+ * Returns the simple name of this module. For an {@linkplain
+ * #isUnnamed() unnamed module}, an empty name is returned.
*
* @return the simple name of this module or an empty name if
* this is an unnamed module
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/NestingKind.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/NestingKind.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -89,25 +89,29 @@
/**
* A type that is a named member of another type.
+ * @jls 8.5 Member Type Declarations
*/
MEMBER,
/**
* A named type declared within a construct other than a type.
+ * @jls 14.3 Local Class Declarations
*/
LOCAL,
/**
* A type without a name.
+ * @jls 15.9.5 Anonymous Class Declarations
*/
ANONYMOUS;
/**
* Does this constant correspond to a nested type element?
* A <i>nested</i> type element is any that is not top-level.
- * An <i>inner</i> type element is any nested type element that
+ * More specifically, an <i>inner</i> type element is any nested type element that
* is not {@linkplain Modifier#STATIC static}.
* @return whether or not the constant is nested
+ * @jls 14.3 Inner Classes and Enclosing Instances
*/
public boolean isNested() {
return this != TOP_LEVEL;
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/PackageElement.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/PackageElement.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -42,6 +42,7 @@
/**
* Returns the fully qualified name of this package.
* This is also known as the package's <i>canonical</i> name.
+ * For an {@linkplain #isUnnamed() unnamed package}, an empty name is returned.
*
* @return the fully qualified name of this package, or an
* empty name if this is an unnamed package
@@ -50,8 +51,8 @@
Name getQualifiedName();
/**
- * Returns the simple name of this package. For an unnamed
- * package, an empty name is returned.
+ * Returns the simple name of this package. For an {@linkplain
+ * #isUnnamed() unnamed package}, an empty name is returned.
*
* @return the simple name of this package or an empty name if
* this is an unnamed package
@@ -82,9 +83,16 @@
boolean isUnnamed();
/**
- * Returns the enclosing module.
+ * Returns the enclosing module if such a module exists; otherwise
+ * returns {@code null}.
*
- * @return the enclosing module
+ * One situation where a module does not exist for a package is if
+ * the environment does not include modules, such as an annotation
+ * processing environment configured for a {@linkplain
+ * javax.annotation.processing.ProcessingEnvironment#getSourceVersion
+ * source version} without modules.
+ *
+ * @return the enclosing module or {@code null} if no such module exists
*/
@Override
Element getEnclosingElement();
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/Parameterizable.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/Parameterizable.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2017, 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
@@ -35,7 +35,7 @@
*/
public interface Parameterizable extends Element {
/**
- * Returns the formal type parameters of the type element in
+ * Returns the formal type parameters of an element in
* declaration order.
*
* @return the formal type parameters, or an empty list
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/TypeElement.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -67,14 +67,14 @@
* the implicit {@code values} and {@code valueOf} methods of an
* enum type.
*
- * <p> Note that as a particular instance of the {@linkplain
+ * @apiNote As a particular instance of the {@linkplain
* javax.lang.model.element general accuracy requirements} and the
* ordering behavior required of this interface, the list of
* enclosed elements will be returned in the natural order for the
* originating source of information about the type. For example,
* if the information about the type is originating from a source
* file, the elements will be returned in source code order.
- * (However, in that case the the ordering of synthesized
+ * (However, in that case the the ordering of {@linkplain Elements.Origin#MANDATED mandated}
* elements, such as a default constructor, is not specified.)
*
* @return the enclosed elements in proper order, or an empty list if none
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/UnknownAnnotationValueException.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -79,7 +79,7 @@
/**
* Returns the additional argument.
*
- * @return the additional argument
+ * @return the additional argument, or {@code null} if unavailable
*/
public Object getArgument() {
return parameter;
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/UnknownElementException.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/UnknownElementException.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -77,7 +77,7 @@
/**
* Returns the additional argument.
*
- * @return the additional argument
+ * @return the additional argument, or {@code null} if unavailable
*/
public Object getArgument() {
return parameter;
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/element/package-info.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/element/package-info.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -87,14 +87,14 @@
* If a program is syntactically valid but erroneous in some other
* fashion, any returned model must have no less information than if
* all the method bodies in the program were replaced by {@code "throw
- * new RuntimeException();"}. If a program refers to a missing type XYZ,
+ * new RuntimeException();"}. If a program refers to a missing type Xyz,
* the returned model must contain no less information than if the
- * declaration of type XYZ were assumed to be {@code "class XYZ {}"},
- * {@code "interface XYZ {}"}, {@code "enum XYZ {}"}, or {@code
- * "@interface XYZ {}"}. If a program refers to a missing type {@code
- * XYZ<K1, ... ,Kn>}, the returned model must contain no less
- * information than if the declaration of XYZ were assumed to be
- * {@code "class XYZ<T1, ... ,Tn> {}"} or {@code "interface XYZ<T1,
+ * declaration of type Xyz were assumed to be {@code "class Xyz {}"},
+ * {@code "interface Xyz {}"}, {@code "enum Xyz {}"}, or {@code
+ * "@interface Xyz {}"}. If a program refers to a missing type {@code
+ * Xyz<K1, ... ,Kn>}, the returned model must contain no less
+ * information than if the declaration of Xyz were assumed to be
+ * {@code "class Xyz<T1, ... ,Tn> {}"} or {@code "interface Xyz<T1,
* ... ,Tn> {}"}
*
* <p> Unless otherwise specified in a particular implementation, the
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/type/IntersectionType.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/type/IntersectionType.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, 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
@@ -33,14 +33,12 @@
* <p>An intersection type can be either implicitly or explicitly
* declared in a program. For example, the bound of the type parameter
* {@code <T extends Number & Runnable>} is an (implicit) intersection
- * type. As of {@link javax.lang.model.SourceVersion#RELEASE_8
- * RELEASE_8}, this is represented by an {@code IntersectionType} with
+ * type. This is represented by an {@code IntersectionType} with
* {@code Number} and {@code Runnable} as its bounds.
*
- * @implNote Also as of {@link
- * javax.lang.model.SourceVersion#RELEASE_8 RELEASE_8}, in the
- * reference implementation an {@code IntersectionType} is used to
- * model the explicit target type of a cast expression.
+ * @implNote In the reference implementation an {@code
+ * IntersectionType} is used to model the explicit target type of a
+ * cast expression.
*
* @since 1.8
*/
@@ -49,7 +47,7 @@
/**
* Return the bounds comprising this intersection type.
*
- * @return the bounds of this intersection types.
+ * @return the bounds of this intersection type
*/
List<? extends TypeMirror> getBounds();
}
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/type/NoType.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/type/NoType.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -34,6 +34,7 @@
* <ul>
* <li>{@link TypeKind#VOID VOID} - corresponds to the keyword {@code void}.
* <li>{@link TypeKind#PACKAGE PACKAGE} - the pseudo-type of a package element.
+ * <li>{@link TypeKind#MODULE MODULE} - the pseudo-type of a module element.
* <li>{@link TypeKind#NONE NONE} - used in other cases
* where no actual type is appropriate; for example, the superclass
* of {@code java.lang.Object}.
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/type/UnionType.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/type/UnionType.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2017, 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
@@ -30,9 +30,8 @@
/**
* Represents a union type.
*
- * As of the {@link javax.lang.model.SourceVersion#RELEASE_7
- * RELEASE_7} source version, union types can appear as the type
- * of a multi-catch exception parameter.
+ * Union types can appear as the type of a multi-catch exception
+ * parameter.
*
* @since 1.7
*/
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/type/UnknownTypeException.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/type/UnknownTypeException.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -77,7 +77,7 @@
/**
* Returns the additional argument.
*
- * @return the additional argument
+ * @return the additional argument, or {@code null} if unavailable
*/
public Object getArgument() {
return parameter;
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -55,15 +55,6 @@
* arguments to methods in this class, a {@code NullPointerException}
* will be thrown.
*
- * <p>Note that a <i>static import</i> statement can make the text of
- * calls to the methods in this class more concise; for example:
- *
- * <blockquote><pre>
- * import static javax.lang.model.util.ElementFilter.*;
- * ...
- * {@code List<VariableElement>} fs = fieldsIn(someClass.getEnclosedElements());
- * </pre></blockquote>
- *
* @author Joseph D. Darcy
* @author Scott Seligman
* @author Peter von der Ahé
--- a/langtools/src/java.compiler/share/classes/javax/lang/model/util/Elements.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/java.compiler/share/classes/javax/lang/model/util/Elements.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -59,12 +59,17 @@
/**
* Returns a package given its fully qualified name, as seen from the given module.
*
+ * @implSpec The default implementation of this method returns
+ * {@code null}.
+ *
* @param name fully qualified package name, or an empty string for an unnamed package
* @param module module relative to which the lookup should happen
* @return the specified package, or {@code null} if it cannot be found
* @since 9
*/
- PackageElement getPackageElement(ModuleElement module, CharSequence name);
+ default PackageElement getPackageElement(ModuleElement module, CharSequence name) {
+ return null;
+ }
/**
* Returns a type element given its canonical name if the type element is unique in the environment.
@@ -79,12 +84,17 @@
/**
* Returns a type element given its canonical name, as seen from the given module.
*
+ * @implSpec The default implementation of this method returns
+ * {@code null}.
+ *
* @param name the canonical name
* @param module module relative to which the lookup should happen
* @return the named type element, or {@code null} if it cannot be found
* @since 9
*/
- TypeElement getTypeElement(ModuleElement module, CharSequence name);
+ default TypeElement getTypeElement(ModuleElement module, CharSequence name) {
+ return null;
+ }
/**
* Returns a module element given its fully qualified name.
@@ -95,11 +105,16 @@
* javax.annotation.processing.ProcessingEnvironment#getSourceVersion
* source version} without modules.
*
+ * @implSpec The default implementation of this method returns
+ * {@code null}.
+ *
* @param name the name
* @return the named module element, or {@code null} if it cannot be found
* @since 9
*/
- ModuleElement getModuleElement(CharSequence name);
+ default ModuleElement getModuleElement(CharSequence name) {
+ return null;
+ }
/**
* Returns the values of an annotation's elements, including defaults.
@@ -337,18 +352,23 @@
* javax.annotation.processing.ProcessingEnvironment#getSourceVersion
* source version} without modules.
*
+ * @implSpec The default implementation of this method returns
+ * {@code null}.
+ *
* @param type the element being examined
* @return the module of an element
* @since 9
*/
- ModuleElement getModuleOf(Element type);
+ default ModuleElement getModuleOf(Element type) {
+ return null;
+ }
/**
* Returns all members of a type element, whether inherited or
* declared directly. For a class the result also includes its
* constructors, but not local or anonymous classes.
*
- * <p>Note that elements of certain kinds can be isolated using
+ * @apiNote Elements of certain kinds can be isolated using
* methods in {@link ElementFilter}.
*
* @param type the type being examined
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Thu Feb 02 21:55:45 2017 +0000
@@ -502,7 +502,7 @@
private final class ArchiveContainer implements Container {
private final Path archivePath;
private final FileSystem fileSystem;
- private final Map<RelativePath, Path> pathCache = new HashMap<>();
+ private final Map<RelativePath, Path> packages;
public ArchiveContainer(Path archivePath) throws IOException, ProviderNotFoundException, SecurityException {
this.archivePath = archivePath;
@@ -514,6 +514,21 @@
} else {
this.fileSystem = FileSystems.newFileSystem(archivePath, null);
}
+ packages = new HashMap<>();
+ for (Path root : fileSystem.getRootDirectories()) {
+ Files.walkFileTree(root, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE,
+ new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
+ if (isValid(dir.getFileName())) {
+ packages.put(new RelativeDirectory(root.relativize(dir).toString()), dir);
+ return FileVisitResult.CONTINUE;
+ } else {
+ return FileVisitResult.SKIP_SUBTREE;
+ }
+ }
+ });
+ }
}
/**
@@ -526,7 +541,7 @@
Set<JavaFileObject.Kind> fileKinds,
boolean recurse,
ListBuffer<JavaFileObject> resultList) throws IOException {
- Path resolvedSubdirectory = resolvePath(subdirectory);
+ Path resolvedSubdirectory = packages.get(subdirectory);
if (resolvedSubdirectory == null)
return ;
@@ -544,18 +559,6 @@
}
}
- boolean isValid(Path fileName) {
- if (fileName == null) {
- return true;
- } else {
- String name = fileName.toString();
- if (name.endsWith("/")) {
- name = name.substring(0, name.length() - 1);
- }
- return SourceVersion.isIdentifier(name);
- }
- }
-
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (attrs.isRegularFile() && fileKinds.contains(getKind(file.getFileName().toString()))) {
@@ -569,27 +572,29 @@
}
- @Override
- public JavaFileObject getFileObject(Path userPath, RelativeFile name) throws IOException {
- Path p = resolvePath(name);
- if (p != null)
- return PathFileObject.forJarPath(JavacFileManager.this, p, userPath);
-
- return null;
+ private boolean isValid(Path fileName) {
+ if (fileName == null) {
+ return true;
+ } else {
+ String name = fileName.toString();
+ if (name.endsWith("/")) {
+ name = name.substring(0, name.length() - 1);
+ }
+ return SourceVersion.isIdentifier(name);
+ }
}
- private synchronized Path resolvePath(RelativePath path) {
- if (!pathCache.containsKey(path)) {
- Path relativePath = path.resolveAgainst(fileSystem);
-
- if (!Files.exists(relativePath)) {
- relativePath = null;
+ @Override
+ public JavaFileObject getFileObject(Path userPath, RelativeFile name) throws IOException {
+ RelativeDirectory root = name.dirname();
+ Path packagepath = packages.get(root);
+ if (packagepath != null) {
+ Path relpath = packagepath.resolve(name.basename());
+ if (Files.exists(relpath)) {
+ return PathFileObject.forJarPath(JavacFileManager.this, relpath, userPath);
}
-
- pathCache.put(path, relativePath);
- return relativePath;
}
- return pathCache.get(path);
+ return null;
}
@Override
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Thu Feb 02 21:55:45 2017 +0000
@@ -43,6 +43,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.ProviderNotFoundException;
+import java.nio.file.spi.FileSystemProvider;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -1119,8 +1120,12 @@
}
if (p.getFileName().toString().endsWith(".jar") && fsInfo.exists(p)) {
- URI uri = URI.create("jar:" + p.toUri());
- try (FileSystem fs = FileSystems.newFileSystem(uri, fsEnv, null)) {
+ FileSystemProvider jarFSProvider = fsInfo.getJarFSProvider();
+ if (jarFSProvider == null) {
+ log.error(Errors.NoZipfsForArchive(p));
+ return null;
+ }
+ try (FileSystem fs = jarFSProvider.newFileSystem(p, fsEnv)) {
Path moduleInfoClass = fs.getPath("module-info.class");
if (Files.exists(moduleInfoClass)) {
String moduleName = readModuleName(moduleInfoClass);
@@ -1132,9 +1137,6 @@
} catch (IOException e) {
log.error(Errors.LocnCantReadFile(p));
return null;
- } catch (ProviderNotFoundException e) {
- log.error(Errors.NoZipfsForArchive(p));
- return null;
}
//automatic module:
@@ -1177,8 +1179,12 @@
// workaround for now
FileSystem fs = fileSystems.get(p);
if (fs == null) {
- URI uri = URI.create("jar:" + p.toUri());
- fs = FileSystems.newFileSystem(uri, Collections.emptyMap(), null);
+ FileSystemProvider jarFSProvider = fsInfo.getJarFSProvider();
+ if (jarFSProvider == null) {
+ log.error(Errors.LocnCantReadFile(p));
+ return null;
+ }
+ fs = jarFSProvider.newFileSystem(p, Collections.emptyMap());
try {
Path moduleInfoClass = fs.getPath("classes/module-info.class");
String moduleName = readModuleName(moduleInfoClass);
@@ -1194,7 +1200,7 @@
}
} catch (ModuleNameReader.BadClassFile e) {
log.error(Errors.LocnBadModuleInfo(p));
- } catch (IOException | ProviderNotFoundException e) {
+ } catch (IOException e) {
log.error(Errors.LocnCantReadFile(p));
return null;
}
--- a/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, 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
@@ -1723,9 +1723,29 @@
break main;
ch = text.charAt(currPos);
}
- if (ch == '>' && blockTags.contains(StringUtils.toLowerCase(text.substring(tagPos, currPos)))) {
+ String tagFound = StringUtils.toLowerCase(text.substring(tagPos, currPos));
+ if (blockTags.contains(tagFound)) {
result.append(text, startPos, lessThanPos);
+ currPos = tagPos + tagFound.length();
+ boolean foundGT = false;
+ Character quoteKind = null;
+ while (!foundGT) {
+ if (ch == '\"' || ch == '\'') {
+ if (quoteKind == null) {
+ quoteKind = ch;
+ } else if (quoteKind == ch) {
+ quoteKind = null;
+ }
+ }
+ if (ch == '>' && quoteKind == null) {
+ foundGT = true;
+ }
+ if (++currPos == len)
+ break;
+ ch = text.charAt(currPos);
+ }
startPos = currPos + 1;
+ currPos = startPos;
}
lessThanPos = text.indexOf('<', currPos);
}
@@ -1740,6 +1760,10 @@
('1' <= ch && ch <= '6');
}
+ private static boolean isWhitespace(char ch) {
+ return Character.isWhitespace(ch);
+ }
+
/**
* Add a link to the stylesheet file.
*
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, 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
@@ -74,6 +74,11 @@
return memberTree;
}
+ @Override
+ public boolean showTabs() {
+ return false;
+ }
+
/**
* {@inheritDoc}
*/
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2017, 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
@@ -1773,14 +1773,14 @@
/**
* Returns a Comparator for index file presentations, and are sorted as follows.
* If comparing modules then simply compare the simple names,
- * comparing packages then simply compare the qualified names, otherwise
- * 1. if equal, then compare the ElementKind ex: Module, Package, Interface etc.
- * 2. sort on simple names of entities
- * 3a. if equal and if the type is of ExecutableElement(Constructor, Methods),
+ * comparing packages then simply compare the qualified names, if comparing a package with a
+ * module/type/member then compare the FullyQualifiedName of the package
+ * with the SimpleName of the entity, otherwise
+ * 1. compare the ElementKind ex: Module, Package, Interface etc.
+ * 2a. if equal and if the type is of ExecutableElement(Constructor, Methods),
* a case insensitive comparison of parameter the type signatures
- * 3b. if equal, case sensitive comparison of the type signatures
- * 4. finally, if equal, compare the FQNs of the entities
- * Iff comparing packages then simply sort on qualified names.
+ * 2b. if equal, case sensitive comparison of the type signatures
+ * 3. finally, if equal, compare the FQNs of the entities
* @return a comparator for index file use
*/
public Comparator<Element> makeIndexUseComparator() {
@@ -1788,8 +1788,10 @@
/**
* Compare two given elements, if comparing two modules, return the
* comparison of SimpleName, if comparing two packages, return the
- * comparison of FullyQualifiedName, first sort on kinds, then on the
- * names, then on the parameters only if the type is an ExecutableElement,
+ * comparison of FullyQualifiedName, if comparing a package with a
+ * module/type/member then compare the FullyQualifiedName of the package
+ * with the SimpleName of the entity, then sort on the kinds, then on
+ * the parameters only if the type is an ExecutableElement,
* the parameters are compared and finally the qualified names.
*
* @param e1 - an element.
@@ -1806,11 +1808,17 @@
if (isPackage(e1) && isPackage(e2)) {
return compareFullyQualifiedNames(e1, e2);
}
- result = compareElementTypeKinds(e1, e2);
+ if (isPackage(e1) || isPackage(e2)) {
+ result = (isPackage(e1))
+ ? compareStrings(getFullyQualifiedName(e1), getSimpleName(e2))
+ : compareStrings(getSimpleName(e1), getFullyQualifiedName(e2));
+ } else {
+ result = compareNames(e1, e2);
+ }
if (result != 0) {
return result;
}
- result = compareNames(e1, e2);
+ result = compareElementTypeKinds(e1, e2);
if (result != 0) {
return result;
}
--- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties Thu Feb 02 21:55:45 2017 +0000
@@ -33,16 +33,20 @@
where options include:
main.opt.public.desc=\
- Show only public classes and members
+ Show only public types and members. For named modules,\n\
+ show exported packages and the module''s API.
main.opt.protected.desc=\
- Show protected/public classes and members (default)
+ Show protected/public types and members (default). For\n\
+ named modules, show exported packages and the module''s API.
main.opt.package.desc=\
- Show package/protected/public classes and members
+ Show package/protected/public types and members. For \n\
+ named modules, show all packages and all module details.
main.opt.private.desc=\
- Show all classes and members
+ Show all types and members. For named modules,\n\
+ show all packages and all module details.
main.opt.show.members.arg=\
<value>
--- a/langtools/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java Thu Feb 02 21:55:45 2017 +0000
@@ -197,7 +197,6 @@
private boolean debug = false;
public boolean testPrompt = false;
- private String defaultStartup = null;
private Startup startup = null;
private String executionControlSpec = null;
private EditorSetting editor = BUILT_IN_EDITOR;
@@ -205,9 +204,9 @@
private static final String[] EDITOR_ENV_VARS = new String[] {
"JSHELLEDITOR", "VISUAL", "EDITOR"};
- // Commands and snippets which should be replayed
- private List<String> replayableHistory;
- private List<String> replayableHistoryPrevious;
+ // Commands and snippets which can be replayed
+ private ReplayableHistory replayableHistory;
+ private ReplayableHistory replayableHistoryPrevious;
static final String STARTUP_KEY = "STARTUP";
static final String EDITOR_KEY = "EDITOR";
@@ -507,6 +506,76 @@
}
/**
+ * Encapsulate a history of snippets and commands which can be replayed.
+ */
+ private static class ReplayableHistory {
+
+ // the history
+ private List<String> hist;
+
+ // the length of the history as of last save
+ private int lastSaved;
+
+ private ReplayableHistory(List<String> hist) {
+ this.hist = hist;
+ this.lastSaved = 0;
+ }
+
+ // factory for empty histories
+ static ReplayableHistory emptyHistory() {
+ return new ReplayableHistory(new ArrayList<>());
+ }
+
+ // factory for history stored in persistent storage
+ static ReplayableHistory fromPrevious(PersistentStorage prefs) {
+ // Read replay history from last jshell session
+ String prevReplay = prefs.get(REPLAY_RESTORE_KEY);
+ if (prevReplay == null) {
+ return null;
+ } else {
+ return new ReplayableHistory(Arrays.asList(prevReplay.split(RECORD_SEPARATOR)));
+ }
+
+ }
+
+ // store the history in persistent storage
+ void storeHistory(PersistentStorage prefs) {
+ if (hist.size() > lastSaved) {
+ // Prevent history overflow by calculating what will fit, starting
+ // with most recent
+ int sepLen = RECORD_SEPARATOR.length();
+ int length = 0;
+ int first = hist.size();
+ while (length < Preferences.MAX_VALUE_LENGTH && --first >= 0) {
+ length += hist.get(first).length() + sepLen;
+ }
+ if (first >= 0) {
+ hist = hist.subList(first + 1, hist.size());
+ }
+ String shist = String.join(RECORD_SEPARATOR, hist);
+ prefs.put(REPLAY_RESTORE_KEY, shist);
+ markSaved();
+ }
+ prefs.flush();
+ }
+
+ // add a snippet or command to the history
+ void add(String s) {
+ hist.add(s);
+ }
+
+ // return history to reloaded
+ Iterable<String> iterable() {
+ return hist;
+ }
+
+ // mark that persistent storage and current history are in sync
+ void markSaved() {
+ lastSaved = hist.size();
+ }
+ }
+
+ /**
* Is the input/output currently interactive
*
* @return true if console
@@ -756,10 +825,7 @@
// initialize JShell instance
resetState();
// Read replay history from last jshell session into previous history
- String prevReplay = prefs.get(REPLAY_RESTORE_KEY);
- if (prevReplay != null) {
- replayableHistoryPrevious = Arrays.asList(prevReplay.split(RECORD_SEPARATOR));
- }
+ replayableHistoryPrevious = ReplayableHistory.fromPrevious(prefs);
// load snippet/command files given on command-line
for (String loadFile : commandLineArgs.nonOptions()) {
runFile(loadFile, "jshell");
@@ -775,6 +841,13 @@
if (feedback.shouldDisplayCommandFluff()) {
hardmsg("jshell.msg.welcome", version());
}
+ // Be sure history is always saved so that user code isn't lost
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ @Override
+ public void run() {
+ replayableHistory.storeHistory(prefs);
+ }
+ });
// execute from user input
try (IOContext in = new ConsoleIOContext(this, cmdin, console)) {
start(in);
@@ -868,7 +941,7 @@
// Reset the replayable history, saving the old for restore
replayableHistoryPrevious = replayableHistory;
- replayableHistory = new ArrayList<>();
+ replayableHistory = ReplayableHistory.emptyHistory();
JShell.Builder builder =
JShell.builder()
.in(userin)
@@ -1933,20 +2006,7 @@
private boolean cmdExit() {
regenerateOnDeath = false;
live = false;
- if (!replayableHistory.isEmpty()) {
- // Prevent history overflow by calculating what will fit, starting
- // with most recent
- int sepLen = RECORD_SEPARATOR.length();
- int length = 0;
- int first = replayableHistory.size();
- while(length < Preferences.MAX_VALUE_LENGTH && --first >= 0) {
- length += replayableHistory.get(first).length() + sepLen;
- }
- String hist = String.join(RECORD_SEPARATOR,
- replayableHistory.subList(first + 1, replayableHistory.size()));
- prefs.put(REPLAY_RESTORE_KEY, hist);
- }
- prefs.flush();
+ replayableHistory.storeHistory(prefs);
fluffmsg("jshell.msg.goodbye");
return true;
}
@@ -2420,7 +2480,7 @@
if (!parseCommandLineLikeFlags(rawargs, ap)) {
return false;
}
- Iterable<String> history;
+ ReplayableHistory history;
if (ap.restore()) {
if (replayableHistoryPrevious == null) {
errormsg("jshell.err.reload.no.previous");
@@ -2432,7 +2492,13 @@
history = replayableHistory;
fluffmsg("jshell.err.reload.restarting.state");
}
- return doReload(history, !ap.quiet());
+ boolean success = doReload(history, !ap.quiet());
+ if (success && ap.restore()) {
+ // if we are restoring from previous, then if nothing was added
+ // before time of exit, there is nothing to save
+ replayableHistory.markSaved();
+ }
+ return success;
}
private boolean cmdEnv(String rawargs) {
@@ -2460,9 +2526,9 @@
return doReload(replayableHistory, false);
}
- private boolean doReload(Iterable<String> history, boolean echo) {
+ private boolean doReload(ReplayableHistory history, boolean echo) {
resetState();
- run(new ReloadIOContext(history,
+ run(new ReloadIOContext(history.iterable(),
echo ? cmdout : null));
return true;
}
--- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/FailOverExecutionControlProvider.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/FailOverExecutionControlProvider.java Thu Feb 02 21:55:45 2017 +0000
@@ -111,7 +111,8 @@
PrintWriter log = new PrintWriter(writer);
log.println("FailOverExecutionControlProvider:");
ex.printStackTrace(log);
- logger().fine(log.toString());
+ log.flush();
+ logger().fine(writer.toString());
// only care about the first, and only if they all fail
if (thrown == null) {
thrown = ex;
--- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/JdiDefaultExecutionControl.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/JdiDefaultExecutionControl.java Thu Feb 02 21:55:45 2017 +0000
@@ -102,7 +102,6 @@
Process process = jdii.process();
List<Consumer<String>> deathListeners = new ArrayList<>();
- deathListeners.add(s -> env.closeDown());
Util.detectJdiExitEvent(vm, s -> {
for (Consumer<String> h : deathListeners) {
h.accept(s);
@@ -120,7 +119,8 @@
Map<String, InputStream> input = new HashMap<>();
input.put("in", env.userIn());
return remoteInputOutput(socket.getInputStream(), out, outputs, input,
- (objIn, objOut) -> new JdiDefaultExecutionControl(objOut, objIn, vm, process, remoteAgent, deathListeners));
+ (objIn, objOut) -> new JdiDefaultExecutionControl(env,
+ objOut, objIn, vm, process, remoteAgent, deathListeners));
}
}
@@ -130,15 +130,20 @@
* @param cmdout the output for commands
* @param cmdin the input for responses
*/
- private JdiDefaultExecutionControl(ObjectOutput cmdout, ObjectInput cmdin,
+ private JdiDefaultExecutionControl(ExecutionEnv env,
+ ObjectOutput cmdout, ObjectInput cmdin,
VirtualMachine vm, Process process, String remoteAgent,
List<Consumer<String>> deathListeners) {
super(cmdout, cmdin);
this.vm = vm;
this.process = process;
this.remoteAgent = remoteAgent;
+ // We have now succeeded in establishing the connection.
+ // If there is an exit now it propagates all the way up
+ // and the VM should be disposed of.
+ deathListeners.add(s -> env.closeDown());
deathListeners.add(s -> disposeVM());
- }
+ }
@Override
public String invoke(String classname, String methodname)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testNonInlineHtmlTagRemoval/C.java Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, 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.
+ */
+
+public class C {
+ /**
+ * case1 <ul> <li> end of sentence. <li> more </ul>
+ */
+ public void case1() {}
+
+ /**
+ * case2 <ul compact> <li> end of sentence. <li> more </ul>
+ */
+ public void case2() {}
+
+ /**
+ * case3 <ul type="square"> <li> end of sentence. <li> more </ul>
+ */
+ public void case3() {}
+
+ /**
+ * case4 <ul type="a<b"> <li> end of sentence. <li> more </ul>
+ */
+ public void case4() {}
+
+ /**
+ * case5 <ul type="a>b"> <li> end of sentence. <li> more </ul>
+ */
+ public void case5() {}
+
+ /**
+ * case6 <ul type='a>b'> <li> end of sentence. <li> more </ul>
+ */
+ public void case6() {}
+
+ /**
+ * case7 <ul type='"a>b"'> <li> end of sentence. <li> more </ul>
+ */
+ public void case7() {}
+
+ /**
+ * case8 <ul type="'a>b'"> <li> end of sentence. <li> more </ul>
+ */
+ public void case8() {}
+
+ /**
+ * case9 <ul type="'a'>b"> <li> end of sentence. <li> more </ul>
+ */
+ public void case9() {}
+
+ /**
+ * caseA <ul type='"a">b'> <li> end of sentence. <li> more </ul>
+ */
+ public void caseA() {}
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testNonInlineHtmlTagRemoval/TestNonInlineHtmlTagRemoval.java Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2017, 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.
+ */
+
+/*
+ * @test
+ * @bug 8048628
+ * @summary Verify html inline tags are removed correctly in the first sentence.
+ * @library ../lib
+ * @modules jdk.javadoc
+ * @build JavadocTester
+ * @run main TestNonInlineHtmlTagRemoval
+ */
+
+public class TestNonInlineHtmlTagRemoval extends JavadocTester {
+
+ public static void main(String... args) throws Exception {
+ TestNonInlineHtmlTagRemoval tester = new TestNonInlineHtmlTagRemoval();
+ tester.runTests();
+ }
+
+ @Test
+ void test() {
+ javadoc("-d", "out",
+ "-sourcepath", testSrc,
+ testSrc("C.java"));
+ checkExit(Exit.OK);
+
+ checkOutput("C.html", true,
+ "<div class=\"block\">case1 end of sentence.</div>",
+ "<div class=\"block\">case2 end of sentence.</div>",
+ "<div class=\"block\">case3 end of sentence.</div>",
+ "<div class=\"block\">case4 end of sentence.</div>",
+ "<div class=\"block\">case5 end of sentence.</div>",
+ "<div class=\"block\">case6 end of sentence.</div>",
+ "<div class=\"block\">case7 end of sentence.</div>",
+ "<div class=\"block\">case8 end of sentence.</div>",
+ "<div class=\"block\">case9 end of sentence.</div>",
+ "<div class=\"block\">caseA end of sentence.</div>");
+ }
+}
--- a/langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, 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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 8162363 8167967
+ * @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 8162363 8167967 8172528
* @summary Test of the JavaFX doclet features.
* @author jvalenta
* @library ../lib
@@ -50,93 +50,103 @@
checkOutput("pkg1/C.html", true,
"<dt><span class=\"seeLabel\">See Also:</span></dt>\n"
- + "<dd><a href=\"../pkg1/C.html#getRate--\"><code>getRate()</code></a>, \n"
- + "<a href=\"../pkg1/C.html#setRate-double-\">"
- + "<code>setRate(double)</code></a></dd>",
+ + "<dd><a href=\"../pkg1/C.html#getRate--\"><code>getRate()</code></a>, \n"
+ + "<a href=\"../pkg1/C.html#setRate-double-\">"
+ + "<code>setRate(double)</code></a></dd>",
"<pre>public final void setRate(double value)</pre>\n"
- + "<div class=\"block\">Sets the value of the property rate.</div>\n"
- + "<dl>\n"
- + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>",
+ + "<div class=\"block\">Sets the value of the property rate.</div>\n"
+ + "<dl>\n"
+ + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>",
"<pre>public final double getRate()</pre>\n"
- + "<div class=\"block\">Gets the value of the property rate.</div>\n"
- + "<dl>\n"
- + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>",
+ + "<div class=\"block\">Gets the value of the property rate.</div>\n"
+ + "<dl>\n"
+ + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>",
"<td class=\"colFirst\"><code><a href=\"../pkg1/C.DoubleProperty.html\" "
- + "title=\"class in pkg1\">C.DoubleProperty</a></code></td>\n"
- + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
- + "<a href=\"../pkg1/C.html#rateProperty\">rate</a></span></code></th>\n"
- + "<td class=\"colLast\">\n"
- + "<div class=\"block\">Defines the direction/speed at which the "
- + "<code>Timeline</code> is expected to\n"
- + " be played.</div>\n</td>",
+ + "title=\"class in pkg1\">C.DoubleProperty</a></code></td>\n"
+ + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
+ + "<a href=\"../pkg1/C.html#rateProperty\">rate</a></span></code></th>\n"
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">Defines the direction/speed at which the "
+ + "<code>Timeline</code> is expected to\n"
+ + " be played.</div>\n</td>",
"<span class=\"simpleTagLabel\">Default value:</span>",
"<span class=\"simpleTagLabel\">Since:</span></dt>\n"
- + "<dd>JavaFX 8.0</dd>",
+ + "<dd>JavaFX 8.0</dd>",
"<p>Sets the value of the property <code>Property</code>",
"<p>Gets the value of the property <code>Property</code>",
"<span class=\"simpleTagLabel\">Property description:</span>",
"<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
- + "<a href=\"../pkg1/C.html#setTestMethodProperty--\">"
- + "setTestMethodProperty</a></span>()</code></th>",
+ + "<a href=\"../pkg1/C.html#setTestMethodProperty--\">"
+ + "setTestMethodProperty</a></span>()</code></th>",
"<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
- + "<a href=\"../pkg1/C.html#pausedProperty\">paused</a></span></code></th>\n"
- + "<td class=\"colLast\">\n"
- + "<div class=\"block\">Defines if paused.</div>",
+ + "<a href=\"../pkg1/C.html#pausedProperty\">paused</a></span></code></th>\n"
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">Defines if paused.</div>",
"<h4>paused</h4>\n"
- + "<pre>public final <a href=\"../pkg1/C.BooleanProperty.html\" "
- + "title=\"class in pkg1\">C.BooleanProperty</a> pausedProperty</pre>\n"
- + "<div class=\"block\">Defines if paused. The second line.</div>",
+ + "<pre>public final <a href=\"../pkg1/C.BooleanProperty.html\" "
+ + "title=\"class in pkg1\">C.BooleanProperty</a> pausedProperty</pre>\n"
+ + "<div class=\"block\">Defines if paused. The second line.</div>",
"<h4>isPaused</h4>\n"
- + "<pre>public final double isPaused()</pre>\n"
- + "<div class=\"block\">Gets the value of the property paused.</div>",
+ + "<pre>public final double isPaused()</pre>\n"
+ + "<div class=\"block\">Gets the value of the property paused.</div>",
"<h4>setPaused</h4>\n"
- + "<pre>public final void setPaused(boolean value)</pre>\n"
- + "<div class=\"block\">Sets the value of the property paused.</div>\n"
- + "<dl>\n"
- + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
- + "<dd>Defines if paused. The second line.</dd>\n"
- + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
- + "<dd>false</dd>",
+ + "<pre>public final void setPaused(boolean value)</pre>\n"
+ + "<div class=\"block\">Sets the value of the property paused.</div>\n"
+ + "<dl>\n"
+ + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
+ + "<dd>Defines if paused. The second line.</dd>\n"
+ + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
+ + "<dd>false</dd>",
"<h4>isPaused</h4>\n"
- + "<pre>public final double isPaused()</pre>\n"
- + "<div class=\"block\">Gets the value of the property paused.</div>\n"
- + "<dl>\n"
- + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
- + "<dd>Defines if paused. The second line.</dd>\n"
- + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
- + "<dd>false</dd>",
+ + "<pre>public final double isPaused()</pre>\n"
+ + "<div class=\"block\">Gets the value of the property paused.</div>\n"
+ + "<dl>\n"
+ + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
+ + "<dd>Defines if paused. The second line.</dd>\n"
+ + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
+ + "<dd>false</dd>",
"<h4>rate</h4>\n"
- + "<pre>public final <a href=\"../pkg1/C.DoubleProperty.html\" "
- + "title=\"class in pkg1\">C.DoubleProperty</a> rateProperty</pre>\n"
- + "<div class=\"block\">Defines the direction/speed at which the "
- + "<code>Timeline</code> is expected to\n"
- + " be played. This is the second line.</div>",
+ + "<pre>public final <a href=\"../pkg1/C.DoubleProperty.html\" "
+ + "title=\"class in pkg1\">C.DoubleProperty</a> rateProperty</pre>\n"
+ + "<div class=\"block\">Defines the direction/speed at which the "
+ + "<code>Timeline</code> is expected to\n"
+ + " be played. This is the second line.</div>",
"<h4>setRate</h4>\n"
- + "<pre>public final void setRate(double value)</pre>\n"
- + "<div class=\"block\">Sets the value of the property rate.</div>\n"
- + "<dl>\n"
- + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
- + "<dd>Defines the direction/speed at which the <code>Timeline</code> is expected to\n"
- + " be played. This is the second line.</dd>\n"
- + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
- + "<dd>11</dd>\n"
- + "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
- + "<dd>JavaFX 8.0</dd>",
+ + "<pre>public final void setRate(double value)</pre>\n"
+ + "<div class=\"block\">Sets the value of the property rate.</div>\n"
+ + "<dl>\n"
+ + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
+ + "<dd>Defines the direction/speed at which the <code>Timeline</code> is expected to\n"
+ + " be played. This is the second line.</dd>\n"
+ + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
+ + "<dd>11</dd>\n"
+ + "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
+ + "<dd>JavaFX 8.0</dd>",
"<h4>getRate</h4>\n"
- + "<pre>public final double getRate()</pre>\n"
- + "<div class=\"block\">Gets the value of the property rate.</div>\n"
- + "<dl>\n"
- + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
- + "<dd>Defines the direction/speed at which the <code>Timeline</code> is expected to\n"
- + " be played. This is the second line.</dd>\n"
- + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
- + "<dd>11</dd>\n"
- + "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
- + "<dd>JavaFX 8.0</dd>",
+ + "<pre>public final double getRate()</pre>\n"
+ + "<div class=\"block\">Gets the value of the property rate.</div>\n"
+ + "<dl>\n"
+ + "<dt><span class=\"simpleTagLabel\">Property description:</span></dt>\n"
+ + "<dd>Defines the direction/speed at which the <code>Timeline</code> is expected to\n"
+ + " be played. This is the second line.</dd>\n"
+ + "<dt><span class=\"simpleTagLabel\">Default value:</span></dt>\n"
+ + "<dd>11</dd>\n"
+ + "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n"
+ + "<dd>JavaFX 8.0</dd>",
+ "<h3>Property Summary</h3>\n"
+ + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+ + "<caption><span>Properties</span><span class=\"tabEnd\"> </span></caption>",
"");
checkOutput("pkg1/C.html", false,
- "A()");
+ "A()",
+ "<h3>Property Summary</h3>\n"
+ + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+ + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\"> </span>"
+ + "</span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a>"
+ + "</span><span class=\"tabEnd\"> </span></span><span id=\"t4\" class=\"tableTab\"><span>"
+ + "<a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\"> </span></span>"
+ + "</caption>");
checkOutput("index-all.html", true,
"<div class=\"block\">Gets the value of the property paused.</div>",
@@ -193,7 +203,19 @@
+ "</li>\n"
+ "</ul>\n"
+ "</li>\n"
- + "</ul>");
+ + "</ul>",
+ "<h3>Property Summary</h3>\n"
+ + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+ + "<caption><span>Properties</span><span class=\"tabEnd\"> </span></caption>");
+
+ checkOutput("pkg2/Test.html", false,
+ "<h3>Property Summary</h3>\n"
+ + "<table class=\"memberSummary\" summary=\"Property Summary table, listing properties, and an explanation\">\n"
+ + "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span><span class=\"tabEnd\"> </span>"
+ + "</span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">Instance Methods</a>"
+ + "</span><span class=\"tabEnd\"> </span></span><span id=\"t4\" class=\"tableTab\"><span>"
+ + "<a href=\"javascript:show(8);\">Concrete Methods</a></span><span class=\"tabEnd\"> </span></span>"
+ + "</caption>");
}
/*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testNonInlineHtmlTagRemoval/C.java Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, 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.
+ */
+
+public class C {
+ /**
+ * case1 <ul> <li> end of sentence. <li> more </ul>
+ */
+ public void case1() {}
+
+ /**
+ * case2 <ul compact> <li> end of sentence. <li> more </ul>
+ */
+ public void case2() {}
+
+ /**
+ * case3 <ul type="square"> <li> end of sentence. <li> more </ul>
+ */
+ public void case3() {}
+
+ /**
+ * case4 <ul type="a<b"> <li> end of sentence. <li> more </ul>
+ */
+ public void case4() {}
+
+ /**
+ * case5 <ul type="a>b"> <li> end of sentence. <li> more </ul>
+ */
+ public void case5() {}
+
+ /**
+ * case6 <ul type='a>b'> <li> end of sentence. <li> more </ul>
+ */
+ public void case6() {}
+
+ /**
+ * case7 <ul type='"a>b"'> <li> end of sentence. <li> more </ul>
+ */
+ public void case7() {}
+
+ /**
+ * case8 <ul type="'a>b'"> <li> end of sentence. <li> more </ul>
+ */
+ public void case8() {}
+
+ /**
+ * case9 <ul type="'a'>b"> <li> end of sentence. <li> more </ul>
+ */
+ public void case9() {}
+
+ /**
+ * caseA <ul type='"a">b'> <li> end of sentence. <li> more </ul>
+ */
+ public void caseA() {}
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testNonInlineHtmlTagRemoval/TestNonInlineHtmlTagRemoval.java Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2017, 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.
+ */
+
+/*
+ * @test
+ * @bug 8048628
+ * @summary Verify html inline tags are removed correctly in the first sentence.
+ * @library ../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @build JavadocTester
+ * @run main TestNonInlineHtmlTagRemoval
+ */
+
+public class TestNonInlineHtmlTagRemoval extends JavadocTester {
+
+ public static void main(String... args) throws Exception {
+ TestNonInlineHtmlTagRemoval tester = new TestNonInlineHtmlTagRemoval();
+ tester.runTests();
+ }
+
+ @Test
+ void test() {
+ javadoc("-d", "out",
+ "-sourcepath", testSrc,
+ testSrc("C.java"));
+ checkExit(Exit.OK);
+
+ checkOutput("C.html", true,
+ "<div class=\"block\">case1 end of sentence.</div>",
+ "<div class=\"block\">case2 end of sentence.</div>",
+ "<div class=\"block\">case3 end of sentence.</div>",
+ "<div class=\"block\">case4 end of sentence.</div>",
+ "<div class=\"block\">case5 end of sentence.</div>",
+ "<div class=\"block\">case6 end of sentence.</div>",
+ "<div class=\"block\">case7 end of sentence.</div>",
+ "<div class=\"block\">case8 end of sentence.</div>",
+ "<div class=\"block\">case9 end of sentence.</div>",
+ "<div class=\"block\">caseA end of sentence.</div>");
+ }
+}
--- a/langtools/test/jdk/javadoc/doclet/testOrdering/TestOrdering.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testOrdering/TestOrdering.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017, 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
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8039410 8042601 8042829 8049393 8050031 8155061 8155995 8167967
+ * @bug 8039410 8042601 8042829 8049393 8050031 8155061 8155995 8167967 8169813
* @summary test to determine if members are ordered correctly
* @library ../lib/
* @modules jdk.javadoc/jdk.javadoc.internal.tool
@@ -494,23 +494,23 @@
String[] composeTestVectors() {
List<String> testList = new ArrayList<>();
- testList.addAll(Arrays.asList(expectedPackageOrdering));
for (String x : expectedEnumOrdering) {
testList.add(x.replace("REPLACE_ME", "<Unnamed>"));
- for (int i = 0; i < MAX_PACKAGES; i++) {
- String wpkg = "add" + i;
- testList.add(wpkg + "/" + x.replace("REPLACE_ME",
- wpkg));
- String dpkg = wpkg;
- for (int j = 1; j < MAX_SUBPACKAGES_DEPTH; j++) {
- dpkg = dpkg + "/" + "add";
+ }
+ for (int i = 0; i < MAX_PACKAGES; i++) {
+ String wpkg = "add" + i;
+ for (String x : expectedEnumOrdering) {
+ testList.add(wpkg + "/" + x.replace("REPLACE_ME", wpkg));
+ }
+ String dpkg = wpkg;
+ for (int j = 1; j < MAX_SUBPACKAGES_DEPTH; j++) {
+ dpkg = dpkg + "/" + "add";
+ for (String x : expectedEnumOrdering) {
testList.add(dpkg + "/" + x.replace("REPLACE_ME", pathToPackage(dpkg)));
}
}
}
- testList.addAll(Arrays.asList(expectedFieldOrdering));
-
for (String x : expectedMethodOrdering) {
testList.add(x);
for (int i = 0; i < MAX_PACKAGES; i++) {
@@ -523,6 +523,8 @@
}
}
}
+ testList.addAll(Arrays.asList(expectedPackageOrdering));
+ testList.addAll(Arrays.asList(expectedFieldOrdering));
return testList.toArray(new String[testList.size()]);
}
--- a/langtools/test/jdk/jshell/ExecutionControlTestBase.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/jdk/jshell/ExecutionControlTestBase.java Thu Feb 02 21:55:45 2017 +0000
@@ -23,6 +23,7 @@
import javax.tools.Diagnostic;
+import org.testng.annotations.Test;
import jdk.jshell.VarSnippet;
import static jdk.jshell.Snippet.Status.VALID;
@@ -30,6 +31,7 @@
public class ExecutionControlTestBase extends KullaTesting {
+ @Test
public void classesDeclaration() {
assertEval("interface A { }");
assertEval("class B implements A { }");
@@ -45,6 +47,7 @@
assertActiveKeys();
}
+ @Test
public void interfaceTest() {
String interfaceSource
= "interface A {\n"
@@ -72,6 +75,7 @@
assertEval("new B.Inner2();");
}
+ @Test
public void variables() {
VarSnippet snx = varKey(assertEval("int x = 10;"));
VarSnippet sny = varKey(assertEval("String y = \"hi\";"));
@@ -83,6 +87,7 @@
assertActiveKeys();
}
+ @Test
public void methodOverload() {
assertEval("int m() { return 1; }");
assertEval("int m(int x) { return 2; }");
@@ -107,6 +112,7 @@
assertActiveKeys();
}
+ @Test
public void testExprSanity() {
assertEval("int x = 3;", "3");
assertEval("int y = 4;", "4");
@@ -114,6 +120,7 @@
assertActiveKeys();
}
+ @Test
public void testImportOnDemand() {
assertImportKeyMatch("import java.util.*;", "java.util.*", TYPE_IMPORT_ON_DEMAND_SUBKIND, added(VALID));
assertEval("List<Integer> list = new ArrayList<>();");
--- a/langtools/test/jdk/jshell/FailOverDirectExecutionControlTest.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/jdk/jshell/FailOverDirectExecutionControlTest.java Thu Feb 02 21:55:45 2017 +0000
@@ -61,7 +61,8 @@
ClassLoader ccl;
ExecutionControlProvider provider;
- Map<Level, List<String>> logged = new HashMap<>();
+ LogTestHandler hndlr;
+ Map<Level, List<String>> logged;
private class LogTestHandler extends Handler {
@@ -95,7 +96,9 @@
public void setUp() {
Logger logger = Logger.getLogger("jdk.jshell.execution");
logger.setLevel(Level.ALL);
- logger.addHandler(new LogTestHandler());
+ hndlr = new LogTestHandler();
+ logger.addHandler(hndlr);
+ logged = new HashMap<>();
Compiler compiler = new Compiler();
Path modDir = Paths.get("mod");
compiler.compile(modDir,
@@ -133,6 +136,8 @@
@Override
public void tearDown() {
super.tearDown();
+ Logger logger = Logger.getLogger("jdk.jshell.execution");
+ logger.removeHandler(hndlr);
Thread.currentThread().setContextClassLoader(ccl);
}
--- a/langtools/test/jdk/jshell/FailOverExecutionControlDyingLaunchTest.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/jdk/jshell/FailOverExecutionControlDyingLaunchTest.java Thu Feb 02 21:55:45 2017 +0000
@@ -27,7 +27,7 @@
* @summary Test that fail-over works for fail-over ExecutionControl generators.
* @modules jdk.jshell/jdk.jshell.execution
* jdk.jshell/jdk.jshell.spi
- * @build KullaTesting ExecutionControlTestBase
+ * @build KullaTesting ExecutionControlTestBase DyingRemoteAgent
* @run testng FailOverExecutionControlDyingLaunchTest
*/
--- a/langtools/test/tools/javac/file/LimitedImage.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/tools/javac/file/LimitedImage.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, 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
@@ -74,6 +74,7 @@
);
//check proper diagnostics when zip/jar FS not present:
+ System.err.println("Test " + testJar + " on classpath");
actualOutput = new JavacTask(tb, Mode.CMDLINE)
.classpath(testJar)
.options("-XDrawDiagnostics")
@@ -84,9 +85,10 @@
.getOutputLines(OutputKind.DIRECT);
if (!expectedOutput.equals(actualOutput)) {
- throw new AssertionError("Unexpected output: " + actualOutput);
+ throw new AssertionError("Unexpected output");
}
+ System.err.println("Test " + testJar + " on sourcepath");
actualOutput = new JavacTask(tb, Mode.CMDLINE)
.sourcepath(testJar)
.options("-XDrawDiagnostics")
@@ -97,9 +99,10 @@
.getOutputLines(OutputKind.DIRECT);
if (!expectedOutput.equals(actualOutput)) {
- throw new AssertionError("Unexpected output: " + actualOutput);
+ throw new AssertionError("Unexpected output");
}
+ System.err.println("Test " + testJar + " on modulepath");
actualOutput = new JavacTask(tb, Mode.CMDLINE)
.options("-XDrawDiagnostics",
"--module-path", testJar.toString())
@@ -110,7 +113,7 @@
.getOutputLines(OutputKind.DIRECT);
if (!expectedOutput.equals(actualOutput)) {
- throw new AssertionError("Unexpected output: " + actualOutput);
+ throw new AssertionError("Unexpected output");
}
expectedOutput = Arrays.asList(
@@ -118,6 +121,7 @@
"1 error"
);
+ System.err.println("Test directory containing " + testJar + " on modulepath");
actualOutput = new JavacTask(tb, Mode.CMDLINE)
.classpath()
.options("-XDrawDiagnostics",
@@ -129,7 +133,7 @@
.getOutputLines(OutputKind.DIRECT);
if (!expectedOutput.equals(actualOutput)) {
- throw new AssertionError("Unexpected output: " + actualOutput);
+ throw new AssertionError("Unexpected output");
}
}
--- a/langtools/test/tools/javac/modules/ModulesAndModuleSourcePathTest.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/tools/javac/modules/ModulesAndModuleSourcePathTest.java Thu Feb 02 21:55:45 2017 +0000
@@ -22,7 +22,8 @@
*/
/**
- * @test 8165102
+ * @test
+ * @bug 8165102
* @summary incorrect message from javac
* @library /tools/lib
* @modules
--- a/langtools/test/tools/javac/processing/model/element/TestPackageElement.java Thu Feb 02 21:20:39 2017 +0000
+++ b/langtools/test/tools/javac/processing/model/element/TestPackageElement.java Thu Feb 02 21:55:45 2017 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2017, 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
@@ -23,16 +23,18 @@
/*
* @test
- * @bug 6449798 6399404
+ * @bug 6449798 6399404 8173776
* @summary Test basic workings of PackageElement
* @author Joseph D. Darcy
* @library /tools/javac/lib
* @modules java.compiler
* jdk.compiler
* @build JavacTestingAbstractProcessor TestPackageElement
- * @compile -processor TestPackageElement -proc:only TestPackageElement.java
+ * @compile -processor TestPackageElement -proc:only TestPackageElement.java
+ * @compile -processor TestPackageElement -proc:only --release 8 TestPackageElement.java
*/
+import java.util.Objects;
import java.util.Set;
import javax.annotation.processing.*;
import javax.lang.model.SourceVersion;
@@ -67,7 +69,22 @@
PackageElement javaLang = eltUtils.getPackageElement("java.lang");
if (javaLang.isUnnamed())
throw new RuntimeException("Package java.lang is unnamed!");
+
+ testEnclosingElement(javaLang);
}
return true;
}
+
+ void testEnclosingElement(PackageElement javaLang) {
+ SourceVersion version = processingEnv.getSourceVersion();
+ Element enclosing = javaLang.getEnclosingElement();
+ Element expectedEnclosing =
+ (version.compareTo(RELEASE_9) < 0) ? // No modules
+ null :
+ eltUtils.getModuleElement("java.base");
+
+ if (!Objects.equals(enclosing, expectedEnclosing))
+ throw new RuntimeException("Unexpected enclosing element under source version " +
+ version);
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/model/util/printing/module-info.java Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,18 @@
+/*
+ * @test
+ * @bug 8173609
+ * @summary printing of modules
+ * @compile/ref=module-info.out -Xprint p/P.java module-info.java
+ */
+
+/**
+ * Printing of modules
+ */
+@Deprecated
+module printing {
+ requires static transitive java.base;
+ exports p to m.m1, m.m2;
+ opens p to m.m1, m.m2;
+ uses p.P;
+ provides p.P with p.P.P1, p.P.P2;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/model/util/printing/module-info.out Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,27 @@
+package p;
+
+public class P {
+
+ public static class P1 extends p.P {
+
+ public P1();
+ }
+
+ public static class P2 extends p.P {
+
+ public P2();
+ }
+
+ public P();
+}
+/**
+ * Printing of modules
+ */
+@java.lang.Deprecated
+module printing {
+ requires static transitive java.base;
+ exports p to m.m1, m.m2;
+ opens p to m.m1, m.m2;
+ uses p.P;
+ provides p.P with p.P.P1, p.P.P2;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/processing/model/util/printing/p/P.java Thu Feb 02 21:55:45 2017 +0000
@@ -0,0 +1,6 @@
+package p;
+
+public class P {
+ public static class P1 extends P {}
+ public static class P2 extends P {}
+}