jdk/test/java/nio/file/Files/CheckPermissions.java
author alanb
Fri, 28 Jan 2011 09:28:43 +0000
changeset 8158 77d9c0f1c19f
parent 7668 jdk/test/java/nio/file/Path/CheckPermissions.java@d4a77089c587
child 9035 1255eb81cc2f
child 9025 a72fc1fc4b71
permissions -rw-r--r--
7006126: (fs) Updates to file system API (1/2011) Reviewed-by: chegar, sherman
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     1
/*
7668
d4a77089c587 6962318: Update copyright year
ohair
parents: 5506
diff changeset
     2
 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     4
 *
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     7
 * published by the Free Software Foundation.
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     8
 *
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    13
 * accompanied this code).
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    14
 *
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    18
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4973
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4973
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4973
diff changeset
    21
 * questions.
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    22
 */
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    23
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    24
/* @test
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    25
 * @bug 6866804 7006126
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    26
 * @summary Unit test for java.nio.file.Files
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    27
 * @library ..
4056
97f9fdcc823c 6892710: (file) test/java/nio/file/Path/CheckPermissions.java fails in samevm mode
alanb
parents: 3629
diff changeset
    28
 * @build CheckPermissions
97f9fdcc823c 6892710: (file) test/java/nio/file/Path/CheckPermissions.java fails in samevm mode
alanb
parents: 3629
diff changeset
    29
 * @run main/othervm CheckPermissions
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    30
 */
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    31
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    32
import java.nio.ByteBuffer;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    33
import java.nio.file.*;
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    34
import static java.nio.file.Files.*;
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    35
import static java.nio.file.StandardOpenOption.*;
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    36
import java.nio.file.attribute.*;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    37
import java.nio.channels.SeekableByteChannel;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    38
import java.security.Permission;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    39
import java.io.*;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    40
import java.util.*;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    41
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    42
/**
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    43
 * Checks each method that accesses the file system does the right permission
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    44
 * check when there is a security manager set.
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    45
 */
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    46
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    47
public class CheckPermissions {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    48
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    49
    static class Checks {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    50
        private List<Permission> permissionsChecked = new ArrayList<>();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    51
        private Set<String>  propertiesChecked = new HashSet<>();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    52
        private List<String> readsChecked   = new ArrayList<>();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    53
        private List<String> writesChecked  = new ArrayList<>();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    54
        private List<String> deletesChecked = new ArrayList<>();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    55
        private List<String> execsChecked   = new ArrayList<>();
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    56
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    57
        List<Permission> permissionsChecked()  { return permissionsChecked; }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    58
        Set<String> propertiesChecked()        { return propertiesChecked; }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    59
        List<String> readsChecked()            { return readsChecked; }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    60
        List<String> writesChecked()           { return writesChecked; }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    61
        List<String> deletesChecked()          { return deletesChecked; }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    62
        List<String> execsChecked()            { return execsChecked; }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    63
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    64
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    65
    static ThreadLocal<Checks> myChecks =
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    66
        new ThreadLocal<Checks>() {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    67
            @Override protected Checks initialValue() {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    68
                return null;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    69
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    70
        };
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    71
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    72
    static void prepare() {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    73
        myChecks.set(new Checks());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    74
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    75
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    76
    static void assertCheckPermission(Class<? extends Permission> type,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    77
                                      String name)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    78
    {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    79
        for (Permission perm: myChecks.get().permissionsChecked()) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    80
            if (type.isInstance(perm) && perm.getName().equals(name))
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    81
                return;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    82
        }
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
    83
        throw new RuntimeException(type.getName() + "(\"" + name + "\") not checked");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    84
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    85
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    86
    static void assertCheckPropertyAccess(String key) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    87
        if (!myChecks.get().propertiesChecked().contains(key))
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    88
            throw new RuntimeException("Property " + key + " not checked");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    89
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    90
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    91
    static void assertChecked(Path file, List<String> list) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    92
        String s = file.toString();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    93
        for (String f: list) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    94
            if (f.endsWith(s))
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    95
                return;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    96
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    97
        throw new RuntimeException("Access not checked");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    98
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
    99
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   100
    static void assertCheckRead(Path file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   101
        assertChecked(file, myChecks.get().readsChecked());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   102
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   103
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   104
    static void assertCheckWrite(Path file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   105
        assertChecked(file, myChecks.get().writesChecked());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   106
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   107
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   108
    static void assertCheckWriteToDirectory(Path dir) {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   109
        String s = dir.toString();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   110
        List<String> list = myChecks.get().writesChecked();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   111
        for (String f: list) {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   112
            if (f.startsWith(s)) {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   113
                return;
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   114
            }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   115
        }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   116
        throw new RuntimeException("Access not checked");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   117
    }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   118
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   119
    static void assertCheckDelete(Path file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   120
        assertChecked(file, myChecks.get().deletesChecked());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   121
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   122
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   123
    static void assertCheckExec(Path file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   124
        assertChecked(file, myChecks.get().execsChecked());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   125
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   126
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   127
    static class LoggingSecurityManager extends SecurityManager {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   128
        static void install() {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   129
            System.setSecurityManager(new LoggingSecurityManager());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   130
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   131
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   132
        @Override
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   133
        public void checkPermission(Permission perm) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   134
            Checks checks = myChecks.get();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   135
            if (checks != null)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   136
                checks.permissionsChecked().add(perm);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   137
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   138
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   139
        @Override
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   140
        public void checkPropertyAccess(String key) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   141
            Checks checks = myChecks.get();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   142
            if (checks != null)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   143
                checks.propertiesChecked().add(key);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   144
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   145
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   146
        @Override
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   147
        public void checkRead(String file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   148
            Checks checks = myChecks.get();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   149
            if (checks != null)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   150
                checks.readsChecked().add(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   151
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   152
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   153
        @Override
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   154
        public void checkWrite(String file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   155
            Checks checks = myChecks.get();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   156
            if (checks != null)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   157
                checks.writesChecked().add(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   158
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   159
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   160
        @Override
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   161
        public void checkDelete(String file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   162
            Checks checks = myChecks.get();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   163
            if (checks != null)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   164
                checks.deletesChecked().add(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   165
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   166
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   167
        @Override
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   168
        public void checkExec(String file) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   169
            Checks checks = myChecks.get();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   170
            if (checks != null)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   171
                checks.execsChecked().add(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   172
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   173
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   174
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   175
    static void testBasicFileAttributeView(BasicFileAttributeView view, Path file)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   176
        throws IOException
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   177
    {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   178
        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   179
        view.readAttributes();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   180
        assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   181
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   182
        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   183
        FileTime now = FileTime.fromMillis(System.currentTimeMillis());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   184
        view.setTimes(null, now, now);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   185
        assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   186
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   187
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   188
    static void testPosixFileAttributeView(PosixFileAttributeView view, Path file)
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   189
        throws IOException
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   190
    {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   191
        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   192
        PosixFileAttributes attrs = view.readAttributes();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   193
        assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   194
        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   195
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   196
        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   197
        view.setPermissions(attrs.permissions());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   198
        assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   199
        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   200
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   201
        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   202
        view.setOwner(attrs.owner());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   203
        assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   204
        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   205
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   206
        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   207
        view.setOwner(attrs.owner());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   208
        assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   209
        assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   210
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   211
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   212
    public static void main(String[] args) throws IOException {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   213
        final Path testdir = Paths.get(System.getProperty("test.dir", ".")).toAbsolutePath();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   214
        final Path tmpdir = Paths.get(System.getProperty("java.io.tmpdir"));
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   215
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   216
        Path file = createFile(testdir.resolve("file1234"));
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   217
        try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   218
            LoggingSecurityManager.install();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   219
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   220
            // -- check access --
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   221
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   222
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   223
            exists(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   224
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   225
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   226
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   227
            isReadable(file);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   228
            assertCheckRead(file);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   229
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   230
            prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   231
            isWritable(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   232
            assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   233
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   234
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   235
            isExecutable(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   236
            assertCheckExec(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   237
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   238
            // -- copy --
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   239
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   240
            Path target = testdir.resolve("target1234");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   241
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   242
            copy(file, target);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   243
            try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   244
                assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   245
                assertCheckWrite(target);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   246
            } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   247
                delete(target);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   248
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   249
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   250
            if (TestUtil.supportsLinks(testdir)) {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   251
                Path link = testdir.resolve("link1234");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   252
                createSymbolicLink(link, file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   253
                try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   254
                    prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   255
                    copy(link, target, LinkOption.NOFOLLOW_LINKS);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   256
                    try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   257
                        assertCheckRead(link);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   258
                        assertCheckWrite(target);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   259
                        assertCheckPermission(LinkPermission.class, "symbolic");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   260
                    } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   261
                        delete(target);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   262
                    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   263
                } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   264
                    delete(link);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   265
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   266
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   267
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   268
            // -- createDirectory --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   269
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   270
            Path subdir = testdir.resolve("subdir1234");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   271
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   272
            createDirectory(subdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   273
            try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   274
                assertCheckWrite(subdir);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   275
            } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   276
                delete(subdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   277
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   278
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   279
            // -- createFile --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   280
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   281
            Path fileToCreate = testdir.resolve("file7890");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   282
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   283
            createFile(fileToCreate);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   284
            try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   285
                assertCheckWrite(fileToCreate);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   286
            } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   287
                delete(fileToCreate);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   288
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   289
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   290
            // -- createSymbolicLink --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   291
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   292
            if (TestUtil.supportsLinks(testdir)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   293
                prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   294
                Path link = testdir.resolve("link1234");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   295
                createSymbolicLink(link, file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   296
                try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   297
                    assertCheckWrite(link);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   298
                    assertCheckPermission(LinkPermission.class, "symbolic");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   299
                } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   300
                    delete(link);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   301
                }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   302
            }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   303
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   304
            // -- createLink --
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   305
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   306
            if (TestUtil.supportsLinks(testdir)) {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   307
                prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   308
                Path link = testdir.resolve("entry234");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   309
                createLink(link, file);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   310
                try {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   311
                    assertCheckWrite(link);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   312
                    assertCheckPermission(LinkPermission.class, "hard");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   313
                } finally {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   314
                    delete(link);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   315
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   316
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   317
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   318
            // -- createTempFile --
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   319
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   320
            prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   321
            Path tmpfile1 = createTempFile("foo", null);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   322
            try {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   323
                assertCheckWriteToDirectory(tmpdir);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   324
            } finally {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   325
                delete(tmpfile1);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   326
            }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   327
            prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   328
            Path tmpfile2 = createTempFile(testdir, "foo", ".tmp");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   329
            try {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   330
                assertCheckWriteToDirectory(testdir);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   331
            } finally {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   332
                delete(tmpfile2);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   333
            }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   334
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   335
            // -- createTempDirectory --
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   336
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   337
            prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   338
            Path tmpdir1 = createTempDirectory("foo");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   339
            try {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   340
                assertCheckWriteToDirectory(tmpdir);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   341
            } finally {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   342
                delete(tmpdir1);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   343
            }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   344
            prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   345
            Path tmpdir2 = createTempDirectory(testdir, "foo");
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   346
            try {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   347
                assertCheckWriteToDirectory(testdir);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   348
            } finally {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   349
                delete(tmpdir2);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   350
            }
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   351
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   352
            // -- delete/deleteIfExists --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   353
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   354
            Path fileToDelete = testdir.resolve("file7890");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   355
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   356
            createFile(fileToDelete);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   357
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   358
            delete(fileToDelete);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   359
            assertCheckDelete(fileToDelete);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   360
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   361
            createFile(fileToDelete);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   362
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   363
            deleteIfExists(fileToDelete);   // file exists
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   364
            assertCheckDelete(fileToDelete);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   365
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   366
            prepare();
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   367
            deleteIfExists(fileToDelete);   // file does not exist
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   368
            assertCheckDelete(fileToDelete);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   369
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   370
            // -- exists/notExists --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   371
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   372
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   373
            exists(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   374
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   375
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   376
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   377
            notExists(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   378
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   379
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   380
            // -- getFileStore --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   381
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   382
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   383
            getFileStore(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   384
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   385
            assertCheckPermission(RuntimePermission.class, "getFileStoreAttributes");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   386
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   387
            // -- isSameFile --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   388
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   389
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   390
            isSameFile(file, testdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   391
            assertCheckRead(file);
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   392
            assertCheckRead(testdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   393
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   394
            // -- move --
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   395
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   396
            Path target2 = testdir.resolve("target1234");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   397
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   398
            move(file, target2);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   399
            try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   400
                assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   401
                assertCheckWrite(target2);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   402
            } finally {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   403
                // restore file
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   404
                move(target2, file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   405
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   406
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   407
            // -- newByteChannel --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   408
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   409
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   410
            try (SeekableByteChannel sbc = newByteChannel(file)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   411
                assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   412
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   413
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   414
            try (SeekableByteChannel sbc = newByteChannel(file, WRITE)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   415
                assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   416
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   417
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   418
            try (SeekableByteChannel sbc = newByteChannel(file, READ, WRITE)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   419
                assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   420
                assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   421
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   422
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   423
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   424
            try (SeekableByteChannel sbc = newByteChannel(file, DELETE_ON_CLOSE)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   425
                assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   426
                assertCheckDelete(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   427
            }
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   428
            createFile(file); // restore file
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   429
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   430
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   431
            // -- newInputStream/newOutptuStream --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   432
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   433
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   434
            try (InputStream in = newInputStream(file)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   435
                assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   436
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   437
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   438
            try (OutputStream out = newOutputStream(file)) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   439
                assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   440
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   441
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   442
            // -- newDirectoryStream --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   443
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   444
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   445
            try (DirectoryStream<Path> stream = newDirectoryStream(testdir)) {
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   446
                assertCheckRead(testdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   447
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   448
                if (stream instanceof SecureDirectoryStream<?>) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   449
                    Path entry;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   450
                    SecureDirectoryStream<Path> sds =
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   451
                        (SecureDirectoryStream<Path>)stream;
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   452
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   453
                    // newByteChannel
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   454
                    entry = file.getFileName();
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   455
                    prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   456
                    try (SeekableByteChannel sbc = sds.newByteChannel(entry, EnumSet.of(READ))) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   457
                        assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   458
                    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   459
                    prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   460
                    try (SeekableByteChannel sbc = sds.newByteChannel(entry, EnumSet.of(WRITE))) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   461
                        assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   462
                    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   463
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   464
                    // deleteFile
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   465
                    entry = file.getFileName();
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   466
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   467
                    sds.deleteFile(entry);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   468
                    assertCheckDelete(file);
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   469
                    createFile(testdir.resolve(entry));  // restore file
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   470
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   471
                    // deleteDirectory
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   472
                    entry = Paths.get("subdir1234");
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   473
                    createDirectory(testdir.resolve(entry));
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   474
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   475
                    sds.deleteDirectory(entry);
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   476
                    assertCheckDelete(testdir.resolve(entry));
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   477
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   478
                    // move
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   479
                    entry = Paths.get("tempname1234");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   480
                    prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   481
                    sds.move(file.getFileName(), sds, entry);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   482
                    assertCheckWrite(file);
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   483
                    assertCheckWrite(testdir.resolve(entry));
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   484
                    sds.move(entry, sds, file.getFileName());  // restore file
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   485
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   486
                    // newDirectoryStream
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   487
                    entry = Paths.get("subdir1234");
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   488
                    createDirectory(testdir.resolve(entry));
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   489
                    try {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   490
                        prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   491
                        sds.newDirectoryStream(entry).close();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   492
                        assertCheckRead(testdir.resolve(entry));
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   493
                    } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   494
                        delete(testdir.resolve(entry));
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   495
                    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   496
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   497
                    // getFileAttributeView to access attributes of directory
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   498
                    testBasicFileAttributeView(sds
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   499
                        .getFileAttributeView(BasicFileAttributeView.class), testdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   500
                    testPosixFileAttributeView(sds
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   501
                        .getFileAttributeView(PosixFileAttributeView.class), testdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   502
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   503
                    // getFileAttributeView to access attributes of entry
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   504
                    entry = file.getFileName();
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   505
                    testBasicFileAttributeView(sds
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   506
                        .getFileAttributeView(entry, BasicFileAttributeView.class), file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   507
                    testPosixFileAttributeView(sds
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   508
                        .getFileAttributeView(entry, PosixFileAttributeView.class), file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   509
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   510
                } else {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   511
                    System.out.println("SecureDirectoryStream not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   512
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   513
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   514
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   515
            // -- toAbsolutePath --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   516
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   517
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   518
            file.getFileName().toAbsolutePath();
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   519
            assertCheckPropertyAccess("user.dir");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   520
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   521
            // -- toRealPath --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   522
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   523
            prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   524
            file.toRealPath(true);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   525
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   526
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   527
            prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   528
            file.toRealPath(false);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   529
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   530
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   531
            prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   532
            Paths.get(".").toRealPath(true);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   533
            assertCheckPropertyAccess("user.dir");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   534
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   535
            prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   536
            Paths.get(".").toRealPath(false);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   537
            assertCheckPropertyAccess("user.dir");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   538
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   539
            // -- register --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   540
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   541
            try (WatchService watcher = FileSystems.getDefault().newWatchService()) {
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   542
                prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   543
                testdir.register(watcher, StandardWatchEventKind.ENTRY_DELETE);
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   544
                assertCheckRead(testdir);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   545
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   546
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   547
            // -- getAttribute/setAttribute/readAttributes --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   548
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   549
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   550
            getAttribute(file, "size");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   551
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   552
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   553
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   554
            setAttribute(file, "lastModifiedTime",
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   555
                FileTime.fromMillis(System.currentTimeMillis()));
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   556
            assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   557
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   558
            prepare();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   559
            readAttributes(file, "*");
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   560
            assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   561
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   562
            // -- BasicFileAttributeView --
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   563
            testBasicFileAttributeView(
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   564
                getFileAttributeView(file, BasicFileAttributeView.class), file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   565
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   566
            // -- PosixFileAttributeView --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   567
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   568
            {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   569
                PosixFileAttributeView view =
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   570
                    getFileAttributeView(file, PosixFileAttributeView.class);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   571
                if (view != null &&
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   572
                    getFileStore(file).supportsFileAttributeView(PosixFileAttributeView.class))
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   573
                {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   574
                    testPosixFileAttributeView(view, file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   575
                } else {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   576
                    System.out.println("PosixFileAttributeView not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   577
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   578
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   579
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   580
            // -- DosFileAttributeView --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   581
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   582
            {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   583
                DosFileAttributeView view =
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   584
                    getFileAttributeView(file, DosFileAttributeView.class);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   585
                if (view != null &&
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   586
                    getFileStore(file).supportsFileAttributeView(DosFileAttributeView.class))
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   587
                {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   588
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   589
                    view.readAttributes();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   590
                    assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   591
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   592
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   593
                    view.setArchive(false);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   594
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   595
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   596
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   597
                    view.setHidden(false);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   598
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   599
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   600
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   601
                    view.setReadOnly(false);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   602
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   603
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   604
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   605
                    view.setSystem(false);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   606
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   607
                } else {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   608
                    System.out.println("DosFileAttributeView not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   609
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   610
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   611
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   612
            // -- FileOwnerAttributeView --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   613
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   614
            {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   615
                FileOwnerAttributeView view =
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   616
                    getFileAttributeView(file, FileOwnerAttributeView.class);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   617
                if (view != null &&
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   618
                    getFileStore(file).supportsFileAttributeView(FileOwnerAttributeView.class))
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   619
                {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   620
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   621
                    UserPrincipal owner = view.getOwner();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   622
                    assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   623
                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   624
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   625
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   626
                    view.setOwner(owner);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   627
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   628
                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   630
                } else {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   631
                    System.out.println("FileOwnerAttributeView not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   632
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   633
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   634
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   635
            // -- UserDefinedFileAttributeView --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   636
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   637
            {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   638
                UserDefinedFileAttributeView view =
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   639
                    getFileAttributeView(file, UserDefinedFileAttributeView.class);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   640
                if (view != null &&
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   641
                    getFileStore(file).supportsFileAttributeView(UserDefinedFileAttributeView.class))
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   642
                {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   643
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   644
                    view.write("test", ByteBuffer.wrap(new byte[100]));
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   645
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   646
                    assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   647
                                               "accessUserDefinedAttributes");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   648
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   649
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   650
                    view.read("test", ByteBuffer.allocate(100));
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   651
                    assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   652
                    assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   653
                                               "accessUserDefinedAttributes");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   654
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   655
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   656
                    view.size("test");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   657
                    assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   658
                    assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   659
                                               "accessUserDefinedAttributes");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   660
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   661
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   662
                    view.list();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   663
                    assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   664
                    assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   665
                                               "accessUserDefinedAttributes");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   666
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   667
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   668
                    view.delete("test");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   669
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   670
                    assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   671
                                               "accessUserDefinedAttributes");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   672
                } else {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   673
                    System.out.println("UserDefinedFileAttributeView not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   674
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   675
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   676
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   677
            // -- AclFileAttributeView --
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   678
            {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   679
                AclFileAttributeView view =
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   680
                    getFileAttributeView(file, AclFileAttributeView.class);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   681
                if (view != null &&
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   682
                    getFileStore(file).supportsFileAttributeView(AclFileAttributeView.class))
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   683
                {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   684
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   685
                    List<AclEntry> acl = view.getAcl();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   686
                    assertCheckRead(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   687
                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   688
                    prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   689
                    view.setAcl(acl);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   690
                    assertCheckWrite(file);
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   691
                    assertCheckPermission(RuntimePermission.class, "accessUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   692
                } else {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   693
                    System.out.println("AclFileAttributeView not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   694
                }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   695
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   696
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   697
            // -- UserPrincipalLookupService
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   698
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   699
            UserPrincipalLookupService lookupService =
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   700
                FileSystems.getDefault().getUserPrincipalLookupService();
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   701
            UserPrincipal owner = getOwner(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   702
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   703
            prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   704
            lookupService.lookupPrincipalByName(owner.getName());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   705
            assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   706
                                       "lookupUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   707
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   708
            try {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   709
                UserPrincipal group = readAttributes(file, PosixFileAttributes.class).group();
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   710
                prepare();
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   711
                lookupService.lookupPrincipalByGroupName(group.getName());
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   712
                assertCheckPermission(RuntimePermission.class,
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   713
                                           "lookupUserInformation");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   714
            } catch (UnsupportedOperationException ignore) {
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   715
                System.out.println("lookupPrincipalByGroupName not tested");
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   716
            }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   717
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   718
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   719
        } finally {
8158
77d9c0f1c19f 7006126: (fs) Updates to file system API (1/2011)
alanb
parents: 7668
diff changeset
   720
            deleteIfExists(file);
3629
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   721
        }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   722
    }
6035eed86b12 6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
alanb
parents:
diff changeset
   723
}