Merge changes Id1a90f5f,Ie10e5c45 into expected_upstream
* changes:
Merge files from jdk11u/jdk-11.0.13-ga into the expected_upstream branch
Import files from jdk11u/jdk-11.0.13-ga
diff --git a/ojluni/src/main/java/java/text/AttributedString.java b/ojluni/src/main/java/java/text/AttributedString.java
index fa398e9..2e6e0e7 100644
--- a/ojluni/src/main/java/java/text/AttributedString.java
+++ b/ojluni/src/main/java/java/text/AttributedString.java
@@ -48,21 +48,18 @@
*/
public class AttributedString {
-
- // since there are no vectors of int, we have to use arrays.
- // We allocate them in chunks of 10 elements so we don't have to allocate all the time.
- private static final int ARRAY_SIZE_INCREMENT = 10;
-
// field holding the text
String text;
- // fields holding run attribute information
- // run attributes are organized by run
- int runArraySize; // current size of the arrays
- int runCount; // actual number of runs, <= runArraySize
- int runStarts[]; // start index for each run
- Vector<Attribute> runAttributes[]; // vector of attribute keys for each run
- Vector<Object> runAttributeValues[]; // parallel vector of attribute values for each run
+ // Fields holding run attribute information.
+ // Run attributes are organized by run.
+ // Arrays are always of equal lengths (the current capacity).
+ // Since there are no vectors of int, we have to use arrays.
+ private static final int INITIAL_CAPACITY = 10;
+ int runCount; // actual number of runs, <= current capacity
+ int[] runStarts; // start index for each run
+ Vector<Attribute>[] runAttributes; // vector of attribute keys for each run
+ Vector<Object>[] runAttributeValues; // parallel vector of attribute values for each run
/**
* Constructs an AttributedString instance with the given
@@ -88,7 +85,7 @@
text = buffer.toString();
- if (text.length() > 0) {
+ if (!text.isEmpty()) {
// Determine the runs, creating a new run when the attributes
// differ.
int offset = 0;
@@ -147,7 +144,7 @@
}
this.text = text;
- if (text.length() == 0) {
+ if (text.isEmpty()) {
if (attributes.isEmpty())
return;
throw new IllegalArgumentException("Can't add attribute to 0-length text");
@@ -243,11 +240,11 @@
throw new IllegalArgumentException("Invalid substring range");
// Copy the given string
- StringBuffer textBuffer = new StringBuffer();
+ StringBuilder textBuilder = new StringBuilder();
text.setIndex(beginIndex);
for (char c = text.current(); text.getIndex() < endIndex; c = text.next())
- textBuffer.append(c);
- this.text = textBuffer.toString();
+ textBuilder.append(c);
+ this.text = textBuilder.toString();
if (beginIndex == endIndex)
return;
@@ -335,7 +332,7 @@
* @param beginIndex Index of the first character of the range.
* @param endIndex Index of the character following the last character of the range.
* @exception NullPointerException if <code>attribute</code> is null.
- * @exception IllegalArgumentException if beginIndex is less then 0, endIndex is
+ * @exception IllegalArgumentException if beginIndex is less than 0, endIndex is
* greater than the length of the string, or beginIndex and endIndex together don't
* define a non-empty subrange of the string.
*/
@@ -360,7 +357,7 @@
* @param endIndex Index of the character following the last
* character of the range.
* @exception NullPointerException if <code>attributes</code> is null.
- * @exception IllegalArgumentException if beginIndex is less then
+ * @exception IllegalArgumentException if beginIndex is less than
* 0, endIndex is greater than the length of the string, or
* beginIndex and endIndex together don't define a non-empty
* subrange of the string and the attributes parameter is not an
@@ -416,18 +413,17 @@
private final void createRunAttributeDataVectors() {
// use temporary variables so things remain consistent in case of an exception
- int newRunStarts[] = new int[ARRAY_SIZE_INCREMENT];
+ int[] newRunStarts = new int[INITIAL_CAPACITY];
@SuppressWarnings("unchecked")
- Vector<Attribute> newRunAttributes[] = (Vector<Attribute>[]) new Vector<?>[ARRAY_SIZE_INCREMENT];
+ Vector<Attribute>[] newRunAttributes = (Vector<Attribute>[]) new Vector<?>[INITIAL_CAPACITY];
@SuppressWarnings("unchecked")
- Vector<Object> newRunAttributeValues[] = (Vector<Object>[]) new Vector<?>[ARRAY_SIZE_INCREMENT];
+ Vector<Object>[] newRunAttributeValues = (Vector<Object>[]) new Vector<?>[INITIAL_CAPACITY];
runStarts = newRunStarts;
runAttributes = newRunAttributes;
runAttributeValues = newRunAttributeValues;
- runArraySize = ARRAY_SIZE_INCREMENT;
runCount = 1; // assume initial run starting at index 0
}
@@ -465,25 +461,22 @@
// we'll have to break up a run
// first, make sure we have enough space in our arrays
- if (runCount == runArraySize) {
- int newArraySize = runArraySize + ARRAY_SIZE_INCREMENT;
- int newRunStarts[] = new int[newArraySize];
+ int currentCapacity = runStarts.length;
+ if (runCount == currentCapacity) {
+ // We need to resize - we grow capacity by 25%.
+ int newCapacity = currentCapacity + (currentCapacity >> 2);
- @SuppressWarnings("unchecked")
- Vector<Attribute> newRunAttributes[] = (Vector<Attribute>[]) new Vector<?>[newArraySize];
+ // use temporary variables so things remain consistent in case of an exception
+ int[] newRunStarts =
+ Arrays.copyOf(runStarts, newCapacity);
+ Vector<Attribute>[] newRunAttributes =
+ Arrays.copyOf(runAttributes, newCapacity);
+ Vector<Object>[] newRunAttributeValues =
+ Arrays.copyOf(runAttributeValues, newCapacity);
- @SuppressWarnings("unchecked")
- Vector<Object> newRunAttributeValues[] = (Vector<Object>[]) new Vector<?>[newArraySize];
-
- for (int i = 0; i < runArraySize; i++) {
- newRunStarts[i] = runStarts[i];
- newRunAttributes[i] = runAttributes[i];
- newRunAttributeValues[i] = runAttributeValues[i];
- }
runStarts = newRunStarts;
runAttributes = newRunAttributes;
runAttributeValues = newRunAttributeValues;
- runArraySize = newArraySize;
}
// make copies of the attribute information of the old run that the new one used to be part of
@@ -587,7 +580,7 @@
* @param beginIndex the index of the first character
* @param endIndex the index of the character following the last character
* @return an iterator providing access to the text and its attributes
- * @exception IllegalArgumentException if beginIndex is less then 0,
+ * @exception IllegalArgumentException if beginIndex is less than 0,
* endIndex is greater than the length of the string, or beginIndex is
* greater than endIndex.
*/
@@ -674,7 +667,7 @@
}
// returns whether the two objects are either both null or equal
- private final static boolean valuesMatch(Object value1, Object value2) {
+ private static final boolean valuesMatch(Object value1, Object value2) {
if (value1 == null) {
return value2 == null;
} else {
@@ -739,7 +732,7 @@
// the iterator class associated with this string class
- final private class AttributedStringIterator implements AttributedCharacterIterator {
+ private final class AttributedStringIterator implements AttributedCharacterIterator {
// note on synchronization:
// we don't synchronize on the iterator, assuming that an iterator is only used in one thread.
@@ -1052,7 +1045,7 @@
// the map class associated with this string class, giving access to the attributes of one run
- final private class AttributeMap extends AbstractMap<Attribute,Object> {
+ private final class AttributeMap extends AbstractMap<Attribute,Object> {
int runIndex;
int beginIndex;
diff --git a/ojluni/src/main/java/java/text/Bidi.java b/ojluni/src/main/java/java/text/Bidi.java
index 3d0e138..35a9b36 100644
--- a/ojluni/src/main/java/java/text/Bidi.java
+++ b/ojluni/src/main/java/java/text/Bidi.java
@@ -185,7 +185,7 @@
AttributedString astr = new AttributedString("");
Bidi newBidi = new Bidi(astr.getIterator());
- return bidiBase.setLine(this, bidiBase, newBidi, newBidi.bidiBase,lineStart, lineLimit);
+ return bidiBase.setLine(this, bidiBase, newBidi, newBidi.bidiBase, lineStart, lineLimit);
}
/**
diff --git a/ojluni/src/main/java/java/text/BreakIterator.java b/ojluni/src/main/java/java/text/BreakIterator.java
index f5e53c4..ffb5d59 100644
--- a/ojluni/src/main/java/java/text/BreakIterator.java
+++ b/ojluni/src/main/java/java/text/BreakIterator.java
@@ -68,19 +68,19 @@
* (word, line, sentence, and so on). You must use a different iterator
* for each unit boundary analysis you wish to perform.
*
- * <p><a name="line"></a>
+ * <p><a id="line"></a>
* Line boundary analysis determines where a text string can be
* broken when line-wrapping. The mechanism correctly handles
* punctuation and hyphenated words. Actual line breaking needs
* to also consider the available line width and is handled by
* higher-level software.
*
- * <p><a name="sentence"></a>
+ * <p><a id="sentence"></a>
* Sentence boundary analysis allows selection with correct interpretation
* of periods within numbers and abbreviations, and trailing punctuation
* marks such as quotation marks and parentheses.
*
- * <p><a name="word"></a>
+ * <p><a id="word"></a>
* Word boundary analysis is used by search and replace functions, as
* well as within text editing applications that allow the user to
* select words with a double click. Word selection provides correct
@@ -88,7 +88,7 @@
* words. Characters that are not part of a word, such as symbols
* or punctuation marks, have word-breaks on both sides.
*
- * <p><a name="character"></a>
+ * <p><a id="character"></a>
* Character boundary analysis allows users to interact with characters
* as they expect to, for example, when moving the cursor through a text
* string. Character boundary analysis provides correct navigation
@@ -221,6 +221,7 @@
* and the next is a word; otherwise, it's the material between words.)
* </blockquote>
*
+ * @since 1.1
* @see CharacterIterator
*
*/
diff --git a/ojluni/src/main/java/java/text/CalendarBuilder.java b/ojluni/src/main/java/java/text/CalendarBuilder.java
index a8246b6..cb30a35 100644
--- a/ojluni/src/main/java/java/text/CalendarBuilder.java
+++ b/ojluni/src/main/java/java/text/CalendarBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2014, 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
@@ -26,6 +26,7 @@
package java.text;
import java.util.Calendar;
+import java.util.StringJoiner;
import static java.util.GregorianCalendar.*;
/**
@@ -146,19 +147,13 @@
}
public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("CalendarBuilder:[");
+ StringJoiner sj = new StringJoiner(",", "CalendarBuilder:[", "]");
for (int i = 0; i < field.length; i++) {
if (isSet(i)) {
- sb.append(i).append('=').append(field[MAX_FIELD + i]).append(',');
+ sj.add(i + "=" + field[MAX_FIELD + i]);
}
}
- int lastIndex = sb.length() - 1;
- if (sb.charAt(lastIndex) == ',') {
- sb.setLength(lastIndex);
- }
- sb.append(']');
- return sb.toString();
+ return sj.toString();
}
static int toISODayOfWeek(int calendarDayOfWeek) {
diff --git a/ojluni/src/main/java/java/text/CharacterIterator.java b/ojluni/src/main/java/java/text/CharacterIterator.java
index efa7ab4..b6e5e8b 100644
--- a/ojluni/src/main/java/java/text/CharacterIterator.java
+++ b/ojluni/src/main/java/java/text/CharacterIterator.java
@@ -98,6 +98,7 @@
* }
* }</pre>
*
+ * @since 1.1
* @see StringCharacterIterator
* @see AttributedCharacterIterator
*/
diff --git a/ojluni/src/main/java/java/text/ChoiceFormat.java b/ojluni/src/main/java/java/text/ChoiceFormat.java
index f55837f..01db20b 100644
--- a/ojluni/src/main/java/java/text/ChoiceFormat.java
+++ b/ojluni/src/main/java/java/text/ChoiceFormat.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, 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
@@ -151,7 +151,7 @@
* }</pre>
* </blockquote>
*
- * <h3><a name="synchronization">Synchronization</a></h3>
+ * <h3><a id="synchronization">Synchronization</a></h3>
*
* <p>
* Choice formats are not synchronized.
@@ -163,6 +163,7 @@
* @see DecimalFormat
* @see MessageFormat
* @author Mark Davis
+ * @since 1.1
*/
public class ChoiceFormat extends NumberFormat {
@@ -172,6 +173,8 @@
/**
* Sets the pattern.
* @param newPattern See the class description.
+ * @exception NullPointerException if {@code newPattern}
+ * is {@code null}
*/
public void applyPattern(String newPattern) {
StringBuffer[] segments = new StringBuffer[2];
@@ -199,26 +202,26 @@
segments[part].append(ch);
} else if (ch == '<' || ch == '#' || ch == '\u2264') {
if (segments[0].length() == 0) {
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException("Each interval must"
+ + " contain a number before a format");
}
- try {
- String tempBuffer = segments[0].toString();
- if (tempBuffer.equals("\u221E")) {
- startValue = Double.POSITIVE_INFINITY;
- } else if (tempBuffer.equals("-\u221E")) {
- startValue = Double.NEGATIVE_INFINITY;
- } else {
- startValue = Double.valueOf(segments[0].toString()).doubleValue();
- }
- } catch (Exception e) {
- throw new IllegalArgumentException();
+
+ String tempBuffer = segments[0].toString();
+ if (tempBuffer.equals("\u221E")) {
+ startValue = Double.POSITIVE_INFINITY;
+ } else if (tempBuffer.equals("-\u221E")) {
+ startValue = Double.NEGATIVE_INFINITY;
+ } else {
+ startValue = Double.parseDouble(tempBuffer);
}
+
if (ch == '<' && startValue != Double.POSITIVE_INFINITY &&
startValue != Double.NEGATIVE_INFINITY) {
startValue = nextDouble(startValue);
}
if (startValue <= oldStartValue) {
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException("Incorrect order of"
+ + " intervals, must be in ascending order");
}
segments[0].setLength(0);
part = 1;
@@ -259,7 +262,7 @@
* @return the pattern string
*/
public String toPattern() {
- StringBuffer result = new StringBuffer();
+ StringBuilder result = new StringBuilder();
for (int i = 0; i < choiceLimits.length; ++i) {
if (i != 0) {
result.append('|');
@@ -272,7 +275,7 @@
double tryLess = Math.abs(Math.IEEEremainder(less, 1.0d));
if (tryLessOrEqual < tryLess) {
- result.append(""+choiceLimits[i]);
+ result.append(choiceLimits[i]);
result.append('#');
} else {
if (choiceLimits[i] == Double.POSITIVE_INFINITY) {
@@ -280,7 +283,7 @@
} else if (choiceLimits[i] == Double.NEGATIVE_INFINITY) {
result.append("-\u221E");
} else {
- result.append(""+less);
+ result.append(less);
}
result.append('<');
}
@@ -309,6 +312,8 @@
* Constructs with limits and corresponding formats based on the pattern.
*
* @param newPattern the new pattern string
+ * @exception NullPointerException if {@code newPattern} is
+ * {@code null}
* @see #applyPattern
*/
public ChoiceFormat(String newPattern) {
@@ -320,6 +325,8 @@
*
* @param limits limits in ascending order
* @param formats corresponding format strings
+ * @exception NullPointerException if {@code limits} or {@code formats}
+ * is {@code null}
* @see #setChoices
*/
public ChoiceFormat(double[] limits, String[] formats) {
@@ -339,6 +346,8 @@
* When formatting with object Y,
* if the object is a NumberFormat, then ((NumberFormat) Y).format(X)
* is called. Otherwise Y.toString() is called.
+ * @exception NullPointerException if {@code limits} or
+ * {@code formats} is {@code null}
*/
public void setChoices(double[] limits, String formats[]) {
if (limits.length != formats.length) {
@@ -386,6 +395,8 @@
* @param number number to be formatted and substituted.
* @param toAppendTo where text is appended.
* @param status ignore no useful status is returned.
+ * @exception NullPointerException if {@code toAppendTo}
+ * is {@code null}
*/
public StringBuffer format(double number, StringBuffer toAppendTo,
FieldPosition status) {
@@ -414,6 +425,9 @@
* status.index is unchanged and status.errorIndex is set to the
* first index of the character that caused the parse to fail.
* @return A Number representing the value of the number parsed.
+ * @exception NullPointerException if {@code status} is {@code null}
+ * or if {@code text} is {@code null} and the list of
+ * choice strings is not empty.
*/
public Number parse(String text, ParsePosition status) {
// find the best number (defined as the one with the longest parse)
@@ -437,7 +451,7 @@
if (status.index == start) {
status.errorIndex = furthest;
}
- return new Double(bestNumber);
+ return Double.valueOf(bestNumber);
}
/**
@@ -490,7 +504,7 @@
}
/**
- * Equality comparision between two
+ * Equality comparison between two
*/
public boolean equals(Object obj) {
if (obj == null) return false;
diff --git a/ojluni/src/main/java/java/text/CollationElementIterator.java b/ojluni/src/main/java/java/text/CollationElementIterator.java
index 7468cb5..22d100c 100644
--- a/ojluni/src/main/java/java/text/CollationElementIterator.java
+++ b/ojluni/src/main/java/java/text/CollationElementIterator.java
@@ -104,6 +104,7 @@
* @see Collator
* @see RuleBasedCollator
* @author Helena Shih, Laura Werner, Richard Gillam
+ * @since 1.1
*/
public final class CollationElementIterator
{
@@ -111,7 +112,7 @@
* Null order which indicates the end of string is reached by the
* cursor.
*/
- public final static int NULLORDER = 0xffffffff;
+ public static final int NULLORDER = 0xffffffff;
/**
* CollationElementIterator constructor. This takes the source string and
@@ -124,7 +125,7 @@
CollationElementIterator(String sourceText, RuleBasedCollator owner) {
this.owner = owner;
ordering = owner.getTables();
- if ( sourceText.length() != 0 ) {
+ if (!sourceText.isEmpty()) {
NormalizerBase.Mode mode =
CollatorUtilities.toNormalizerMode(owner.getDecomposition());
text = new NormalizerBase(sourceText, mode);
@@ -358,7 +359,7 @@
* @param order the collation element
* @return the element's primary component
*/
- public final static int primaryOrder(int order)
+ public static final int primaryOrder(int order)
{
order &= RBCollationTables.PRIMARYORDERMASK;
return (order >>> RBCollationTables.PRIMARYORDERSHIFT);
@@ -368,7 +369,7 @@
* @param order the collation element
* @return the element's secondary component
*/
- public final static short secondaryOrder(int order)
+ public static final short secondaryOrder(int order)
{
order = order & RBCollationTables.SECONDARYORDERMASK;
return ((short)(order >> RBCollationTables.SECONDARYORDERSHIFT));
@@ -378,7 +379,7 @@
* @param order the collation element
* @return the element's tertiary component
*/
- public final static short tertiaryOrder(int order)
+ public static final short tertiaryOrder(int order)
{
return ((short)(order &= RBCollationTables.TERTIARYORDERMASK));
}
@@ -540,14 +541,14 @@
* Determine if a character is a Thai vowel (which sorts after
* its base consonant).
*/
- private final static boolean isThaiPreVowel(int ch) {
+ private static final boolean isThaiPreVowel(int ch) {
return (ch >= 0x0e40) && (ch <= 0x0e44);
}
/**
* Determine if a character is a Thai base consonant
*/
- private final static boolean isThaiBaseConsonant(int ch) {
+ private static final boolean isThaiBaseConsonant(int ch) {
return (ch >= 0x0e01) && (ch <= 0x0e2e);
}
@@ -555,14 +556,14 @@
* Determine if a character is a Lao vowel (which sorts after
* its base consonant).
*/
- private final static boolean isLaoPreVowel(int ch) {
+ private static final boolean isLaoPreVowel(int ch) {
return (ch >= 0x0ec0) && (ch <= 0x0ec4);
}
/**
* Determine if a character is a Lao base consonant
*/
- private final static boolean isLaoBaseConsonant(int ch) {
+ private static final boolean isLaoBaseConsonant(int ch) {
return (ch >= 0x0e81) && (ch <= 0x0eae);
}
@@ -634,7 +635,7 @@
* Check if a comparison order is ignorable.
* @return true if a character is ignorable, false otherwise.
*/
- final static boolean isIgnorable(int order)
+ static final boolean isIgnorable(int order)
{
return ((primaryOrder(order) == 0) ? true : false);
}
@@ -770,7 +771,7 @@
return order;
}
- final static int UNMAPPEDCHARVALUE = 0x7FFF0000;
+ static final int UNMAPPEDCHARVALUE = 0x7FFF0000;
private NormalizerBase text = null;
private int[] buffer = null;
diff --git a/ojluni/src/main/java/java/text/CollationKey.java b/ojluni/src/main/java/java/text/CollationKey.java
index d4c7751..318f3c4 100644
--- a/ojluni/src/main/java/java/text/CollationKey.java
+++ b/ojluni/src/main/java/java/text/CollationKey.java
@@ -95,6 +95,7 @@
* @see Collator
* @see RuleBasedCollator
* @author Helena Shih
+ * @since 1.1
*/
public abstract class CollationKey implements Comparable<CollationKey> {
@@ -108,7 +109,7 @@
* zero if this is greater than target.
* @see java.text.Collator#compare
*/
- abstract public int compareTo(CollationKey target);
+ public abstract int compareTo(CollationKey target);
/**
* Returns the String that this CollationKey represents.
@@ -128,7 +129,7 @@
*
* @return a byte array representation of the CollationKey
*/
- abstract public byte[] toByteArray();
+ public abstract byte[] toByteArray();
/**
@@ -145,5 +146,5 @@
this.source = source;
}
- final private String source;
+ private final String source;
}
diff --git a/ojluni/src/main/java/java/text/MergeCollation.java b/ojluni/src/main/java/java/text/MergeCollation.java
index bd541a5..1bfcbf0 100644
--- a/ojluni/src/main/java/java/text/MergeCollation.java
+++ b/ojluni/src/main/java/java/text/MergeCollation.java
@@ -92,7 +92,7 @@
int i;
for (i = 0; i < patterns.size(); ++i) {
PatternEntry entry = patterns.get(i);
- if (entry.extension.length() != 0) {
+ if (!entry.extension.isEmpty()) {
if (extList == null)
extList = new ArrayList<>();
extList.add(entry);
@@ -122,7 +122,7 @@
private final PatternEntry findLastWithNoExtension(int i) {
for (--i;i >= 0; --i) {
PatternEntry entry = patterns.get(i);
- if (entry.extension.length() == 0) {
+ if (entry.extension.isEmpty()) {
return entry;
}
}
@@ -329,8 +329,8 @@
PatternEntry e = patterns.get(i);
if (e.chars.regionMatches(0,entry.chars,0,
e.chars.length())) {
- excessChars.append(entry.chars.substring(e.chars.length(),
- entry.chars.length()));
+ excessChars.append(entry.chars, e.chars.length(),
+ entry.chars.length());
break;
}
}
diff --git a/ojluni/src/main/java/java/text/Normalizer.java b/ojluni/src/main/java/java/text/Normalizer.java
index a97b4c1..82df511 100644
--- a/ojluni/src/main/java/java/text/Normalizer.java
+++ b/ojluni/src/main/java/java/text/Normalizer.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, 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
@@ -38,7 +38,6 @@
package java.text;
import sun.text.normalizer.NormalizerBase;
-import sun.text.normalizer.NormalizerImpl;
/**
* This class provides the method <code>normalize</code> which transforms Unicode
diff --git a/ojluni/src/main/java/java/text/ParseException.java b/ojluni/src/main/java/java/text/ParseException.java
index f9ad001..264c480 100644
--- a/ojluni/src/main/java/java/text/ParseException.java
+++ b/ojluni/src/main/java/java/text/ParseException.java
@@ -45,6 +45,7 @@
* @see java.text.Format
* @see java.text.FieldPosition
* @author Mark Davis
+ * @since 1.1
*/
public
class ParseException extends Exception {
diff --git a/ojluni/src/main/java/java/text/ParsePosition.java b/ojluni/src/main/java/java/text/ParsePosition.java
index be3ffce..85e5c9d 100644
--- a/ojluni/src/main/java/java/text/ParsePosition.java
+++ b/ojluni/src/main/java/java/text/ParsePosition.java
@@ -51,6 +51,7 @@
* records the current position.
*
* @author Mark Davis
+ * @since 1.1
* @see java.text.Format
*/
diff --git a/ojluni/src/main/java/java/text/PatternEntry.java b/ojluni/src/main/java/java/text/PatternEntry.java
index 07af4b8..3e065df 100644
--- a/ojluni/src/main/java/java/text/PatternEntry.java
+++ b/ojluni/src/main/java/java/text/PatternEntry.java
@@ -141,7 +141,7 @@
if (showWhiteSpace)
toAddTo.append(' ');
appendQuoted(chars,toAddTo);
- if (showExtension && extension.length() != 0) {
+ if (showExtension && !extension.isEmpty()) {
toAddTo.append('/');
appendQuoted(extension,toAddTo);
}
diff --git a/ojluni/src/main/java/java/text/StringCharacterIterator.java b/ojluni/src/main/java/java/text/StringCharacterIterator.java
index 66b5be6..b5d510c 100644
--- a/ojluni/src/main/java/java/text/StringCharacterIterator.java
+++ b/ojluni/src/main/java/java/text/StringCharacterIterator.java
@@ -47,6 +47,7 @@
* entire <code>String</code>.
*
* @see CharacterIterator
+ * @since 1.1
*/
public final class StringCharacterIterator implements CharacterIterator