FixedContext.java |
import java.security.*; import java.lang.reflect.*; public final class FixedContext { /** Contexte de sécurité au moment de la construction de l'objet. */ private AccessControlContext context; public FixedContext() { // Récupération et stockage du contexte de sécurité courant this.context = AccessController.getContext(); } public Object method(Object param) { // Exécution du code de la méthode dans le contexte // de sécurité de création de l'objet courant return AccessController.doPrivileged(new MethodAction(param),context); } /** Classe interne représentant le code de la méthode à exécuter. */ class MethodAction implements PrivilegedAction { Object param; MethodAction(Object param) { this.param = param; } /** Code de la méthode à exécuter. */ public Object run() { // ... // Opérations sensibles // ... return param; } } }