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 /* 24 * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. 25 */ 26 /* 27 * $Id: DOMXSLTTransform.java 1197150 2011-11-03 14:34:57Z coheigea $ 28 */ 29 package org.jcp.xml.dsig.internal.dom; 30 31 import java.security.InvalidAlgorithmParameterException; 32 import org.w3c.dom.Element; 33 import org.w3c.dom.Node; 34 35 import javax.xml.crypto.*; 36 import javax.xml.crypto.dsig.spec.TransformParameterSpec; 37 import javax.xml.crypto.dsig.spec.XSLTTransformParameterSpec; 38 39 /** 40 * DOM-based implementation of XSLT Transform. 41 * (Uses Apache XML-Sec Transform implementation) 42 * 43 * @author Sean Mullan 44 */ 45 public final class DOMXSLTTransform extends ApacheTransform { 46 47 public void init(TransformParameterSpec params) 48 throws InvalidAlgorithmParameterException { 49 if (params == null) { 50 throw new InvalidAlgorithmParameterException("params are required"); 51 } 52 if (!(params instanceof XSLTTransformParameterSpec)) { 53 throw new InvalidAlgorithmParameterException("unrecognized params"); 54 } 55 this.params = params; 56 } 57 58 public void init(XMLStructure parent, XMLCryptoContext context) 59 throws InvalidAlgorithmParameterException { 60 61 super.init(parent, context); 62 unmarshalParams(DOMUtils.getFirstChildElement(transformElem)); 63 } 64 65 private void unmarshalParams(Element sheet) { 66 this.params = new XSLTTransformParameterSpec 67 (new javax.xml.crypto.dom.DOMStructure(sheet)); 68 } 69 70 public void marshalParams(XMLStructure parent, XMLCryptoContext context) 71 throws MarshalException { 72 super.marshalParams(parent, context); 73 XSLTTransformParameterSpec xp = 74 (XSLTTransformParameterSpec) getParameterSpec(); 75 Node xsltElem = 76 ((javax.xml.crypto.dom.DOMStructure) xp.getStylesheet()).getNode(); 77 DOMUtils.appendChild(transformElem, xsltElem); 78 } 79 }