Para comprobar si TerrysGame tiene o no permiso para acceder a la máxima puntuación del usuario, la clase HighScore debe:Aquí está el código:
- Llamar a System.getSecurityManager() para obtener el controlador de seguridad instalado realmente.
- Si el resultado no es null (es decir, es un controlador de seguridad, lo opuesto a cuando el llamador es una aplicación que no tiene restricciones), entonces
- Construye un objeto HighScorePermission, y
- llama al método checkPermission del controlador de seguridad, y el pasa el objeto HighScorePermission recientemente construido.
SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new HighScorePermission(gameName)); }Esencialmente el método checkPermission lepreginta al controlador de seguridad si TerrysGame tiene el HighScorePermission especificado. En otras palabras, le pregunta al controlador se seguridad si TerrysGame tiene permiso para actualizar la máxima puntuación del usuario para el juego específicado (TerrysGame). El marco de trabajo de seguridad en segundo plano consultará el fichero de policía del usuario para ver si realmente TerrysGame tiene este permiso.
Aquí está el código fuente completo de la clase HighScore.Nota: las llamadas al método doPrivileged se utilizan para permitir a HighScore un acceso temporal a los recursos que tiene disponibles, pero no está disponible para el código que llamó a (TerrysGame). Por ejemplo, espera que el fichero de policía conceda permiso a HighScore para acceder al fichero .highscore en el directorio home del usuario, pero no concede este permiso a los juegos, como TerrysGame. Para más información sobre el uso de los métodos doPrivileged puedes New Privileged Block API en la web site de java.sun.com.