Todas las clases permission tiene que ser una subclase de java.security.Permission o de java.security.BasicPermission. La diferencia básica entre las dos es que java.security.Permission define permisos más complejos que requieren nombres y acciones. Por ejemplo, un java.io.FilePermission desciende de java.security.Permission, y requiere un nombre (un nombre de fichero) y las acciones permitidas para ese fichero (leer/escribir/borrar).
En contraste, java.security.BasicPermission define permisos sencillos que sólo requieren un nombre. Por ejemplo, java.lang.RuntimePermission desciende de java.security.BasicPermission y sólo necesita un nombre (como "exitVM"), que permite a los programas salir de ma Maquina Virtual Java.
Nuestro HighScorePermission es un permiso sencillo, y de hecho puede descender de java.security.BasicPermission.
Frecuentemente, la implementación de los métodos de la propia clase BasicPermission no tiene que ser sobreescrita por sus subclases. Este es el caso de nuestro HighScorePermission, por eso todo lo que tenemos que implementar son los constructores, que sólo invocan a los constructores de la superclase, como se ve en el código:
package com.scoredev.scores;
import java.security.*;
public final class HighScorePermission extends BasicPermission {
public HighScorePermission(String name)
{
super(name);
}
// note that actions is ignored and not used,
// but this constructor is still needed
public HighScorePermission(String name, String actions)
{
super(name, actions);
}
}