Actually, it's quite simple :)
You have to make a MyPolicy class (extending Policy), and declare one instance of that one.
private class MyPolicy extends Policy {
private PermissionCollection m_pc = null;
public MyPolicy() {
m_pc = new MyPermissionCollection();
m_pc.add((Permission) new FilePermission("tmp/-", "read,write,delete"));
}
}
You have to make a MyPermissionCollection class (extending PermissionCollection), and declare one instance of that one.
private class MyPermissionCollection extends PermissionCollection {
public void add(Permission permission) {
m_permissions.put(new Integer(permission.toString().hashCode()),
permission);
}
public String toString() {
return m_permissions.toString();
}
}
Your test class will be :
public Class Test {
public Test() {
MyPolicy mp = new MyPolicy();
Policy.setPolicy(mp);
System.setSecurityManager(new SecurityManager());
/* code trying to write a file in /tmp/ should be ok */
/* code trying to write a file in /etc/ should throw an AccessControlException */
}
}