package org.mobicents.slee.container.component.security;
import java.security.CodeSource;
import java.security.Permission;
import java.util.ArrayList;
import java.util.List;
import sun.security.provider.PolicyParser;
import sun.security.provider.PolicyParser.PrincipalEntry;
class PolicyHolderEntry {
private final CodeSource codesource;
private final List<Permission> permissions;
private final List<PolicyParser.PrincipalEntry> principals;
public PolicyHolderEntry(CodeSource codesource, List<PrincipalEntry> principals) {
super();
this.codesource = codesource;
this.principals = principals;
permissions = new ArrayList<Permission>();
}
public PolicyHolderEntry(CodeSource codesource) {
this(codesource, null);
}
public CodeSource getCodeSource() {
return codesource;
}
public List<PolicyParser.PrincipalEntry> getPrincipals() {
return principals;
}
public void add(Permission p) {
permissions.add(p);
}
public List<Permission> getPermissions() {
// FIXME: add new list?
return this.permissions;
}
@Override
public String toString() {
return this.getClass().getSimpleName()+" cs: "+codesource+" -- "+permissions.size();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codesource == null) ? 0 : codesource.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
PolicyHolderEntry other = (PolicyHolderEntry) obj;
if (codesource == null) {
if (other.codesource != null)
return false;
} else if (!codesource.equals(other.codesource))
return false;
return true;
}
}