src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/TransformSpi.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/TransformSpi.java Tue Sep 12 19:03:39 2017 +0200
@@ -0,0 +1,112 @@
+/*
+ * reserved comment block
+ * DO NOT REMOVE OR ALTER!
+ */
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.sun.org.apache.xml.internal.security.transforms;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import javax.xml.parsers.ParserConfigurationException;
+
+import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException;
+import com.sun.org.apache.xml.internal.security.c14n.InvalidCanonicalizerException;
+import com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput;
+import org.xml.sax.SAXException;
+
+/**
+ * Base class which all Transform algorithms extend. The common methods that
+ * have to be overridden are the
+ * {@link #enginePerformTransform(XMLSignatureInput, Transform)} method.
+ *
+ * @author Christian Geuer-Pollmann
+ */
+public abstract class TransformSpi {
+
+ /**
+ * The mega method which MUST be implemented by the Transformation Algorithm.
+ *
+ * @param input {@link XMLSignatureInput} as the input of transformation
+ * @param os where to output this transformation.
+ * @param transformObject the Transform object
+ * @return {@link XMLSignatureInput} as the result of transformation
+ * @throws CanonicalizationException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformationException
+ */
+ protected XMLSignatureInput enginePerformTransform(
+ XMLSignatureInput input, OutputStream os, Transform transformObject
+ ) throws IOException, CanonicalizationException, InvalidCanonicalizerException,
+ TransformationException, ParserConfigurationException, SAXException {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * The mega method which MUST be implemented by the Transformation Algorithm.
+ * In order to be compatible with preexisting Transform implementations,
+ * by default this implementation invokes the deprecated, thread-unsafe
+ * methods. Subclasses should override this with a thread-safe
+ * implementation.
+ *
+ * @param input {@link XMLSignatureInput} as the input of transformation
+ * @param transformObject the Transform object
+ * @return {@link XMLSignatureInput} as the result of transformation
+ * @throws CanonicalizationException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformationException
+ */
+ protected XMLSignatureInput enginePerformTransform(
+ XMLSignatureInput input, Transform transformObject
+ ) throws IOException, CanonicalizationException, InvalidCanonicalizerException,
+ TransformationException, ParserConfigurationException, SAXException {
+ return enginePerformTransform(input, null, transformObject);
+ }
+
+ /**
+ * The mega method which MUST be implemented by the Transformation Algorithm.
+ * @param input {@link XMLSignatureInput} as the input of transformation
+ * @return {@link XMLSignatureInput} as the result of transformation
+ * @throws CanonicalizationException
+ * @throws IOException
+ * @throws InvalidCanonicalizerException
+ * @throws ParserConfigurationException
+ * @throws SAXException
+ * @throws TransformationException
+ */
+ protected XMLSignatureInput enginePerformTransform(
+ XMLSignatureInput input
+ ) throws IOException, CanonicalizationException, InvalidCanonicalizerException,
+ TransformationException, ParserConfigurationException, SAXException {
+ return enginePerformTransform(input, null);
+ }
+
+ /**
+ * Returns the URI representation of <code>Transformation algorithm</code>
+ *
+ * @return the URI representation of <code>Transformation algorithm</code>
+ */
+ protected abstract String engineGetURI();
+}