1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Alexander V. Astapchuk 208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security; 238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.*; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLClassLoader; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unit tests for java.security.ProtectionDomain. 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ProtectionDomainTest extends TestCase { 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final AllPermission allperm = new AllPermission(); 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private URL url = null; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private CodeSource cs = null; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private PermissionCollection perms = null; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private ClassLoader classldr = null; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Principal[] principals = null; // changed in setUp() 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @see TestCase#setUp() 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url = new URL("http://localhost"); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MalformedURLException ex) { 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new Error(ex); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cs = new CodeSource(url, (java.security.cert.Certificate[]) null); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes perms = allperm.newPermissionCollection(); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes perms.add(allperm); 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes classldr = URLClassLoader.newInstance(new URL[] { url }); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes principals = new Principal[] { new TestPrincipal("0"), 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new TestPrincipal("1"), new TestPrincipal("2"), 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new TestPrincipal("3"), new TestPrincipal("4"), }; 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Class under test for void ProtectionDomain(CodeSource, 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * PermissionCollection) 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testProtectionDomainCodeSourcePermissionCollection_00() { 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, null); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(cs, null); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(cs, perms); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the ctor must set the PermissionCollection read-only 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testProtectionDomainCodeSourcePermissionCollection_01() { 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(perms.isReadOnly()); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, perms); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(perms.isReadOnly()); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for ProtectionDomain(CodeSource, PermissionCollection, ClassLoader, Principal[]) 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testProtectionDomainCodeSourcePermissionCollectionClassLoaderPrincipalArray() { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, null, null, null); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(cs, null, null, null); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, perms, null, null); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, null, classldr, null); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, null, null, principals); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(cs, perms, classldr, principals); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for ProtectionDomain.getClassLoader() 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetClassLoader() { 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(new ProtectionDomain(null, null).getClassLoader()); 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(new ProtectionDomain(null, null, classldr, null) 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getClassLoader(), classldr); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for ProtectionDomain.getCodeSource() 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetCodeSource() { 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(new ProtectionDomain(null, null).getCodeSource()); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(new ProtectionDomain(cs, null).getCodeSource(), cs); 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for ProtectionDomain.getPermissions() 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPermissions() { 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(new ProtectionDomain(null, null).getPermissions()); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(new ProtectionDomain(null, perms).getPermissions(), perms); 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getPrincipals() always returns non null array 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPrincipals_00() { 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(new ProtectionDomain(null, null).getPrincipals()); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getPrincipals() returns new array each time it's called 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetPrincipals_01() { 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProtectionDomain pd = new ProtectionDomain(null, null, null, principals); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Principal[] got = pd.getPrincipals(); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(got); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(got, principals); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(got, pd.getPrincipals()); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(got.length == principals.length); 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ProtectionDomain with null Permissions must not imply() permissions. 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testImplies_00() { 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(new ProtectionDomain(null, null).implies(allperm)); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ProtectionDomain with PermissionCollection which contains AllPermission 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * must imply() AllPermission. 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testImplies_01() { 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(new ProtectionDomain(null, perms).implies(allperm)); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 163e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ProtectionDomain created with a static set of permissions must not query 164e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * policy. 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testImplies_02() { 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestPolicy policy = new TestPolicy(); 168e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // null set of permissions [must] force the PD to use Policy - for 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // dynamic permissions 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProtectionDomain pd = new ProtectionDomain(cs, null); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes policy.setTrackPD(pd); 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Policy.setPolicy(policy); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pd.implies(allperm); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Policy.setPolicy(null); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(policy.getPdTracked()); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 182e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ProtectionDomain created with dynamic set of permissions must query 183e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * policy. 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testImplies_03() { 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestPolicy policy = new TestPolicy(); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProtectionDomain pd = new ProtectionDomain(cs, null, ClassLoader 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSystemClassLoader(), principals); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes policy.setTrackPD(pd); 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Policy.setPolicy(policy); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pd.implies(allperm); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } finally { 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Policy.setPolicy(null); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(policy.getPdTracked()); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Simply checks that it's working somehow 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testToString() { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, null).toString(); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(cs, perms).toString(); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(null, null, null, null).toString(); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ProtectionDomain(cs, perms, classldr, principals).toString(); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test principal used during the testing. Does nothing. 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class TestPrincipal implements Principal { 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String name; 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestPrincipal(String name) { 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.name = name; 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getName() { 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "TestPrincipal: " + name; 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class TestPolicy extends Policy { 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProtectionDomain trackPD = null; 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean pdTracked = false; 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProtectionDomain setTrackPD(ProtectionDomain pd) { 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ProtectionDomain tmp = trackPD; 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes trackPD = pd; 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pdTracked = false; 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return tmp; 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean getPdTracked() { 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return pdTracked; 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PermissionCollection getPermissions(CodeSource cs) { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new Permissions(); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // public PermissionCollection getPermissions(ProtectionDomain domain) { 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // return super.getPermissions(domain); 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // } 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean implies(ProtectionDomain domain, Permission permission) { 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (trackPD != null && trackPD == domain) { 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pdTracked = true; 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return super.implies(domain, permission); 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void refresh() { 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do nothing 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 261