
// Standard extensions get all permissions by default

grant codeBase "file:${java.home}/lib/ext/*" {
	permission java.security.AllPermission;
};

grant codeBase "file:${maven.home}/-" {
	permission java.security.AllPermission;
};

grant codeBase "file:${maven.build.dest}" {
    permission java.io.FilePermission "${user.dir}/vfs_cache/-", "read, write, delete";
    permission java.io.FilePermission "${user.dir}/vfs_cache", "read, write, delete";
    permission java.io.FilePermission "${user.dir}", "read";
    permission java.net.NetPermission "specifyStreamHandler";
};

// default permissions granted to all domains

grant { 
    permission java.io.FilePermission "${test.basedir}/write-tests", "read, write, delete";
    permission java.io.FilePermission "${test.basedir}/write-tests/-", "read, write, delete";
    permission java.io.FilePermission "${test.basedir}/-", "read";
    permission java.io.FilePermission "${test.basedir}", "read";

    //This is needed for the ClassLoader tests.
    permission java.lang.RuntimePermission "createClassLoader";

	// Allows any thread to stop itself using the java.lang.Thread.stop()
	// method that takes no argument.
	// Note that this permission is granted by default only to remain
	// backwards compatible.
	// It is strongly recommended that you either remove this permission
	// from this policy file or further restrict it to code sources
	// that you specify, because Thread.stop() is potentially unsafe.
	// See "http://java.sun.com/notes" for more information.
	permission java.lang.RuntimePermission "stopThread";

	// allows anyone to listen on un-privileged ports
	permission java.net.SocketPermission "localhost:1024-", "listen";

	// "standard" properies that can be read by anyone

	permission java.util.PropertyPermission "java.version", "read";
	permission java.util.PropertyPermission "java.vendor", "read";
	permission java.util.PropertyPermission "java.vendor.url", "read";
	permission java.util.PropertyPermission "java.class.version", "read";
	permission java.util.PropertyPermission "os.name", "read";
	permission java.util.PropertyPermission "os.version", "read";
	permission java.util.PropertyPermission "os.arch", "read";
	permission java.util.PropertyPermission "file.separator", "read";
	permission java.util.PropertyPermission "path.separator", "read";
	permission java.util.PropertyPermission "line.separator", "read";

	permission java.util.PropertyPermission "java.specification.version", "read";
	permission java.util.PropertyPermission "java.specification.vendor", "read";
	permission java.util.PropertyPermission "java.specification.name", "read";

	permission java.util.PropertyPermission "java.vm.specification.version", "read";
	permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
	permission java.util.PropertyPermission "java.vm.specification.name", "read";
	permission java.util.PropertyPermission "java.vm.version", "read";
	permission java.util.PropertyPermission "java.vm.vendor", "read";
	permission java.util.PropertyPermission "java.vm.name", "read";
	permission java.util.PropertyPermission "test.basedir", "read";
	permission java.util.PropertyPermission "user.dir", "read";
};

