Merge
authortbell
Sun, 06 Sep 2009 23:14:42 -0700
changeset 3725 b2169a6c9c86
parent 3720 779430b2f649 (current diff)
parent 3724 bb2cc7a7dafb (diff)
child 3754 41a9e8c0158c
child 3839 09f1347f718c
Merge
--- a/jdk/src/share/classes/java/nio/file/Files.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/share/classes/java/nio/file/Files.java	Sun Sep 06 23:14:42 2009 -0700
@@ -133,10 +133,11 @@
      * <p> This method walks a file tree rooted at a given starting file. The
      * file tree traversal is <em>depth-first</em> with the given {@link
      * FileVisitor} invoked for each file encountered. File tree traversal
-     * completes when all accessible files in the tree have been visited, a
-     * visitor returns a result of {@link FileVisitResult#TERMINATE TERMINATE},
-     * or the visitor terminates due to an uncaught {@code Error} or {@code
-     * RuntimeException}.
+     * completes when all accessible files in the tree have been visited, or a
+     * visit method returns a result of {@link FileVisitResult#TERMINATE
+     * TERMINATE}. Where a visit method terminates due an uncaught error or
+     * runtime exception then the traversal is terminated and the error or
+     * exception is propagated to the caller of this method.
      *
      * <p> For each file encountered this method attempts to gets its {@link
      * java.nio.file.attribute.BasicFileAttributes}. If the file is not a
--- a/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/share/classes/java/nio/file/SimpleFileVisitor.java	Sun Sep 06 23:14:42 2009 -0700
@@ -124,8 +124,8 @@
      * cause.
      *
      * @throws  IOError
-     *          if iteration of the directory completed prematurely due to an
-     *          I/O error
+     *          with the I/O exception thrown when iteration of the directory
+     *          completed prematurely due to an I/O error
      */
     @Override
     public FileVisitResult postVisitDirectory(T dir, IOException exc) {
--- a/jdk/src/share/sample/nio/file/Xdd.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/share/sample/nio/file/Xdd.java	Sun Sep 06 23:14:42 2009 -0700
@@ -57,9 +57,9 @@
         Path file = (args.length == 1) ?
             Paths.get(args[0]) : Paths.get(args[2]);
 
-        // check that user defined attributes are supported by the file system
+        // check that user defined attributes are supported by the file store
         FileStore store = file.getFileStore();
-        if (!store.supportsFileAttributeView("user")) {
+        if (!store.supportsFileAttributeView(UserDefinedFileAttributeView.class)) {
             System.err.format("UserDefinedFileAttributeView not supported on %s\n", store);
             System.exit(-1);
 
--- a/jdk/src/share/transport/socket/socketTransport.c	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/share/transport/socket/socketTransport.c	Sun Sep 06 23:14:42 2009 -0700
@@ -134,15 +134,16 @@
 
 static jdwpTransportError
 handshake(int fd, jlong timeout) {
-    char *hello = "JDWP-Handshake";
+    const char *hello = "JDWP-Handshake";
     char b[16];
-    int rv, received, i;
+    int rv, helloLen, received;
 
     if (timeout > 0) {
         dbgsysConfigureBlocking(fd, JNI_FALSE);
     }
+    helloLen = (int)strlen(hello);
     received = 0;
-    while (received < (int)strlen(hello)) {
+    while (received < helloLen) {
         int n;
         char *buf;
         if (timeout > 0) {
@@ -154,7 +155,7 @@
         }
         buf = b;
         buf += received;
-        n = dbgsysRecv(fd, buf, (int)strlen(hello)-received, 0);
+        n = dbgsysRecv(fd, buf, helloLen-received, 0);
         if (n == 0) {
             setLastError(0, "handshake failed - connection prematurally closed");
             return JDWPTRANSPORT_ERROR_IO_ERROR;
@@ -167,20 +168,19 @@
     if (timeout > 0) {
         dbgsysConfigureBlocking(fd, JNI_TRUE);
     }
-    for (i=0; i<(int)strlen(hello); i++) {
-        if (b[i] != hello[i]) {
-            char msg[64];
-            strcpy(msg, "handshake failed - received >");
-            strncat(msg, b, strlen(hello));
-            strcat(msg, "< - excepted >");
-            strcat(msg, hello);
-            strcat(msg, "<");
-            setLastError(0, msg);
-            return JDWPTRANSPORT_ERROR_IO_ERROR;
-        }
+    if (strncmp(b, hello, received) != 0) {
+        char msg[80+2*16];
+        b[received] = '\0';
+        /*
+         * We should really use snprintf here but it's not available on Windows.
+         * We can't use jio_snprintf without linking the transport against the VM.
+         */
+        sprintf(msg, "handshake failed - received >%s< - expected >%s<", b, hello);
+        setLastError(0, msg);
+        return JDWPTRANSPORT_ERROR_IO_ERROR;
     }
 
-    if (dbgsysSend(fd, hello, (int)strlen(hello), 0) != (int)strlen(hello)) {
+    if (dbgsysSend(fd, (char*)hello, helloLen, 0) != helloLen) {
         RETURN_IO_ERROR("send failed during handshake");
     }
     return JDWPTRANSPORT_ERROR_NONE;
--- a/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/LinuxFileStore.java	Sun Sep 06 23:14:42 2009 -0700
@@ -25,6 +25,7 @@
 
 package sun.nio.fs;
 
+import java.nio.file.attribute.*;
 import java.util.*;
 import java.io.IOException;
 
@@ -113,10 +114,12 @@
     }
 
     @Override
-    public boolean supportsFileAttributeView(String name) {
+    public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
         // support DosFileAttributeView and UserDefinedAttributeView if extended
         // attributes enabled
-        if (name.equals("dos") || name.equals("user")) {
+        if (type == DosFileAttributeView.class ||
+            type == UserDefinedFileAttributeView.class)
+        {
             // lookup fstypes.properties
             FeatureStatus status = checkIfFeaturePresent("user_xattr");
             if (status == FeatureStatus.PRESENT)
@@ -142,7 +145,15 @@
             }
             return xattrEnabled;
         }
+        return super.supportsFileAttributeView(type);
+    }
 
+    @Override
+    public boolean supportsFileAttributeView(String name) {
+        if (name.equals("dos"))
+            return supportsFileAttributeView(DosFileAttributeView.class);
+        if (name.equals("user"))
+            return supportsFileAttributeView(UserDefinedFileAttributeView.class);
         return super.supportsFileAttributeView(name);
     }
 
--- a/jdk/src/solaris/classes/sun/nio/fs/SolarisFileStore.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/SolarisFileStore.java	Sun Sep 06 23:14:42 2009 -0700
@@ -25,6 +25,7 @@
 
 package sun.nio.fs;
 
+import java.nio.file.attribute.*;
 import java.io.IOException;
 
 import static sun.nio.fs.UnixNativeDispatcher.*;
@@ -72,27 +73,39 @@
     }
 
     @Override
-    public boolean supportsFileAttributeView(String name) {
-        if (name.equals("acl")) {
+    public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
+        if (type == AclFileAttributeView.class) {
             // lookup fstypes.properties
             FeatureStatus status = checkIfFeaturePresent("nfsv4acl");
-            if (status == FeatureStatus.PRESENT)
-                return true;
-            if (status == FeatureStatus.NOT_PRESENT)
-                return false;
-            // AclFileAttributeView available on ZFS
-            return (type().equals("zfs"));
+            switch (status) {
+                case PRESENT     : return true;
+                case NOT_PRESENT : return false;
+                default :
+                    // AclFileAttributeView available on ZFS
+                    return (type().equals("zfs"));
+            }
         }
-        if (name.equals("user")) {
+        if (type == UserDefinedFileAttributeView.class) {
             // lookup fstypes.properties
             FeatureStatus status = checkIfFeaturePresent("xattr");
-            if (status == FeatureStatus.PRESENT)
-                return true;
-            if (status == FeatureStatus.NOT_PRESENT)
-                return false;
-            return xattrEnabled;
+            switch (status) {
+                case PRESENT     : return true;
+                case NOT_PRESENT : return false;
+                default :
+                    // UserDefinedFileAttributeView available if extended
+                    // attributes supported
+                    return xattrEnabled;
+            }
         }
+        return super.supportsFileAttributeView(type);
+    }
 
+    @Override
+    public boolean supportsFileAttributeView(String name) {
+        if (name.equals("acl"))
+            return supportsFileAttributeView(AclFileAttributeView.class);
+        if (name.equals("user"))
+            return supportsFileAttributeView(UserDefinedFileAttributeView.class);
         return super.supportsFileAttributeView(name);
     }
 
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java	Sun Sep 06 23:14:42 2009 -0700
@@ -145,9 +145,8 @@
         {
             // lookup fstypes.properties
             FeatureStatus status = checkIfFeaturePresent("posix");
-            if (status == FeatureStatus.NOT_PRESENT)
-                return false;
-            return true;
+            // assume supported if UNKNOWN
+            return (status != FeatureStatus.NOT_PRESENT);
         }
         return false;
     }
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileStore.java	Sun Sep 06 23:14:42 2009 -0700
@@ -153,7 +153,7 @@
     public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
         if (type == null)
             throw new NullPointerException();
-        if (type == BasicFileAttributeView.class)
+        if (type == BasicFileAttributeView.class || type == DosFileAttributeView.class)
             return true;
         if (type == AclFileAttributeView.class || type == FileOwnerAttributeView.class)
             return ((volInfo.flags() & FILE_PERSISTENT_ACLS) != 0);
--- a/jdk/test/com/sun/jdi/BadHandshakeTest.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/test/com/sun/jdi/BadHandshakeTest.java	Sun Sep 06 23:14:42 2009 -0700
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 6306165
+ * @bug 6306165 6432567
  * @summary Check that a bad handshake doesn't cause a debuggee to abort
  *
  * @build VMConnection BadHandshakeTest Exit0
--- a/jdk/test/java/nio/file/FileStore/Basic.java	Fri Sep 04 17:07:29 2009 -0700
+++ b/jdk/test/java/nio/file/FileStore/Basic.java	Sun Sep 06 23:14:42 2009 -0700
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4313887
+ * @bug 4313887 6873621
  * @summary Unit test for java.nio.file.FileStore
  * @library ..
  */
@@ -67,6 +67,15 @@
          * Test: File and FileStore attributes
          */
         assertTrue(store1.supportsFileAttributeView("basic"));
+        assertTrue(store1.supportsFileAttributeView(BasicFileAttributeView.class));
+        assertTrue(store1.supportsFileAttributeView("posix") ==
+            store1.supportsFileAttributeView(PosixFileAttributeView.class));
+        assertTrue(store1.supportsFileAttributeView("dos") ==
+            store1.supportsFileAttributeView(DosFileAttributeView.class));
+        assertTrue(store1.supportsFileAttributeView("acl") ==
+            store1.supportsFileAttributeView(AclFileAttributeView.class));
+        assertTrue(store1.supportsFileAttributeView("user") ==
+            store1.supportsFileAttributeView(UserDefinedFileAttributeView.class));
 
         /**
          * Test: Enumerate all FileStores