Methods Summary |
---|
public boolean | equals(java.lang.Object obj)
if (obj == this) {
return true;
}
if (obj == null || this.getClass() != obj.getClass()) {
return false;
}
PrivateCredentialPermission that = (PrivateCredentialPermission) obj;
return credentialClass.equals(that.credentialClass) && (offset == that.offset)
&& sameMembers(set, that.set, offset);
|
public java.lang.String | getActions()
return READ;
|
public java.lang.String | getCredentialClass()Returns the class name of the credential associated with this permission.
return credentialClass;
|
public java.lang.String[][] | getPrincipals()Returns the principal's classes and names associated with this {@code
PrivateCredentialPermission} as a two dimensional array. The first
dimension of the array corresponds to the number of principals. The
second dimension defines either the name of the {@code PrincipalClass}
[x][0] or the value of {@code PrincipalName} [x][1].
This corresponds to the the target name's syntax:
targetName = CredentialClass {PrincipalClass "PrincipalName"}*
String[][] s = new String[offset][2];
for (int i = 0; i < s.length; i++) {
s[i][0] = set[i].principalClass;
s[i][1] = set[i].principalName;
}
return s;
|
public int | hashCode()
int hash = 0;
for (int i = 0; i < offset; i++) {
hash = hash + set[i].hashCode();
}
return getCredentialClass().hashCode() + hash;
|
public boolean | implies(java.security.Permission permission)
if (permission == null || this.getClass() != permission.getClass()) {
return false;
}
PrivateCredentialPermission that = (PrivateCredentialPermission) permission;
if (!("*".equals(credentialClass) || credentialClass //$NON-NLS-1$
.equals(that.getCredentialClass()))) {
return false;
}
if (that.offset == 0) {
return true;
}
CredOwner[] thisCo = set;
CredOwner[] thatCo = that.set;
int thisPrincipalsSize = offset;
int thatPrincipalsSize = that.offset;
for (int i = 0, j; i < thisPrincipalsSize; i++) {
for (j = 0; j < thatPrincipalsSize; j++) {
if (thisCo[i].implies(thatCo[j])) {
break;
}
}
if (j == thatCo.length) {
return false;
}
}
return true;
|
private void | initTargetName(java.lang.String name)Initialize a PrivateCredentialPermission object and checks that a target
name has a correct format: CredentialClass 1*(PrincipalClass
"PrincipalName")
if (name == null) {
throw new NullPointerException(Messages.getString("auth.0E")); //$NON-NLS-1$
}
// check empty string
name = name.trim();
if (name.length() == 0) {
throw new IllegalArgumentException(Messages.getString("auth.0F")); //$NON-NLS-1$
}
// get CredentialClass
int beg = name.indexOf(' ");
if (beg == -1) {
throw new IllegalArgumentException(Messages.getString("auth.10")); //$NON-NLS-1$
}
credentialClass = name.substring(0, beg);
// get a number of pairs: PrincipalClass "PrincipalName"
beg++;
int count = 0;
int nameLength = name.length();
for (int i, j = 0; beg < nameLength; beg = j + 2, count++) {
i = name.indexOf(' ", beg);
j = name.indexOf('"", i + 2);
if (i == -1 || j == -1 || name.charAt(i + 1) != '"") {
throw new IllegalArgumentException(Messages.getString("auth.10")); //$NON-NLS-1$
}
}
// name MUST have one pair at least
if (count < 1) {
throw new IllegalArgumentException(Messages.getString("auth.10")); //$NON-NLS-1$
}
beg = name.indexOf(' ");
beg++;
// populate principal set with instances of CredOwner class
String principalClass;
String principalName;
set = new CredOwner[count];
for (int index = 0, i, j; index < count; beg = j + 2, index++) {
i = name.indexOf(' ", beg);
j = name.indexOf('"", i + 2);
principalClass = name.substring(beg, i);
principalName = name.substring(i + 2, j);
CredOwner element = new CredOwner(principalClass, principalName);
// check for duplicate elements
boolean found = false;
for (int ii = 0; ii < offset; ii++) {
if (set[ii].equals(element)) {
found = true;
break;
}
}
if (!found) {
set[offset++] = element;
}
}
|
public java.security.PermissionCollection | newPermissionCollection()
return null;
|
private void | readObject(java.io.ObjectInputStream ois)
ois.defaultReadObject();
initTargetName(getName());
|
private boolean | sameMembers(java.lang.Object[] ar1, java.lang.Object[] ar2, int length)Returns true if the two arrays have the same length, and every member of
one array is contained in another array
if (ar1 == null && ar2 == null) {
return true;
}
if (ar1 == null || ar2 == null) {
return false;
}
boolean found;
for (int i = 0; i < length; i++) {
found = false;
for (int j = 0; j < length; j++) {
if (ar1[i].equals(ar2[j])) {
found = true;
break;
}
}
if (!found) {
return false;
}
}
return true;
|