src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/transforms/TransformSpi.java
changeset 47216 71c04702a3d5
parent 25859 3317bb8137f4
child 50614 3810c9a2efa1
--- /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();
+}