001 /*
002 * (c) 2010 ThoughtWorks Ltd
003 * All rights reserved.
004 *
005 * The software in this package is published under the terms of the BSD
006 * style license a copy of which has been included with this distribution in
007 * the LICENSE.txt file.
008 *
009 * Created on 19-03-2010.
010 */
011 package com.thoughtworks.proxy.toys.privilege;
012
013 import java.security.AccessControlContext;
014 import java.security.AccessController;
015 import java.security.PrivilegedActionException;
016 import java.security.PrivilegedExceptionAction;
017
018
019 /**
020 * Execution of a {@link PrivilegedExceptionAction} with the {@link AccessController}.
021 *
022 * @author Jörg Schaible
023 * @since 1.0
024 */
025 public class AccessControllerExecutor implements ActionExecutor {
026 private final AccessControlContext context;
027
028 /**
029 * Construct an AccessControllerExecutor that runs a {@link PrivilegedExceptionAction} with
030 * the privileges of the {@link AccessControlContext} of the caller.
031 *
032 * @since 1.0
033 */
034 public AccessControllerExecutor() {
035 this(null);
036 }
037
038 /**
039 * Construct an AccessControllerExecutor that runs a {@link PrivilegedExceptionAction} with
040 * special privileges.
041 *
042 * @param context the {@link AccessControlContext} defining the privileges used to run the
043 * action
044 * @since 1.0
045 */
046 public AccessControllerExecutor(AccessControlContext context) {
047 this.context = context;
048 }
049
050 public Object execute(PrivilegedExceptionAction<Object> action)
051 throws PrivilegedActionException {
052 return AccessController.doPrivileged(action, context);
053 }
054 }