// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) fieldsfirst nonlb // Source File Name: PolicyNodeImpl.java package sun.security.provider.certpath; import java.security.cert.PolicyNode; import java.util.*; final class PolicyNodeImpl implements PolicyNode { private static final String ANY_POLICY = "2.5.29.32.0"; private PolicyNodeImpl mParent; private HashSet mChildren; private String mValidPolicy; private HashSet mQualifierSet; private boolean mCriticalityIndicator; private HashSet mExpectedPolicySet; private boolean mOriginalExpectedPolicySet; private int mDepth; private boolean isImmutable; PolicyNodeImpl(PolicyNodeImpl policynodeimpl, String s, Set set, boolean flag, Set set1, boolean flag1) { isImmutable = false; mParent = policynodeimpl; mChildren = new HashSet(); if(s != null) mValidPolicy = s; else mValidPolicy = ""; if(set != null) mQualifierSet = new HashSet(set); else mQualifierSet = new HashSet(); mCriticalityIndicator = flag; if(set1 != null) mExpectedPolicySet = new HashSet(set1); else mExpectedPolicySet = new HashSet(); mOriginalExpectedPolicySet = !flag1; if(mParent != null) { mDepth = mParent.getDepth() + 1; mParent.addChild(this); } else { mDepth = 0; } } PolicyNodeImpl(PolicyNodeImpl policynodeimpl, PolicyNodeImpl policynodeimpl1) { this(policynodeimpl, policynodeimpl1.mValidPolicy, ((Set) (policynodeimpl1.mQualifierSet)), policynodeimpl1.mCriticalityIndicator, ((Set) (policynodeimpl1.mExpectedPolicySet)), false); } public PolicyNode getParent() { return mParent; } public Iterator getChildren() { return Collections.unmodifiableSet(mChildren).iterator(); } public int getDepth() { return mDepth; } public String getValidPolicy() { return mValidPolicy; } public Set getPolicyQualifiers() { return Collections.unmodifiableSet(mQualifierSet); } public Set getExpectedPolicies() { return Collections.unmodifiableSet(mExpectedPolicySet); } public boolean isCritical() { return mCriticalityIndicator; } public String toString() { StringBuffer stringbuffer = new StringBuffer(asString()); for(Iterator iterator = getChildren(); iterator.hasNext(); stringbuffer.append((PolicyNodeImpl)iterator.next())); return stringbuffer.toString(); } boolean isImmutable() { return isImmutable; } void setImmutable() { if(isImmutable) return; PolicyNodeImpl policynodeimpl; for(Iterator iterator = mChildren.iterator(); iterator.hasNext(); policynodeimpl.setImmutable()) policynodeimpl = (PolicyNodeImpl)iterator.next(); isImmutable = true; } private void addChild(PolicyNodeImpl policynodeimpl) { if(isImmutable) { throw new IllegalStateException("PolicyNode is immutable"); } else { mChildren.add(policynodeimpl); return; } } void addExpectedPolicy(String s) { if(isImmutable) throw new IllegalStateException("PolicyNode is immutable"); if(mOriginalExpectedPolicySet) { mExpectedPolicySet.clear(); mOriginalExpectedPolicySet = false; } mExpectedPolicySet.add(s); } void prune(int i) { if(isImmutable) throw new IllegalStateException("PolicyNode is immutable"); if(mChildren.size() == 0) return; Iterator iterator = mChildren.iterator(); do { if(!iterator.hasNext()) break; PolicyNodeImpl policynodeimpl = (PolicyNodeImpl)iterator.next(); policynodeimpl.prune(i); if(policynodeimpl.mChildren.size() == 0 && i > mDepth + 1) iterator.remove(); } while(true); } void deleteChild(PolicyNode policynode) { if(isImmutable) { throw new IllegalStateException("PolicyNode is immutable"); } else { mChildren.remove(policynode); return; } } PolicyNodeImpl copyTree() { return copyTree(null); } private PolicyNodeImpl copyTree(PolicyNodeImpl policynodeimpl) { PolicyNodeImpl policynodeimpl1 = new PolicyNodeImpl(policynodeimpl, this); PolicyNodeImpl policynodeimpl2; for(Iterator iterator = mChildren.iterator(); iterator.hasNext(); policynodeimpl2.copyTree(policynodeimpl1)) policynodeimpl2 = (PolicyNodeImpl)iterator.next(); return policynodeimpl1; } Set getPolicyNodes(int i) { HashSet hashset = new HashSet(); getPolicyNodes(i, ((Set) (hashset))); return hashset; } private void getPolicyNodes(int i, Set set) { if(mDepth == i) { set.add(this); } else { PolicyNodeImpl policynodeimpl; for(Iterator iterator = mChildren.iterator(); iterator.hasNext(); policynodeimpl.getPolicyNodes(i, set)) policynodeimpl = (PolicyNodeImpl)iterator.next(); } } Set getPolicyNodesExpected(int i, String s, boolean flag) { if(s.equals("2.5.29.32.0")) return getPolicyNodes(i); else return getPolicyNodesExpectedHelper(i, s, flag); } private Set getPolicyNodesExpectedHelper(int i, String s, boolean flag) { HashSet hashset = new HashSet(); if(mDepth < i) { PolicyNodeImpl policynodeimpl; for(Iterator iterator = mChildren.iterator(); iterator.hasNext(); hashset.addAll(policynodeimpl.getPolicyNodesExpectedHelper(i, s, flag))) policynodeimpl = (PolicyNodeImpl)iterator.next(); } else if(flag) { if(mExpectedPolicySet.contains("2.5.29.32.0")) hashset.add(this); } else if(mExpectedPolicySet.contains(s)) hashset.add(this); return hashset; } Set getPolicyNodesValid(int i, String s) { HashSet hashset = new HashSet(); if(mDepth < i) { PolicyNodeImpl policynodeimpl; for(Iterator iterator = mChildren.iterator(); iterator.hasNext(); hashset.addAll(policynodeimpl.getPolicyNodesValid(i, s))) policynodeimpl = (PolicyNodeImpl)iterator.next(); } else if(mValidPolicy.equals(s)) hashset.add(this); return hashset; } private static String policyToString(String s) { if(s.equals("2.5.29.32.0")) return "anyPolicy"; else return s; } String asString() { if(mParent == null) return "anyPolicy ROOT\n"; StringBuffer stringbuffer = new StringBuffer(); int i = 0; for(int j = getDepth(); i < j; i++) stringbuffer.append(" "); stringbuffer.append(policyToString(getValidPolicy())); stringbuffer.append(" CRIT: "); stringbuffer.append(isCritical()); stringbuffer.append(" EP: "); for(Iterator iterator = getExpectedPolicies().iterator(); iterator.hasNext(); stringbuffer.append(" ")) { String s = (String)iterator.next(); stringbuffer.append(policyToString(s)); } stringbuffer.append(" ("); stringbuffer.append(getDepth()); stringbuffer.append(")\n"); return stringbuffer.toString(); } }