ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ru...@apache.org
Subject cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit Xalan1Executor.java Xalan2Executor.java XalanExecutor.java AggregateTransformer.java
Date Sun, 25 Nov 2001 19:28:51 GMT
rubys       01/11/25 11:28:51

  Modified:    .        build.xml
               src/main/org/apache/tools/ant/taskdefs/optional/junit
                        AggregateTransformer.java
  Added:       src/main/org/apache/tools/ant/taskdefs/optional/junit
                        Xalan1Executor.java Xalan2Executor.java
                        XalanExecutor.java
  Log:
  Allow junitreport to be compiled independent of the presence of Xalan1.
  
  The reason for this is that the Xalan1 team is strongly considering
  removing Xalan1Compat from cvs...
  
  No logic changes were made in this commit...classes were merely split out
  into separate files, and the instance of Xalan1Executor is now created
  using reflection APIs.
  
  Revision  Changes    Path
  1.209     +7 -1      jakarta-ant/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/build.xml,v
  retrieving revision 1.208
  retrieving revision 1.209
  diff -u -r1.208 -r1.209
  --- build.xml	2001/11/20 16:30:40	1.208
  +++ build.xml	2001/11/25 19:28:51	1.209
  @@ -278,8 +278,14 @@
         <exclude name="${optional.package}/junit/AggregateTransformer.java"
                  unless="trax.present" />
         <exclude name="${optional.package}/junit/XMLResultAggregator.java"
  -               unless="xalan.present" />
  +               unless="xalan2.present" />
         <exclude name="${optional.package}/junit/AggregateTransformer.java"
  +               unless="xalan2.present" />
  +      <exclude name="${optional.package}/junit/XalanExecutor.java"
  +               unless="xalan2.present" />
  +      <exclude name="${optional.package}/junit/Xalan2Executor.java"
  +               unless="xalan2.present" />
  +      <exclude name="${optional.package}/junit/Xalan1Executor.java"
                  unless="xalan.present" />
         <exclude name="${optional.package}/jdepend/*" unless="jdepend.present" />
         <exclude name="${optional.package}/sitraka/**" unless="some.regexp.support"/>
  
  
  
  1.8       +0 -122    jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
  
  Index: AggregateTransformer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- AggregateTransformer.java	2001/10/28 21:30:22	1.7
  +++ AggregateTransformer.java	2001/11/25 19:28:51	1.8
  @@ -63,31 +63,14 @@
   import java.io.FileInputStream;
   import java.io.IOException;
   import java.io.FileNotFoundException;
  -import java.io.OutputStream;
  -import java.io.ByteArrayOutputStream;
  -import java.io.FileOutputStream;
   
   
   
  -import java.lang.reflect.Field;
   import java.net.URL;
   
  -import org.apache.xalan.xslt.XSLTProcessorFactory;
  -import org.apache.xalan.xslt.XSLTProcessor;
  -import org.apache.xalan.xslt.XSLTInputSource;
  -import org.apache.xalan.xslt.XSLTResultTarget;
  -
   import javax.xml.parsers.DocumentBuilderFactory;
   import javax.xml.parsers.DocumentBuilder;
   
  -import javax.xml.transform.Transformer;
  -import javax.xml.transform.TransformerFactory;
  -import javax.xml.transform.Source;
  -import javax.xml.transform.Result;
  -import javax.xml.transform.dom.DOMSource;
  -import javax.xml.transform.stream.StreamSource;
  -import javax.xml.transform.stream.StreamResult;
  -
   import org.w3c.dom.Document;
   import org.w3c.dom.Element;
   
  @@ -241,109 +224,4 @@
           return url.toExternalForm();
       }
   
  -}
  -
  -/**
  - * Command class that encapsulate specific behavior for each
  - * Xalan version. The right executor will be instantiated at
  - * runtime via class lookup. For instance, it will check first
  - * for Xalan2, then for Xalan1.
  - */
  -abstract class XalanExecutor {
  -    /** the transformer caller */
  -    protected AggregateTransformer caller;
  -
  -    /** set the caller for this object. */
  -    private final void setCaller(AggregateTransformer caller){
  -        this.caller = caller;
  -    }
  -
  -    /** get the appropriate stream based on the format (frames/noframes) */
  -    protected OutputStream getOutputStream() throws IOException {
  -        if (caller.FRAMES.equals(caller.format)){
  -            // dummy output for the framed report
  -            // it's all done by extension...
  -            return new ByteArrayOutputStream();
  -        } else {
  -            return 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 first if Xalan2 is
  -     * present, if not it checks for xalan1. 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
{
  -        Class procVersion = null;
  -        XalanExecutor executor = null;
  -        try {
  -            procVersion = Class.forName("org.apache.xalan.processor.XSLProcessorVersion");
  -            executor = new Xalan2Executor();
  -        } catch (Exception xalan2missing){
  -            try {
  -                procVersion = Class.forName("org.apache.xalan.xslt.XSLProcessorVersion");
  -                executor = new Xalan1Executor();
  -            } catch (Exception xalan1missing){
  -                throw new BuildException("Could not find xalan2 nor xalan1 in the classpath.
Check http://xml.apache.org/xalan-j");
  -            }
  -        }
  -        String version = getXalanVersion(procVersion);
  -        caller.task.log("Using Xalan version: " + version);
  -        executor.setCaller(caller);
  -        return executor;
  -    }
  -
  -    /** pretty useful data (Xalan version information) to display. */
  -    private static String getXalanVersion(Class procVersion) {
  -        try {
  -            Field f = procVersion.getField("S_VERSION");
  -            return f.get(null).toString();
  -        } catch (Exception e){
  -            return "?";
  -        }
  -    }
  -}
  -
  -/**
  - * Xalan executor via JAXP. Nothing special must exists in the classpath
  - * besides of course, a parser, jaxp and xalan.
  - */
  -class Xalan2Executor extends XalanExecutor {
  -    void execute() throws Exception {
  -        TransformerFactory tfactory = TransformerFactory.newInstance();
  -        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();
  -        tformer.setParameter("output.dir", caller.toDir.getAbsolutePath());
  -        Result result = new StreamResult(os);
  -        tformer.transform(xml_src, result);
  -    }
  -}
  -
  -/**
  - * Xalan 1 executor. It will need a lot of things in the classpath:
  - * xerces for the serialization, xalan and bsf for the extension.
  - * @todo do everything via reflection to avoid compile problems ?
  - */
  -class Xalan1Executor extends XalanExecutor {
  -    void execute() throws Exception {
  -        XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
  -        // need to quote otherwise it breaks because of "extra illegal tokens"
  -        processor.setStylesheetParam("output.dir", "'" + caller.toDir.getAbsolutePath()
+ "'");
  -        XSLTInputSource xml_src = new XSLTInputSource(caller.document);
  -        String system_id = caller.getStylesheetSystemId();
  -        XSLTInputSource xsl_src = new XSLTInputSource(system_id);
  -        OutputStream os = getOutputStream();
  -        XSLTResultTarget target = new XSLTResultTarget(os);
  -        processor.process( xml_src, xsl_src, target);
  -    }
   }
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan1Executor.java
  
  Index: Xalan1Executor.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.tools.ant.taskdefs.optional.junit;
  
  import java.io.OutputStream;
  
  import org.apache.xalan.xslt.XSLTProcessorFactory;
  import org.apache.xalan.xslt.XSLTProcessor;
  import org.apache.xalan.xslt.XSLTInputSource;
  import org.apache.xalan.xslt.XSLTResultTarget;
  
  /**
   * Xalan 1 executor. It will need a lot of things in the classpath:
   * xerces for the serialization, xalan and bsf for the extension.
   * @todo do everything via reflection to avoid compile problems ?
   */
  public class Xalan1Executor extends XalanExecutor {
      void execute() throws Exception {
          XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
          // need to quote otherwise it breaks because of "extra illegal tokens"
          processor.setStylesheetParam("output.dir", "'" + caller.toDir.getAbsolutePath()
+ "'");
          XSLTInputSource xml_src = new XSLTInputSource(caller.document);
          String system_id = caller.getStylesheetSystemId();
          XSLTInputSource xsl_src = new XSLTInputSource(system_id);
          OutputStream os = getOutputStream();
          XSLTResultTarget target = new XSLTResultTarget(os);
          processor.process( xml_src, xsl_src, target);
      }
  }
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/Xalan2Executor.java
  
  Index: Xalan2Executor.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.tools.ant.taskdefs.optional.junit;
  
  import java.io.OutputStream;
  
  import javax.xml.transform.Transformer;
  import javax.xml.transform.TransformerFactory;
  import javax.xml.transform.Source;
  import javax.xml.transform.Result;
  import javax.xml.transform.dom.DOMSource;
  import javax.xml.transform.stream.StreamSource;
  import javax.xml.transform.stream.StreamResult;
  
  /**
   * Xalan executor via JAXP. Nothing special must exists in the classpath
   * besides of course, a parser, jaxp and xalan.
   */
  public class Xalan2Executor extends XalanExecutor {
      void execute() throws Exception {
          TransformerFactory tfactory = TransformerFactory.newInstance();
          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();
          tformer.setParameter("output.dir", caller.toDir.getAbsolutePath());
          Result result = new StreamResult(os);
          tformer.transform(xml_src, result);
      }
  }
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/XalanExecutor.java
  
  Index: XalanExecutor.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Ant", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.tools.ant.taskdefs.optional.junit;
  
  import org.apache.tools.ant.BuildException;
  
  import java.io.File;
  import java.io.IOException;
  import java.io.OutputStream;
  import java.io.ByteArrayOutputStream;
  import java.io.FileOutputStream;
  
  import java.lang.reflect.Field;
  
  /**
   * Command class that encapsulate specific behavior for each
   * Xalan version. The right executor will be instantiated at
   * runtime via class lookup. For instance, it will check first
   * for Xalan2, then for Xalan1.
   */
  abstract class XalanExecutor {
      /** the transformer caller */
      protected AggregateTransformer caller;
  
      /** set the caller for this object. */
      private final void setCaller(AggregateTransformer caller){
          this.caller = caller;
      }
  
      /** get the appropriate stream based on the format (frames/noframes) */
      protected OutputStream getOutputStream() throws IOException {
          if (caller.FRAMES.equals(caller.format)){
              // dummy output for the framed report
              // it's all done by extension...
              return new ByteArrayOutputStream();
          } else {
              return 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 first if Xalan2 is
       * present, if not it checks for xalan1. 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
{
          Class procVersion = null;
          XalanExecutor executor = null;
          try {
              procVersion = Class.forName("org.apache.xalan.processor.XSLProcessorVersion");
              executor = new Xalan2Executor();
          } catch (Exception xalan2missing){
              try {
                  procVersion = Class.forName("org.apache.xalan.xslt.XSLProcessorVersion");
                  executor = (XalanExecutor) Class.forName(
                      "org.apache.tools.ant.taskdefs.optional.junit.Xalan1Executor()").newInstance();
              } catch (Exception xalan1missing){
                  throw new BuildException("Could not find xalan2 nor xalan1 in the classpath.
Check http://xml.apache.org/xalan-j");
              }
          }
          String version = getXalanVersion(procVersion);
          caller.task.log("Using Xalan version: " + version);
          executor.setCaller(caller);
          return executor;
      }
  
      /** pretty useful data (Xalan version information) to display. */
      private static String getXalanVersion(Class procVersion) {
          try {
              Field f = procVersion.getField("S_VERSION");
              return f.get(null).toString();
          } catch (Exception e){
              return "?";
          }
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message