1fc95c99cfa4921fef424f3f411d013b821589e69Elliott 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 8fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10fc95c99cfa4921fef424f3f411d013b821589e69Elliott 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 Hughespackage tests.api.java.security; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessControlContext; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AccessController; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AllPermission; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.BasicPermission; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.CodeSource; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.DomainCombiner; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PermissionCollection; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permissions; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PrivilegedAction; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.ProtectionDomain; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SecurityPermission; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.Certificate; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class DomainCombinerTest extends junit.framework.TestCase { 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath /** 378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @tests java.security.DomainCombiner#combine(java.security.ProtectionDomain[], 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath *java.security.ProtectionDomain[]) 398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public void test_combine$Ljava_security_ProtectionDomain$Ljava_security_ProtectionDomain() { 418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath final boolean[] calledDomainCombiner = new boolean[] { false, false }; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath class MyCombiner implements DomainCombiner { 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int i; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MyCombiner(int i) { 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath this.i = i; 488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public ProtectionDomain[] combine( 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ProtectionDomain[] executionDomains, 528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ProtectionDomain[] parentDomains) { 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath calledDomainCombiner[i] = true; 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath PermissionCollection pc = new Permissions(); 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath pc.add(new AllPermission()); 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ProtectionDomain pd; 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // if run with the system classloader then there will be no 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // execution domains 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (executionDomains.length > 0) { 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath pd = new ProtectionDomain(executionDomains[0] 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath .getCodeSource(), pc); 628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } else { 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath pd = new ProtectionDomain(parentDomains[0].getCodeSource(), 648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath pc); 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return new ProtectionDomain[] { pd }; 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ProtectionDomain[] domains = new ProtectionDomain[] { new ProtectionDomain( 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new CodeSource(null, (Certificate[]) null), new Permissions()) }; 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath AccessControlContext parent = new AccessControlContext(domains); 748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath AccessControlContext c0 = new AccessControlContext(parent, 758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new MyCombiner(0)); 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath final AccessControlContext c1 = new AccessControlContext(parent, 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new MyCombiner(1)); 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath class TestPermission extends BasicPermission { 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath TestPermission(String s) { 818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath super(s); 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 86fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes} 87