# 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 @@ *

      * str.substring(begin, end)
* + * @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. *

* 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