- /*
- * Copyright 2001-2002,2004 The Apache Software Foundation
- *
- * Licensed 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 org.apache.tools.ant.taskdefs.optional.junit;
-
- import java.io.OutputStream;
- import javax.xml.transform.Result;
- import javax.xml.transform.Source;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import javax.xml.transform.stream.StreamSource;
-
- import org.apache.tools.ant.BuildException;
-
- /**
- * Xalan executor via JAXP. Nothing special must exists in the classpath
- * besides of course, a parser, jaxp and xalan.
- *
- * @ant.task ignore="true"
- */
- public class Xalan2Executor extends XalanExecutor {
-
- private static final String aPack = "org.apache.xalan.";
- private static final String sPack = "com.sun.org.apache.xalan.";
-
- private TransformerFactory tfactory = TransformerFactory.newInstance();
-
- protected String getImplementation() throws BuildException {
- return tfactory.getClass().getName();
- }
-
- protected String getProcVersion(String classNameImpl)
- throws BuildException {
- try {
- // xalan 2
- if (classNameImpl.equals(aPack + "processor.TransformerFactoryImpl")
- ||
- classNameImpl.equals(aPack + "xslt.XSLTProcessorFactory")) {
- return getXalanVersion(aPack + "processor.XSLProcessorVersion");
- }
- // xalan xsltc
- if (classNameImpl.equals(aPack
- + "xsltc.trax.TransformerFactoryImpl")){
- return getXSLTCVersion(aPack +"xsltc.ProcessorVersion");
- }
- // jdk 1.5 xsltc
- if (classNameImpl
- .equals(sPack + "internal.xsltc.trax.TransformerFactoryImpl")){
- return getXSLTCVersion(sPack
- + "internal.xsltc.ProcessorVersion");
- }
- throw new BuildException("Could not find a valid processor version"
- + " implementation from "
- + classNameImpl);
- } catch (ClassNotFoundException e){
- throw new BuildException("Could not find processor version "
- + "implementation", e);
- }
- }
-
- void execute() throws Exception {
- String system_id = caller.getStylesheetSystemId();
- Source xsl_src = new StreamSource(system_id);
- Transformer tformer = tfactory.newTransformer(xsl_src);
- Source xml_src = new DOMSource(caller.document);
- OutputStream os = getOutputStream();
- try {
- tformer.setParameter("output.dir", caller.toDir.getAbsolutePath());
- Result result = new StreamResult(os);
- tformer.transform(xml_src, result);
- } finally {
- os.close();
- }
- }
- }