Home | History | Annotate | Download | only in provider
      1 package org.bouncycastle.jce.provider;
      2 
      3 import java.security.cert.PolicyNode;
      4 import java.util.ArrayList;
      5 import java.util.HashSet;
      6 import java.util.Iterator;
      7 import java.util.List;
      8 import java.util.Set;
      9 
     10 public class PKIXPolicyNode
     11     implements PolicyNode
     12 {
     13     protected List       children;
     14     protected int        depth;
     15     protected Set        expectedPolicies;
     16     protected PolicyNode parent;
     17     protected Set        policyQualifiers;
     18     protected String     validPolicy;
     19     protected boolean    critical;
     20 
     21     /*
     22      *
     23      *  CONSTRUCTORS
     24      *
     25      */
     26 
     27     public PKIXPolicyNode(
     28         List       _children,
     29         int        _depth,
     30         Set        _expectedPolicies,
     31         PolicyNode _parent,
     32         Set        _policyQualifiers,
     33         String     _validPolicy,
     34         boolean    _critical)
     35     {
     36         children         = _children;
     37         depth            = _depth;
     38         expectedPolicies = _expectedPolicies;
     39         parent           = _parent;
     40         policyQualifiers = _policyQualifiers;
     41         validPolicy      = _validPolicy;
     42         critical         = _critical;
     43     }
     44 
     45     public void addChild(
     46         PKIXPolicyNode _child)
     47     {
     48         children.add(_child);
     49         _child.setParent(this);
     50     }
     51 
     52     public Iterator getChildren()
     53     {
     54         return children.iterator();
     55     }
     56 
     57     public int getDepth()
     58     {
     59         return depth;
     60     }
     61 
     62     public Set getExpectedPolicies()
     63     {
     64         return expectedPolicies;
     65     }
     66 
     67     public PolicyNode getParent()
     68     {
     69         return parent;
     70     }
     71 
     72     public Set getPolicyQualifiers()
     73     {
     74         return policyQualifiers;
     75     }
     76 
     77     public String getValidPolicy()
     78     {
     79         return validPolicy;
     80     }
     81 
     82     public boolean hasChildren()
     83     {
     84         return !children.isEmpty();
     85     }
     86 
     87     public boolean isCritical()
     88     {
     89         return critical;
     90     }
     91 
     92     public void removeChild(PKIXPolicyNode _child)
     93     {
     94         children.remove(_child);
     95     }
     96 
     97     public void setCritical(boolean _critical)
     98     {
     99         critical = _critical;
    100     }
    101 
    102     public void setParent(PKIXPolicyNode _parent)
    103     {
    104         parent = _parent;
    105     }
    106 
    107     public String toString()
    108     {
    109         return toString("");
    110     }
    111 
    112     public String toString(String _indent)
    113     {
    114         StringBuffer _buf = new StringBuffer();
    115         _buf.append(_indent);
    116         _buf.append(validPolicy);
    117         _buf.append(" {\n");
    118 
    119         for(int i = 0; i < children.size(); i++)
    120         {
    121             _buf.append(((PKIXPolicyNode)children.get(i)).toString(_indent + "    "));
    122         }
    123 
    124         _buf.append(_indent);
    125         _buf.append("}\n");
    126         return _buf.toString();
    127     }
    128 
    129     public Object clone()
    130     {
    131         return copy();
    132     }
    133 
    134     public PKIXPolicyNode copy()
    135     {
    136         Set     _expectedPolicies = new HashSet();
    137         Iterator _iter = expectedPolicies.iterator();
    138         while (_iter.hasNext())
    139         {
    140             _expectedPolicies.add(new String((String)_iter.next()));
    141         }
    142 
    143         Set     _policyQualifiers = new HashSet();
    144         _iter = policyQualifiers.iterator();
    145         while (_iter.hasNext())
    146         {
    147             _policyQualifiers.add(new String((String)_iter.next()));
    148         }
    149 
    150         PKIXPolicyNode _node = new PKIXPolicyNode(new ArrayList(),
    151                                                   depth,
    152                                                   _expectedPolicies,
    153                                                   null,
    154                                                   _policyQualifiers,
    155                                                   new String(validPolicy),
    156                                                   critical);
    157 
    158         _iter = children.iterator();
    159         while (_iter.hasNext())
    160         {
    161             PKIXPolicyNode _child = ((PKIXPolicyNode)_iter.next()).copy();
    162             _child.setParent(_node);
    163             _node.addChild(_child);
    164         }
    165 
    166         return _node;
    167     }
    168 
    169     public void setExpectedPolicies(Set expectedPolicies)
    170     {
    171         this.expectedPolicies = expectedPolicies;
    172     }
    173 }
    174