SANTUARIO-546 - refactor Reference class. Thanks to Alanscut <wp_scut@163.com> for the patch.
git-svn-id: https://svn.apache.org/repos/asf/santuario/xml-security-java/trunk@1877775 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xml/security/signature/Reference.java b/src/main/java/org/apache/xml/security/signature/Reference.java
index 737e1a2..c329c3a 100644
--- a/src/main/java/org/apache/xml/security/signature/Reference.java
+++ b/src/main/java/org/apache/xml/security/signature/Reference.java
@@ -22,6 +22,7 @@
import java.io.OutputStream;
import java.security.AccessController;
import java.security.PrivilegedAction;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@@ -29,7 +30,6 @@
import org.apache.xml.security.algorithms.Algorithm;
import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
import org.apache.xml.security.c14n.CanonicalizationException;
-import org.apache.xml.security.c14n.InvalidCanonicalizerException;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.signature.reference.ReferenceData;
import org.apache.xml.security.signature.reference.ReferenceNodeSetData;
@@ -137,6 +137,19 @@
private ReferenceData referenceData;
+ private static final Set<String> TRANSFORM_ALGORITHMS;
+
+ static {
+ Set<String> algorithms = new HashSet<>();
+ algorithms.add(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
+ algorithms.add(Transforms.TRANSFORM_C14N_EXCL_WITH_COMMENTS);
+ algorithms.add(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);
+ algorithms.add(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
+ algorithms.add(Transforms.TRANSFORM_C14N11_OMIT_COMMENTS);
+ algorithms.add(Transforms.TRANSFORM_C14N11_WITH_COMMENTS);
+ TRANSFORM_ALGORITHMS = Collections.unmodifiableSet(algorithms);
+ }
+
/**
* Constructor Reference
*
@@ -148,7 +161,6 @@
* @param messageDigestAlgorithm {@link MessageDigestAlgorithm Digest algorithm} which is
* applied to the data
* TODO should we throw XMLSignatureException if MessageDigestAlgoURI is wrong?
- * @throws XMLSignatureException
*/
protected Reference(
Document doc, String baseURI, String referenceURI, Manifest manifest,
@@ -273,7 +285,7 @@
String uri = digestMethodElem.getAttributeNS(null, Constants._ATT_ALGORITHM);
- if ("".equals(uri)) {
+ if (uri.isEmpty()) {
return null;
}
@@ -340,7 +352,7 @@
}
/**
- * Return the <code>type</code> atttibute of the Reference indicate whether an
+ * Return the <code>type</code> attribute of the Reference indicate whether an
* <code>ds:Object</code>, <code>ds:SignatureProperty</code>, or <code>ds:Manifest</code>
* element
*
@@ -444,14 +456,6 @@
}
return output;
- } catch (ResourceResolverException ex) {
- throw new XMLSignatureException(ex);
- } catch (CanonicalizationException ex) {
- throw new XMLSignatureException(ex);
- } catch (InvalidCanonicalizerException ex) {
- throw new XMLSignatureException(ex);
- } catch (TransformationException ex) {
- throw new XMLSignatureException(ex);
} catch (XMLSecurityException ex) {
throw new XMLSignatureException(ex);
}
@@ -490,12 +494,7 @@
Transform t = transforms.item(i);
String uri = t.getURI();
- if (uri.equals(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS)
- || uri.equals(Transforms.TRANSFORM_C14N_EXCL_WITH_COMMENTS)
- || uri.equals(Transforms.TRANSFORM_C14N_OMIT_COMMENTS)
- || uri.equals(Transforms.TRANSFORM_C14N_WITH_COMMENTS)
- || uri.equals(Transforms.TRANSFORM_C14N11_OMIT_COMMENTS)
- || uri.equals(Transforms.TRANSFORM_C14N11_WITH_COMMENTS)) {
+ if (TRANSFORM_ALGORITHMS.contains(uri)) {
break;
}
@@ -505,17 +504,7 @@
output.setSourceURI(input.getSourceURI());
}
return output;
- } catch (IOException ex) {
- throw new XMLSignatureException(ex);
- } catch (ResourceResolverException ex) {
- throw new XMLSignatureException(ex);
- } catch (CanonicalizationException ex) {
- throw new XMLSignatureException(ex);
- } catch (InvalidCanonicalizerException ex) {
- throw new XMLSignatureException(ex);
- } catch (TransformationException ex) {
- throw new XMLSignatureException(ex);
- } catch (XMLSecurityException ex) {
+ } catch (IOException | XMLSecurityException ex) {
throw new XMLSignatureException(ex);
}
}
@@ -566,10 +555,6 @@
}
return nodes.getHTMLRepresentation(inclusiveNamespaces);
- } catch (TransformationException ex) {
- throw new XMLSignatureException(ex);
- } catch (InvalidTransformException ex) {
- throw new XMLSignatureException(ex);
} catch (XMLSecurityException ex) {
throw new XMLSignatureException(ex);
}
@@ -625,7 +610,7 @@
public Iterator<Node> iterator() {
return new Iterator<Node>() {
- Iterator<Node> sIterator = s.iterator();
+ final Iterator<Node> sIterator = s.iterator();
@Override
public boolean hasNext() {
@@ -690,9 +675,7 @@
try {
XMLSignatureInput output = this.dereferenceURIandPerformTransforms(null);
return output.getBytes();
- } catch (IOException ex) {
- throw new ReferenceNotInitializedException(ex);
- } catch (CanonicalizationException ex) {
+ } catch (IOException | CanonicalizationException ex) {
throw new ReferenceNotInitializedException(ex);
}
}
@@ -748,9 +731,7 @@
//mda.update(data);
return diOs.getDigestValue();
- } catch (XMLSecurityException ex) {
- throw new ReferenceNotInitializedException(ex);
- } catch (IOException ex) {
+ } catch (XMLSecurityException | IOException ex) {
throw new ReferenceNotInitializedException(ex);
}
}