Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/nio/file/WatchService/WithSecurityManager.java
38828 views
/*1* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/* @test24* @bug 431388725* @summary Unit test for Watchable#register's permission checks26* @build WithSecurityManager27* @run main/othervm WithSecurityManager denyAll.policy - fail28* @run main/othervm WithSecurityManager denyAll.policy tree fail29* @run main/othervm WithSecurityManager grantDirOnly.policy - pass30* @run main/othervm WithSecurityManager grantDirOnly.policy tree fail31* @run main/othervm WithSecurityManager grantDirAndOneLevel.policy - pass32* @run main/othervm WithSecurityManager grantDirAndOneLevel.policy tree fail33* @run main/othervm WithSecurityManager grantDirAndTree.policy - pass34* @run main/othervm WithSecurityManager grantDirAndTree.policy tree pass35*/3637import java.nio.file.*;38import java.io.IOException;39import com.sun.nio.file.ExtendedWatchEventModifier;4041public class WithSecurityManager {4243public static void main(String[] args) throws IOException {44String policyFile = args[0];45boolean recursive = args[1].equals("tree");46boolean expectedToFail = args[2].equals("fail");4748// install security manager with the given policy file49String testSrc = System.getProperty("test.src");50if (testSrc == null)51throw new RuntimeException("This test must be run by jtreg");52Path dir = Paths.get(testSrc);53System.setProperty("java.security.policy", dir.resolve(policyFile).toString());54System.setSecurityManager(new SecurityManager());5556// initialize optional modifier57WatchEvent.Modifier[] modifiers;58if (recursive) {59modifiers = new WatchEvent.Modifier[1];60modifiers[0] = ExtendedWatchEventModifier.FILE_TREE;61} else {62modifiers = new WatchEvent.Modifier[0];63}6465// attempt to register directory66try {67dir.register(dir.getFileSystem().newWatchService(),68new WatchEvent.Kind<?>[]{ StandardWatchEventKinds.ENTRY_CREATE },69modifiers);70if (expectedToFail)71throw new RuntimeException("SecurityException not thrown");72} catch (SecurityException e) {73if (!expectedToFail)74throw e;75} catch (UnsupportedOperationException e) {76// FILE_TREE modifier only supported on some platforms77if (!recursive)78throw new RuntimeException(e);79System.out.println("FILE_TREE option not supported");80}81}82}838485