summaryrefslogtreecommitdiff
path: root/gnu/java/security/x509/ext/CertificatePolicies.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/java/security/x509/ext/CertificatePolicies.java')
-rw-r--r--gnu/java/security/x509/ext/CertificatePolicies.java57
1 files changed, 41 insertions, 16 deletions
diff --git a/gnu/java/security/x509/ext/CertificatePolicies.java b/gnu/java/security/x509/ext/CertificatePolicies.java
index 874b8eeeb..9b36485b2 100644
--- a/gnu/java/security/x509/ext/CertificatePolicies.java
+++ b/gnu/java/security/x509/ext/CertificatePolicies.java
@@ -1,5 +1,5 @@
/* CertificatePolicies.java -- certificate policy extension.
- Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006, 2014 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -113,24 +113,49 @@ public class CertificatePolicies extends Extension.Value
public CertificatePolicies (final List<OID> policies,
final Map<OID, List<PolicyQualifierInfo>> policyQualifierInfos)
{
- for (Iterator it = policies.iterator(); it.hasNext(); )
- if (!(it.next() instanceof OID))
- throw new IllegalArgumentException ("policies must be OIDs");
- for (Iterator it = policyQualifierInfos.entrySet().iterator(); it.hasNext();)
+ List<OID> polCopy = new ArrayList<OID>(policies.size());
+ try
{
- Map.Entry e = (Map.Entry) it.next();
- if (!(e.getKey() instanceof OID) || !policies.contains (e.getKey()))
- throw new IllegalArgumentException
- ("policyQualifierInfos keys must be OIDs");
- if (!(e.getValue() instanceof List))
- throw new IllegalArgumentException
- ("policyQualifierInfos values must be Lists of PolicyQualifierInfos");
- for (Iterator it2 = ((List) e.getValue()).iterator(); it.hasNext(); )
- if (!(it2.next() instanceof PolicyQualifierInfo))
+ for (OID o : policies) { polCopy.add(o); }
+ }
+ catch (ClassCastException e)
+ {
+ throw new IllegalArgumentException ("policies must be OIDs", e);
+ }
+ for (Map.Entry<OID,List<PolicyQualifierInfo>> e : policyQualifierInfos.entrySet())
+ {
+ try
+ {
+ if (!policies.contains (e.getKey()))
+ throw new IllegalArgumentException
+ ("policyQualifierInfos keys must be OIDs");
+ }
+ catch (ClassCastException cce)
+ {
+ throw new IllegalArgumentException
+ ("policyQualifierInfos keys must be OIDs", cce);
+ }
+ try
+ {
+ e.getValue();
+ }
+ catch (ClassCastException cce)
+ {
+ throw new IllegalArgumentException
+ ("policyQualifierInfos values must be Lists of PolicyQualifierInfos", cce);
+ }
+ try
+ {
+ for (Iterator<PolicyQualifierInfo> i = e.getValue().iterator();
+ i.hasNext(); i.next());
+ }
+ catch (ClassCastException cce)
+ {
throw new IllegalArgumentException
- ("policyQualifierInfos values must be Lists of PolicyQualifierInfos");
+ ("policyQualifierInfos values must be Lists of PolicyQualifierInfos", cce);
+ }
}
- this.policies = Collections.unmodifiableList (new ArrayList<OID>(policies));
+ this.policies = Collections.unmodifiableList (polCopy);
this.policyQualifierInfos = Collections.unmodifiableMap
(new HashMap<OID, List<PolicyQualifierInfo>>(policyQualifierInfos));
}