SANTUARIO-540 - refactor of DOMCanonicalizationMethod. Thanks to Alanscut <wp_scut@163.com> for the patch. This closes #30.


git-svn-id: https://svn.apache.org/repos/asf/santuario/xml-security-java/trunk@1877498 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java b/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
index c2807e4..a54b611 100644
--- a/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
+++ b/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
@@ -25,6 +25,9 @@
 import java.security.InvalidAlgorithmParameterException;
 import java.security.Provider;
 import java.security.spec.AlgorithmParameterSpec;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.w3c.dom.Element;
 
@@ -38,6 +41,19 @@
 public class DOMCanonicalizationMethod extends DOMTransform
     implements CanonicalizationMethod {
 
+    private static final Set<String> C14N_ALGORITHMS;
+
+    static {
+        Set<String> algorithms = new HashSet<>();
+        algorithms.add(CanonicalizationMethod.INCLUSIVE);
+        algorithms.add(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS);
+        algorithms.add(CanonicalizationMethod.EXCLUSIVE);
+        algorithms.add(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS);
+        algorithms.add(DOMCanonicalXMLC14N11Method.C14N_11);
+        algorithms.add(DOMCanonicalXMLC14N11Method.C14N_11_WITH_COMMENTS);
+        C14N_ALGORITHMS = Collections.unmodifiableSet(algorithms);
+    }
+
     /**
      * Creates a <code>DOMCanonicalizationMethod</code>.
      *
@@ -121,21 +137,8 @@
     }
 
     private static boolean isC14Nalg(String alg) {
-        return isInclusiveC14Nalg(alg) || isExclusiveC14Nalg(alg) || isC14N11alg(alg);
+        return alg != null && C14N_ALGORITHMS.contains(alg);
     }
 
-    private static boolean isInclusiveC14Nalg(String alg) {
-        return alg.equals(CanonicalizationMethod.INCLUSIVE)
-            || alg.equals(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS);
-    }
 
-    private static boolean isExclusiveC14Nalg(String alg) {
-        return alg.equals(CanonicalizationMethod.EXCLUSIVE)
-            || alg.equals(CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS);
-    }
-
-    private static boolean isC14N11alg(String alg) {
-        return alg.equals(DOMCanonicalXMLC14N11Method.C14N_11)
-            || alg.equals(DOMCanonicalXMLC14N11Method.C14N_11_WITH_COMMENTS);
-    }
 }