# HG changeset patch # User coffeys # Date 1385114216 0 # Node ID 3ef6ca8596a2804ebd0e771efafd5ff529531b4d # Parent 766fef71e8bb8f2e86bc6b3c7e1a49afac59d138# Parent 5e5571b9a6a2e1bdaf79590ac76a8438a8886c06 Merge diff -r 766fef71e8bb -r 3ef6ca8596a2 jdk/src/share/classes/java/lang/String.java --- a/jdk/src/share/classes/java/lang/String.java Thu Nov 21 20:48:24 2013 +0000 +++ b/jdk/src/share/classes/java/lang/String.java Fri Nov 22 09:56:56 2013 +0000 @@ -123,7 +123,7 @@ * Class String is special cased within the Serialization Stream Protocol. * * A String instance is written into an ObjectOutputStream according to - * + * * Object Serialization Specification, Section 6.2, "Stream Elements" */ private static final ObjectStreamField[] serialPersistentFields = @@ -1893,7 +1893,7 @@ } /** - * Returns a new string that is a substring of this string. The + * Returns a string that is a substring of this string. The * substring begins with the character at the specified index and * extends to the end of this string.
* Examples: @@ -1921,7 +1921,7 @@ } /** - * Returns a new string that is a substring of this string. The + * Returns a string that is a substring of this string. The * substring begins at the specified {@code beginIndex} and * extends to the character at index {@code endIndex - 1}. * Thus the length of the substring is {@code endIndex-beginIndex}. @@ -1970,6 +1970,7 @@ *
* + * @apiNote * This method is defined so that the {@code String} class can implement * the {@link CharSequence} interface. * @@ -1993,8 +1994,8 @@ * Concatenates the specified string to the end of this string. ** str.substring(begin, end)
* If the length of the argument string is {@code 0}, then this - * {@code String} object is returned. Otherwise, a new - * {@code String} object is created, representing a character + * {@code String} object is returned. Otherwise, a + * {@code String} object is returned that represents a character * sequence that is the concatenation of the character sequence * represented by this {@code String} object and the character * sequence represented by the argument string.
@@ -2021,13 +2022,13 @@ } /** - * Returns a new string resulting from replacing all occurrences of + * Returns a string resulting from replacing all occurrences of * {@code oldChar} in this string with {@code newChar}. *
* If the character {@code oldChar} does not occur in the * character sequence represented by this {@code String} object, * then a reference to this {@code String} object is returned. - * Otherwise, a new {@code String} object is created that + * Otherwise, a {@code String} object is returned that * represents a character sequence identical to the character sequence * represented by this {@code String} object, except that every * occurrence of {@code oldChar} is replaced by an occurrence @@ -2818,8 +2819,8 @@ } /** - * Returns a copy of the string, with leading and trailing whitespace - * omitted. + * Returns a string whose value is this string, with any leading and trailing + * whitespace removed. *
* If this {@code String} object represents an empty character * sequence, or the first and last characters of character sequence @@ -2828,15 +2829,15 @@ * reference to this {@code String} object is returned. *
* Otherwise, if there is no character with a code greater than - * {@code '\u005Cu0020'} in the string, then a new - * {@code String} object representing an empty string is created - * and returned. + * {@code '\u005Cu0020'} in the string, then a + * {@code String} object representing an empty string is + * returned. *
* Otherwise, let k be the index of the first character in the
* string whose code is greater than {@code '\u005Cu0020'}, and let
* m be the index of the last character in the string whose code
- * is greater than {@code '\u005Cu0020'}. A new {@code String}
- * object is created, representing the substring of this string that
+ * is greater than {@code '\u005Cu0020'}. A {@code String}
+ * object is returned, representing the substring of this string that
* begins with the character at index k and ends with the
* character at index m-that is, the result of
* {@code this.substring(k, m + 1)}.
@@ -2844,7 +2845,7 @@
* This method may be used to trim whitespace (as defined above) from
* the beginning and end of a string.
*
- * @return A copy of this string with leading and trailing white
+ * @return A string whose value is this string, with any leading and trailing white
* space removed, or this string if it has no leading or
* trailing white space.
*/
@@ -2981,12 +2982,12 @@
/**
* Returns the string representation of the {@code char} array
* argument. The contents of the character array are copied; subsequent
- * modification of the character array does not affect the newly
- * created string.
+ * modification of the character array does not affect the returned
+ * string.
*
- * @param data a {@code char} array.
- * @return a newly allocated string representing the same sequence of
- * characters contained in the character array argument.
+ * @param data the character array.
+ * @return a {@code String} that contains the characters of the
+ * character array.
*/
public static String valueOf(char data[]) {
return new String(data);
@@ -3000,14 +3001,13 @@
* character of the subarray. The {@code count} argument
* specifies the length of the subarray. The contents of the subarray
* are copied; subsequent modification of the character array does not
- * affect the newly created string.
+ * affect the returned string.
*
* @param data the character array.
- * @param offset the initial offset into the value of the
- * {@code String}.
- * @param count the length of the value of the {@code String}.
- * @return a string representing the sequence of characters contained
- * in the subarray of the character array argument.
+ * @param offset initial offset of the subarray.
+ * @param count length of the subarray.
+ * @return a {@code String} that contains the characters of the
+ * specified subarray of the character array.
* @exception IndexOutOfBoundsException if {@code offset} is
* negative, or {@code count} is negative, or
* {@code offset+count} is larger than
@@ -3018,23 +3018,24 @@
}
/**
- * Returns a String that represents the character sequence in the
- * array specified.
+ * Equivalent to {@link #valueOf(char[], int, int)}.
*
* @param data the character array.
* @param offset initial offset of the subarray.
* @param count length of the subarray.
* @return a {@code String} that contains the characters of the
* specified subarray of the character array.
+ * @exception IndexOutOfBoundsException if {@code offset} is
+ * negative, or {@code count} is negative, or
+ * {@code offset+count} is larger than
+ * {@code data.length}.
*/
public static String copyValueOf(char data[], int offset, int count) {
- // All public String constructors now copy the data.
return new String(data, offset, count);
}
/**
- * Returns a String that represents the character sequence in the
- * array specified.
+ * Equivalent to {@link #valueOf(char[])}.
*
* @param data the character array.
* @return a {@code String} that contains the characters of the
diff -r 766fef71e8bb -r 3ef6ca8596a2 jdk/test/java/nio/channels/FileChannel/Size.java
--- a/jdk/test/java/nio/channels/FileChannel/Size.java Thu Nov 21 20:48:24 2013 +0000
+++ b/jdk/test/java/nio/channels/FileChannel/Size.java Fri Nov 22 09:56:56 2013 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2013, 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
@@ -39,67 +39,57 @@
public class Size {
- private static Random generator = new Random();
-
- private static File blah;
-
public static void main(String[] args) throws Exception {
- test1();
- test2();
+ testSmallFile();
+ testLargeFile();
}
- private static void test1() throws Exception {
- blah = File.createTempFile("blah", null);
- blah.deleteOnExit();
+ private static void testSmallFile() throws Exception {
+ File smallFile = new File("smallFileTest");
+ Random generator = new Random();
for(int i=0; i<100; i++) {
long testSize = generator.nextInt(1000);
- initTestFile(blah, testSize);
- FileInputStream fis = new FileInputStream(blah);
- FileChannel c = fis.getChannel();
- if (c.size() != testSize)
- throw new RuntimeException("Size failed");
- c.close();
- fis.close();
+ initTestFile(smallFile, testSize);
+ try (FileChannel c = new FileInputStream(smallFile).getChannel()) {
+ if (c.size() != testSize) {
+ throw new RuntimeException("Size failed in testSmallFile. "
+ + "Expect size " + testSize
+ + ", actual size " + c.size());
+ }
+ }
}
- blah.delete();
+ smallFile.deleteOnExit();
}
// Test for bug 4563125
- private static void test2() throws Exception {
- // Windows and Linux can't handle the really large file sizes for a truncate
- // or a positional write required by the test for 4563125
- String osName = System.getProperty("os.name");
- if (osName.startsWith("SunOS") || osName.contains("OS X")) {
- blah = File.createTempFile("blah", null);
- long testSize = ((long)Integer.MAX_VALUE) * 2;
- initTestFile(blah, 10);
- RandomAccessFile raf = new RandomAccessFile(blah, "rw");
- FileChannel fc = raf.getChannel();
+ private static void testLargeFile() throws Exception {
+ File largeFile = new File("largeFileTest");
+ long testSize = ((long)Integer.MAX_VALUE) * 2;
+ initTestFile(largeFile, 10);
+ try (FileChannel fc = new RandomAccessFile(largeFile, "rw").getChannel())
+ {
fc.size();
fc.map(FileChannel.MapMode.READ_WRITE, testSize, 10);
- if (fc.size() != testSize + 10)
- throw new RuntimeException("Size failed " + fc.size());
- fc.close();
- raf.close();
- blah.delete();
+ if (fc.size() != testSize + 10) {
+ throw new RuntimeException("Size failed in testLargeFile. "
+ + "Expect size " + (testSize + 10)
+ + ", actual size " + fc.size());
+ }
}
+ largeFile.deleteOnExit();
}
/**
- * Creates file blah of specified size in bytes.
+ * Create a file with the specified size in bytes.
*
*/
- private static void initTestFile(File blah, long size) throws Exception {
- if (blah.exists())
- blah.delete();
- FileOutputStream fos = new FileOutputStream(blah);
- BufferedWriter awriter
- = new BufferedWriter(new OutputStreamWriter(fos, "8859_1"));
-
- for(int i=0; i