6631361: Spec of AccessControlContext constructor is not complete
Add NullPointerException to @throws clause and treat empty array and array of nulls as equivalent Reviewed-by: valeriep
This commit is contained in:
parent
43aa87d64a
commit
5a0ae8fa6f
jdk
src/share/classes/java/security
test/java/security/AccessControlContext
@ -101,13 +101,14 @@ public final class AccessControlContext {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an AccessControlContext with the given set of ProtectionDomains.
|
||||
* Create an AccessControlContext with the given array of ProtectionDomains.
|
||||
* Context must not be null. Duplicate domains will be removed from the
|
||||
* context.
|
||||
*
|
||||
* @param context the ProtectionDomains associated with this context.
|
||||
* The non-duplicate domains are copied from the array. Subsequent
|
||||
* changes to the array will not affect this AccessControlContext.
|
||||
* @throws NullPointerException if <code>context</code> is <code>null</code>
|
||||
*/
|
||||
public AccessControlContext(ProtectionDomain context[])
|
||||
{
|
||||
@ -125,8 +126,10 @@ public final class AccessControlContext {
|
||||
if ((context[i] != null) && (!v.contains(context[i])))
|
||||
v.add(context[i]);
|
||||
}
|
||||
this.context = new ProtectionDomain[v.size()];
|
||||
this.context = v.toArray(this.context);
|
||||
if (!v.isEmpty()) {
|
||||
this.context = new ProtectionDomain[v.size()];
|
||||
this.context = v.toArray(this.context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
70
jdk/test/java/security/AccessControlContext/CheckCtor.java
Normal file
70
jdk/test/java/security/AccessControlContext/CheckCtor.java
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6631361
|
||||
* @summary Test constructor when PD array is null or contains all null contexts
|
||||
*/
|
||||
|
||||
import java.security.AccessControlContext;
|
||||
import java.security.ProtectionDomain;
|
||||
|
||||
public class CheckCtor {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
// check that null PD array throws NPE
|
||||
try {
|
||||
new AccessControlContext(null);
|
||||
throw new Exception("Expected NullPointerException not thrown");
|
||||
} catch (Exception e) {
|
||||
if (!(e instanceof NullPointerException)) {
|
||||
throw new Exception("Expected NullPointerException not thrown");
|
||||
}
|
||||
}
|
||||
|
||||
// check that empty PD array equals PD array of one or more nulls
|
||||
ProtectionDomain zero[] = {};
|
||||
ProtectionDomain null1[] = {null};
|
||||
ProtectionDomain null2[] = {null, null};
|
||||
|
||||
AccessControlContext accZero = new AccessControlContext(zero);
|
||||
AccessControlContext accNull1 = new AccessControlContext(null1);
|
||||
AccessControlContext accNull2 = new AccessControlContext(null2);
|
||||
|
||||
testEquals(accZero, accNull1);
|
||||
testEquals(accZero, accNull2);
|
||||
testEquals(accNull1, accNull2);
|
||||
testEquals(accNull1, accZero);
|
||||
testEquals(accNull2, accZero);
|
||||
testEquals(accNull2, accNull1);
|
||||
}
|
||||
|
||||
private static void testEquals(AccessControlContext acc1,
|
||||
AccessControlContext acc2) throws Exception {
|
||||
if (!acc1.equals(acc2)) {
|
||||
throw new Exception("AccessControlContexts should be equal");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user