Quote:
Originally Posted by
screamingfist 
definitive? he is not a lawyer, and really doesn't know what he is talking about code-wise.
Mueller is Award Winning LONG TERM a STRONG OPEN SOURCE ADVOCATE, Besides Being An INTELLECTUAL PROPERTY LAWYER with 25 years of software industry expertise spanning across different market segments (games, education, productivity and infrastructure software), diverse business models (proprietary software, free and open source software, advertising- and subscription-based online services) and a variety of technical and commercial areas of responsibility.
// 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.getPolicyNodesExpect edHelper(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\
";
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(")\
");
return stringbuffer.toString();
}
}