⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xalanexecutor.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
字号:
/* *  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 org.apache.tools.ant.taskdefs.optional.junit;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.lang.reflect.Field;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;/** * This class is not used by the framework any more. * We plan to remove it in Ant 1.8 * @deprecated since Ant 1.7 * */abstract class XalanExecutor {    private static final String PACKAGE =        "org.apache.tools.ant.taskdefs.optional.junit.";    // CheckStyle:VisibilityModifier OFF - bc    /** the transformer caller */    protected AggregateTransformer caller;    // CheckStyle:VisibilityModifier ON    /** set the caller for this object. */    private void setCaller(AggregateTransformer caller) {        this.caller = caller;    }    /** get the appropriate stream based on the format (frames/noframes) */    protected final OutputStream getOutputStream() throws IOException {        if (AggregateTransformer.FRAMES.equals(caller.format)) {            // dummy output for the framed report            // it's all done by extension...            return new ByteArrayOutputStream();        } else {            return new BufferedOutputStream(                new FileOutputStream(new File(caller.toDir, "junit-noframes.html")));        }    }    /** override to perform transformation */    abstract void execute() throws Exception;    /**     * Create a valid Xalan executor. It checks if Xalan2 is     * present. If none is available, it fails.     * @param caller object containing the transformation information.     * @throws BuildException thrown if it could not find a valid xalan     * executor.     */    static XalanExecutor newInstance(AggregateTransformer caller)        throws BuildException {        XalanExecutor executor = null;        try {            Class clazz = Class.forName(PACKAGE + "Xalan2Executor");            executor = (XalanExecutor) clazz.newInstance();        } catch (Exception xsltcApacheMissing) {            caller.task.log(xsltcApacheMissing.toString());                throw new BuildException("Could not find xstlc nor xalan2 "                                         + "in the classpath. Check "                                         + "http://xml.apache.org/xalan-j");        }        String classNameImpl = executor.getImplementation();        String version = executor.getProcVersion(classNameImpl);        caller.task.log("Using " + version, Project.MSG_VERBOSE);        executor.setCaller(caller);        return executor;    }    /**     * This methods should return the classname implementation of the     * underlying xslt processor     * @return the classname of the implementation, for example:     * org.apache.xalan.processor.TransformerFactoryImpl     * @see #getProcVersion(String)     */    protected abstract String getImplementation();    /**     * Try to discover the xslt processor version based on the     * className. There is nothing carved in stone and it can change     * anytime, so this is just for the sake of giving additional     * information if we can find it.     * @param classNameImpl the classname of the underlying xslt processor     * @return a string representing the implementation version.     * @throws BuildException     */    protected abstract String getProcVersion(String classNameImpl)        throws BuildException;    /** a bit simplistic but xsltc data are conveniently private non final */    protected final String getXSLTCVersion(String procVersionClassName)        throws ClassNotFoundException {        // there's a convenient xsltc class version but data are        // private so use package information        Class procVersion = Class.forName(procVersionClassName);        Package pkg = procVersion.getPackage();        return pkg.getName() + " " + pkg.getImplementationTitle()            + " " + pkg.getImplementationVersion();    }    /** pretty useful data (Xalan version information) to display. */    protected final String getXalanVersion(String procVersionClassName)        throws ClassNotFoundException {        Class procVersion = Class.forName(procVersionClassName);        String pkg = procVersion.getPackage().getName();        try {            Field f = procVersion.getField("S_VERSION");            return pkg + " " + f.get(null).toString();        } catch (Exception e) {            return pkg + " ?.?";        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -