/**************************************************************************
* Copyright (c) 2001 by Punch Telematix. All rights reserved. *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* 1. Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* 3. Neither the name of Punch Telematix nor the names of *
* other contributors may be used to endorse or promote products *
* derived from this software without specific prior written permission.*
* *
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED *
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. *
* IN NO EVENT SHALL PUNCH TELEMATIX OR OTHER CONTRIBUTORS BE LIABLE *
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF *
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR *
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, *
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE *
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN *
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
**************************************************************************/
/*
** $Id: UnresolvedPermission.java,v 1.2 2006/02/23 12:32:12 cvs Exp $
*/
package java.security;
import java.io.Serializable;
public final class UnresolvedPermission extends Permission implements Serializable{
private static final long serialVersionUID = -4821973115467008846L;
private String name;
private String actions;
private java.security.cert.Certificate[] certs;
public UnresolvedPermission (String type, String name, String actions, java.security.cert.Certificate[] certs) {
super(type);
this.name=name; //doesn't need stric verification (null is allowed in AllPermission)
this.actions = actions;//doesn't need stric verification (null is allowed --> AWTPermission, ...)
this.certs = certs; //TODO verify for illegalArguments ... we allow null, but what of null elements in the array!
}
public boolean equals (Object obj) {
if (!(obj instanceof UnresolvedPermission)) {
return false;
}
UnresolvedPermission up = (UnresolvedPermission)obj;
int i,j;
if (this.certs.length != up.certs.length) {
return false;
}
boolean found;
if (this.certs == null) {
if (up.certs != null) {
return false;
}
}
else {
if (up.certs == null) {
return false;
}
for (i = 0; i < this.certs.length; ++i) {
found = false;
for (j = 0; j < up.certs.length; ++j) {
if (this.certs[i].equals(up.certs[j])) {
found = true;
break;
}
}
if (!found) {
return false;
}
}
}
return this.getName().equals(up.getName())
&& (this.name != null ? this.name.equals(up.name) : up.name == null)
&& (this.actions != null ? this.actions.equals(up.actions) : up.actions == null);
}
public boolean implies (Permission perm) {
return false;
}
public int hashCode() {
// int hash = this.getName().hashCode() * 253 + type.hashCode() * 37 + actions.hashCode();
int hash = this.getName().hashCode() ^ (name != null ? name.hashCode():0) ^ (actions != null ? actions.hashCode() : 0 );
for (int i = 0; i < certs.length; ++i) {
hash ^= certs[i].hashCode(); /*hash * 43 +*/
}
return hash;
}
public String getActions() {
return "";
}
/**
** Returns a string describing this UnresolvedPermission.
** The convention is to specify the class name, the permission name, and the actions, in
** the following format: '(unresolved "ClassName" "name" "actions")'.
*/
public String toString(){
return "(unresolved "+getName()+" "+name+" "+actions+")";
}
public PermissionCollection newPermissionCollection() {
return new wonka.security.UnresolvedPermissionCollection();
}
}