1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /** 6 * Licensed to the Apache Software Foundation (ASF) under one 7 * or more contributor license agreements. See the NOTICE file 8 * distributed with this work for additional information 9 * regarding copyright ownership. The ASF licenses this file 10 * to you under the Apache License, Version 2.0 (the 11 * "License"); you may not use this file except in compliance 12 * with the License. You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, 17 * software distributed under the License is distributed on an 18 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 19 * KIND, either express or implied. See the License for the 20 * specific language governing permissions and limitations 21 * under the License. 22 */ 23 package com.sun.org.apache.xml.internal.security.transforms; 24 25 import java.io.IOException; 26 import java.io.OutputStream; 27 import javax.xml.parsers.ParserConfigurationException; 28 29 import com.sun.org.apache.xml.internal.security.c14n.CanonicalizationException; 30 import com.sun.org.apache.xml.internal.security.c14n.InvalidCanonicalizerException; 31 import com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput; 32 import org.xml.sax.SAXException; 33 34 /** 35 * Base class which all Transform algorithms extend. The common methods that 36 * have to be overridden are the 37 * {@link #enginePerformTransform(XMLSignatureInput, Transform)} method. 38 * 39 * @author Christian Geuer-Pollmann 40 */ 41 public abstract class TransformSpi { 42 43 /** 44 * The mega method which MUST be implemented by the Transformation Algorithm. 45 * 46 * @param input {@link XMLSignatureInput} as the input of transformation 47 * @param os where to output this transformation. 48 * @param transformObject the Transform object 49 * @return {@link XMLSignatureInput} as the result of transformation 50 * @throws CanonicalizationException 51 * @throws IOException 52 * @throws InvalidCanonicalizerException 53 * @throws ParserConfigurationException 54 * @throws SAXException 55 * @throws TransformationException 56 */ 57 protected XMLSignatureInput enginePerformTransform( 58 XMLSignatureInput input, OutputStream os, Transform transformObject 59 ) throws IOException, CanonicalizationException, InvalidCanonicalizerException, 60 TransformationException, ParserConfigurationException, SAXException { 61 throw new UnsupportedOperationException(); 62 } 63 64 /** 65 * The mega method which MUST be implemented by the Transformation Algorithm. 66 * In order to be compatible with preexisting Transform implementations, 67 * by default this implementation invokes the deprecated, thread-unsafe 68 * methods. Subclasses should override this with a thread-safe 69 * implementation. 70 * 71 * @param input {@link XMLSignatureInput} as the input of transformation 72 * @param transformObject the Transform object 73 * @return {@link XMLSignatureInput} as the result of transformation 74 * @throws CanonicalizationException 75 * @throws IOException 76 * @throws InvalidCanonicalizerException 77 * @throws ParserConfigurationException 78 * @throws SAXException 79 * @throws TransformationException 80 */ 81 protected XMLSignatureInput enginePerformTransform( 82 XMLSignatureInput input, Transform transformObject 83 ) throws IOException, CanonicalizationException, InvalidCanonicalizerException, 84 TransformationException, ParserConfigurationException, SAXException { 85 return enginePerformTransform(input, null, transformObject); 86 } 87 88 /** 89 * The mega method which MUST be implemented by the Transformation Algorithm. 90 * @param input {@link XMLSignatureInput} as the input of transformation 91 * @return {@link XMLSignatureInput} as the result of transformation 92 * @throws CanonicalizationException 93 * @throws IOException 94 * @throws InvalidCanonicalizerException 95 * @throws ParserConfigurationException 96 * @throws SAXException 97 * @throws TransformationException 98 */ 99 protected XMLSignatureInput enginePerformTransform( 100 XMLSignatureInput input 101 ) throws IOException, CanonicalizationException, InvalidCanonicalizerException, 102 TransformationException, ParserConfigurationException, SAXException { 103 return enginePerformTransform(input, null); 104 } 105 106 /** 107 * Returns the URI representation of <code>Transformation algorithm</code> 108 * 109 * @return the URI representation of <code>Transformation algorithm</code> 110 */ 111 protected abstract String engineGetURI(); 112 }