|
Ant example source code file (XalanExecutor.java)
The XalanExecutor.java source code/* * 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 + " ?.?"; } } } Other Ant examples (source code examples)Here is a short list of links related to this Ant XalanExecutor.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.