1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.security; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 36e26b27faf689c17b7894c78caee32432176349ecElliott Hughes * Legacy security code; do not use. 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic final class AccessController { 39e26b27faf689c17b7894c78caee32432176349ecElliott Hughes private AccessController() { } 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 42ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes * Calls {@code action.run()}. 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static <T> T doPrivileged(PrivilegedAction<T> action) { 45ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes return action.run(); 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 49ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes * Calls {@code action.run()}. 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 51ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes public static <T> T doPrivileged(PrivilegedAction<T> action, AccessControlContext context) { 52ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes return action.run(); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 56ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes * Calls {@code action.run()}. 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 58ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes public static <T> T doPrivileged(PrivilegedExceptionAction<T> action) throws PrivilegedActionException { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return action.run(); 618556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson } catch (RuntimeException e) { 628556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson throw e; // so we don't wrap RuntimeExceptions with PrivilegedActionException 638556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson } catch (Exception e) { 648556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson throw new PrivilegedActionException(e); 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 68ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes /** 69ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes * Calls {@code action.run()}. 70ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes */ 71ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes public static <T> T doPrivileged(PrivilegedExceptionAction<T> action, AccessControlContext context) throws PrivilegedActionException { 72ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes return doPrivileged(action); 738556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson } 748556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson 75ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes /** 76ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes * Calls {@code action.run()}. 77ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes */ 78ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes public static <T> T doPrivilegedWithCombiner(PrivilegedAction<T> action) { 79ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes return action.run(); 808556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson } 818556e0aed87cbbf5338e053f9df55a936f788f5fJesse Wilson 82ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes /** 83ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes * Calls {@code action.run()}. 84ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes */ 85ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes public static <T> T doPrivilegedWithCombiner(PrivilegedExceptionAction<T> action) throws PrivilegedActionException { 86ad41624e761bcf1af9c8008eb45187fc13983717Elliott Hughes return doPrivileged(action); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 89e26b27faf689c17b7894c78caee32432176349ecElliott Hughes public static void checkPermission(Permission permission) throws AccessControlException { } 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 91e26b27faf689c17b7894c78caee32432176349ecElliott Hughes public static AccessControlContext getContext() { return new AccessControlContext(null); } 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 93