package org.bouncycastle.jce.provider;
import java.security.cert.PolicyNode;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class PKIXPolicyNode
implements PolicyNode
{
protected List children;
protected int depth;
protected Set expectedPolicies;
protected PolicyNode parent;
protected Set policyQualifiers;
protected String validPolicy;
protected boolean critical;
public PKIXPolicyNode(
List _children,
int _depth,
Set _expectedPolicies,
PolicyNode _parent,
Set _policyQualifiers,
String _validPolicy,
boolean _critical)
{
children = _children;
depth = _depth;
expectedPolicies = _expectedPolicies;
parent = _parent;
policyQualifiers = _policyQualifiers;
validPolicy = _validPolicy;
critical = _critical;
}
public void addChild(
PKIXPolicyNode _child)
{
children.add(_child);
_child.setParent(this);
}
public Iterator getChildren()
{
return children.iterator();
}
public int getDepth()
{
return depth;
}
public Set getExpectedPolicies()
{
return expectedPolicies;
}
public PolicyNode getParent()
{
return parent;
}
public Set getPolicyQualifiers()
{
return policyQualifiers;
}
public String getValidPolicy()
{
return validPolicy;
}
public boolean hasChildren()
{
return !children.isEmpty();
}
public boolean isCritical()
{
return critical;
}
public void removeChild(PKIXPolicyNode _child)
{
children.remove(_child);
}
public void setCritical(boolean _critical)
{
critical = _critical;
}
public void setParent(PKIXPolicyNode _parent)
{
parent = _parent;
}
public String toString()
{
return toString("");
}
public String toString(String _indent)
{
StringBuffer _buf = new StringBuffer();
_buf.append(_indent);
_buf.append(validPolicy);
_buf.append(" {\n");
for(int i = 0; i < children.size(); i++)
{
_buf.append(((PKIXPolicyNode)children.get(i)).toString(_indent + " "));
}
_buf.append(_indent);
_buf.append("}\n");
return _buf.toString();
}
public Object clone()
{
return copy();
}
public PKIXPolicyNode copy()
{
Set _expectedPolicies = new HashSet();
Iterator _iter = expectedPolicies.iterator();
while (_iter.hasNext())
{
_expectedPolicies.add(new String((String)_iter.next()));
}
Set _policyQualifiers = new HashSet();
_iter = policyQualifiers.iterator();
while (_iter.hasNext())
{
_policyQualifiers.add(new String((String)_iter.next()));
}
PKIXPolicyNode _node = new PKIXPolicyNode(new ArrayList(),
depth,
_expectedPolicies,
null,
_policyQualifiers,
new String(validPolicy),
critical);
_iter = children.iterator();
while (_iter.hasNext())
{
PKIXPolicyNode _child = ((PKIXPolicyNode)_iter.next()).copy();
_child.setParent(_node);
_node.addChild(_child);
}
return _node;
}
}