ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject svn commit: r722849 - in /ant/core/trunk: ./ lib/ src/main/org/apache/tools/ant/taskdefs/ src/main/org/apache/tools/ant/taskdefs/optional/ src/tests/antunit/taskdefs/
Date Wed, 03 Dec 2008 12:02:31 GMT
Author: bodewig
Date: Wed Dec  3 04:02:30 2008
New Revision: 722849

URL: http://svn.apache.org/viewvc?rev=722849&view=rev
Log:
Add support for Xalan2 Traces.  PR 36670.

Added:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/XSLTTraceSupport.java 
 (with props)
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java
  (with props)
Modified:
    ant/core/trunk/build.xml
    ant/core/trunk/lib/libraries.properties
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
    ant/core/trunk/src/tests/antunit/taskdefs/xslt-test.xml

Modified: ant/core/trunk/build.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/build.xml?rev=722849&r1=722848&r2=722849&view=diff
==============================================================================
--- ant/core/trunk/build.xml (original)
+++ ant/core/trunk/build.xml Wed Dec  3 04:02:30 2008
@@ -170,21 +170,6 @@
        ===================================================================
   -->
   <!-- depends on JDK version -->
-  <selector id="needs.jdk1.3+">
-    <or>
-      <filename name="${ant.package}/taskdefs/TestProcess*"/>
-      <filename name="${optional.package}/extension/**"/>
-    </or>
-  </selector>
-
-  <selector id="needs.jdk1.4+">
-    <or>
-      <filename name="${regexp.package}/Jdk14Regexp*"/>
-      <filename name="${ant.package}/types/AssertionsTest.java"/>
-      <filename name="${ant.package}/launch/LocatorTest*"/>
-    </or>
-  </selector>
-
   <selector id="needs.jdk1.5+">
     <or>
       <filename name="${taskdefs.package}/AptTest*"/>
@@ -204,6 +189,7 @@
   <selector id="needs.trax">
     <or>
       <filename name="${optional.package}/TraXLiaison*"/>
+      <filename name="${optional.package}/XSLTTraceSupport*"/>
       <filename name="${optional.package}/XsltTest*"/>
       <filename name="${type.package}/XMLCatalogBuildFileTest*"/>
     </or>
@@ -300,6 +286,11 @@
     <filename name="${optional.package}/ssh/*"/>
   </selector>
 
+  <!-- needs TraceListenerEx3 interface implemented by PrintTraceListener -->
+  <selector id="needs.apache-xalan2">
+    <filename name="${optional.package}/Xalan2TraceSupport*"/>
+  </selector>
+
   <selector id="ant.launcher">
     <filename name="${ant.package}/launch/**/*"/>
   </selector>
@@ -356,8 +347,6 @@
        ===================================================================
   -->
   <target name="check_for_optional_packages">
-    <available property="jdk1.3+" classname="java.lang.StrictMath"/>
-    <available property="jdk1.4+" classname="java.lang.CharSequence"/>
     <available property="jdk1.5+" classname="java.net.Proxy"/>
     <available property="jdk1.6+" classname="java.util.ServiceLoader"/>
     <available property="kaffe" classname="kaffe.util.NotImplemented"/>
@@ -386,6 +375,9 @@
     <available property="xalan2.present"
       classname="org.apache.xalan.transformer.TransformerImpl"
       classpathref="classpath"/>
+    <available property="recent.xalan2.present"
+      classname="org.apache.xalan.trace.TraceListenerEx3"
+      classpathref="classpath"/>
     <available property="junit.present"
       classname="junit.framework.TestCase"
       classpathref="classpath"/>
@@ -445,14 +437,6 @@
       </and>
     </condition>
 
-    <condition property="some.regexp.support">
-      <or>
-        <isset property="jdk1.4+"/>
-        <isset property="apache.regexp.present"/>
-        <isset property="apache.oro.present"/>
-      </or>
-    </condition>
-
     <condition property="tests.and.ant.share.classloader">
       <or>
         <equals arg1="${junit.fork}" arg2="true"/>
@@ -521,11 +505,6 @@
       classname="com.jcraft.jsch.Session"
       classpathref="classpath"/>
 
-    <condition property="build.compiler" value="classic">
-      <not>
-        <isset property="jdk1.3+"/>
-      </not>
-    </condition>
     <property name="build.compiler" value="modern"/>
 
     <!--check for XSD support in the parser-->
@@ -579,8 +558,6 @@
       <selector id="conditional-patterns">
         <not>
           <or>
-            <selector refid="needs.jdk1.3+" unless="jdk1.3+"/>
-            <selector refid="needs.jdk1.4+" unless="jdk1.4+"/>
             <selector refid="needs.jdk1.5+" unless="jdk1.5+"/>
             <selector refid="not.in.kaffe" if="kaffe"/>
 
@@ -606,6 +583,10 @@
             <selector refid="needs.swing" unless="swing.present"/>
             <selector refid="needs.jsch" unless="jsch.present"/>
             <selector refid="needs.xmlschema" unless="xmlschema.present"/>
+            <selector refid="needs.apache-xalan2"
+                      unless="recent.xalan2.present"/>
+            <!-- Java 1.4's built-in Xalan is first on the classpath -->
+            <selector refid="needs.apache-xalan2" unless="jdk1.5+"/>
           </or>
         </not>
       </selector>
@@ -704,7 +685,6 @@
             <selector refid="needs.apache-regexp"/>
             <selector refid="needs.apache-resolver"/>
             <selector refid="needs.apache-oro"/>
-            <selector refid="needs.jdk1.4+"/>
             <selector refid="needs.jdk1.5+"/>
             <selector refid="needs.javamail"/>
             <selector refid="ant.launcher"/>
@@ -783,6 +763,7 @@
             <selector refid="needs.jdepend"/>
             <selector refid="needs.swing"/>
             <selector refid="needs.jsch"/>
+            <selector refid="needs.apache-xalan2"/>
           </or>
         </not>
       </and>
@@ -823,6 +804,7 @@
     <optional-jar dep="swing"/>
     <optional-jar dep="jsch"/>
     <optional-jar dep="jdepend"/>
+    <optional-jar dep="apache-xalan2"/>
 
   </target>
 
@@ -1755,15 +1737,6 @@
           <!-- failing tests excluded unless run.failing.tests is set -->
           <patternset refid="teststhatfail"/>
 
-          <!-- runtime dependencies that are different from compile
-               time dependencies -->
-          <exclude name="${optional.package}/ReplaceRegExpTest.java"
-            unless="some.regexp.support"/>
-          <exclude name="${ant.package}/types/selectors/ContainsRegexpTest.java"
-            unless="some.regexp.support"/>
-          <exclude name="${ant.package}/types/mappers/RegexpPatternMapperTest.java"
-            unless="some.regexp.support"/>
-
           <!-- needs BSF to work -->
           <exclude name="${optional.package}/Rhino*.java"
             unless="bsf.present"/>
@@ -1873,7 +1846,7 @@
 
   <target name="interactive-tests" description="--> runs interactive tests"
     depends="compile-tests"
-    if="jdk1.3+">
+    >
     <java classpathref="tests-classpath"
       classname="org.apache.tools.ant.taskdefs.TestProcess"
       fork="true"/>

Modified: ant/core/trunk/lib/libraries.properties
URL: http://svn.apache.org/viewvc/ant/core/trunk/lib/libraries.properties?rev=722849&r1=722848&r2=722849&view=diff
==============================================================================
--- ant/core/trunk/lib/libraries.properties (original)
+++ ant/core/trunk/lib/libraries.properties Wed Dec  3 04:02:30 2008
@@ -59,7 +59,7 @@
 #xmlParserAPIs.version=${xerces.version}
 #xmlParserAPIs.version=2.6.1
 xml-apis.version=2.0.2
-xalan.version=2.7.0
+xalan.version=2.7.1
 xml-resolver.version=1.2
 mail.version=1.4
 #paired

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java?rev=722849&r1=722848&r2=722849&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java Wed Dec  3 04:02:30
2008
@@ -210,6 +210,13 @@
         new CommandlineJava.SysProperties();
 
     /**
+     * Trace configuration for Xalan2.
+     *
+     * @since Ant 1.8.0
+     */
+    private TraceConfiguration traceConfiguration;
+
+    /**
      * Creates a new XSLTProcess Task.
      */
     public XSLTProcess() {
@@ -632,6 +639,33 @@
     }
 
     /**
+     * Enables Xalan2 traces and uses the given configuration.
+     *
+     * <p>Note that this element doesn't have any effect with a
+     * processor other than trax or if the Transformer is not Xalan2's
+     * transformer implementation.</p>
+     *
+     * @since Ant 1.8.0
+     */
+    public TraceConfiguration createTrace() {
+        if (traceConfiguration != null) {
+            throw new BuildException("can't have more than one trace"
+                                     + " configuration");
+        }
+        traceConfiguration = new TraceConfiguration();
+        return traceConfiguration;
+    }
+
+    /**
+     * Configuration for Xalan2 traces.
+     *
+     * @since Ant 1.8.0
+     */
+    public TraceConfiguration getTraceConfiguration() {
+        return traceConfiguration;
+    }
+
+    /**
      * Load processor here instead of in setProcessor - this will be
      * called from within execute, so we have access to the latest
      * classpath.
@@ -1358,4 +1392,100 @@
         }
     }
 
+    /**
+     * Configuration for Xalan2 traces.
+     *
+     * @since Ant 1.8.0
+     */
+    public final class TraceConfiguration {
+        private boolean elements, extension, generation, selection, templates;
+
+        /**
+         * Set to true if the listener is to print events that occur
+         * as each node is 'executed' in the stylesheet.
+         */
+        public void setElements(boolean b) {
+            elements = b;
+        }
+
+        /**
+         * True if the listener is to print events that occur as each
+         * node is 'executed' in the stylesheet.
+         */
+        public boolean getElements() {
+            return elements;
+        }
+
+        /**
+         * Set to true if the listener is to print information after
+         * each extension event.
+         */
+        public void setExtension(boolean b) {
+            extension = b;
+        }
+
+        /**
+         * True if the listener is to print information after each
+         * extension event.
+         */
+        public boolean getExtension() {
+            return extension;
+        }
+
+        /**
+         * Set to true if the listener is to print information after
+         * each result-tree generation event.
+         */
+        public void setGeneration(boolean b) {
+            generation = b;
+        }
+
+        /**
+         * True if the listener is to print information after each
+         * result-tree generation event.
+         */
+        public boolean getGeneration() {
+            return generation;
+        }
+
+        /**
+         * Set to true if the listener is to print information after
+         * each selection event.
+         */
+        public void setSelection(boolean b) {
+            selection = b;
+        }
+
+        /**
+         * True if the listener is to print information after each
+         * selection event.
+         */
+        public boolean getSelection() {
+            return selection;
+        }
+
+        /**
+         * Set to true if the listener is to print an event whenever a
+         * template is invoked.
+         */
+        public void setTemplates(boolean b) {
+            templates = b;
+        }
+
+        /**
+         * True if the listener is to print an event whenever a
+         * template is invoked.
+         */
+        public boolean getTemplates() {
+            return templates;
+        }
+
+        /**
+         * The stream to write traces to.
+         */
+        public java.io.OutputStream getOutputStream() {
+            return new LogOutputStream(XSLTProcess.this);
+        }
+    }
+
 }

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java?rev=722849&r1=722848&r2=722849&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java Wed Dec
 3 04:02:30 2008
@@ -125,6 +125,9 @@
     /** whether to suppress warnings */
     private boolean suppressWarnings = false;
 
+    /** optional trace configuration. */
+    private XSLTProcess.TraceConfiguration traceConfiguration = null;
+
     /**
      * Constructor for TraXLiaison.
      * @throws Exception never
@@ -324,6 +327,37 @@
             final String[] pair = (String[]) outputProperties.elementAt(i);
             transformer.setOutputProperty(pair[0], pair[1]);
         }
+
+        if (traceConfiguration != null) {
+            if ("org.apache.xalan.transformer.TransformerImpl"
+                .equals(transformer.getClass().getName())) {
+                try {
+                    Class traceSupport =
+                        Class.forName("org.apache.tools.ant.taskdefs.optional."
+                                      + "Xalan2TraceSupport", true,
+                                      Thread.currentThread()
+                                      .getContextClassLoader());
+                    XSLTTraceSupport ts =
+                        (XSLTTraceSupport) traceSupport.newInstance();
+                    ts.configureTrace(transformer, traceConfiguration);
+                } catch (Exception e) {
+                    String msg = "Failed to enable tracing because of " + e;
+                    if (project != null) {
+                        project.log(msg, Project.MSG_WARN);
+                    } else {
+                        System.err.println(msg);
+                    }
+                }
+            } else {
+                String msg = "Not enabling trace support for transformer"
+                    + " implementation" + transformer.getClass().getName();
+                if (project != null) {
+                    project.log(msg, Project.MSG_WARN);
+                } else {
+                    System.err.println(msg);
+                }
+            }
+        }
     }
 
     /**
@@ -583,5 +617,7 @@
         }
 
         suppressWarnings = xsltTask.getSuppressWarnings();
+
+        traceConfiguration = xsltTask.getTraceConfiguration();
     }
 }

Added: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/XSLTTraceSupport.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/XSLTTraceSupport.java?rev=722849&view=auto
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/XSLTTraceSupport.java (added)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/XSLTTraceSupport.java Wed
Dec  3 04:02:30 2008
@@ -0,0 +1,31 @@
+/*
+ *  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;
+
+import org.apache.tools.ant.taskdefs.XSLTProcess;
+import javax.xml.transform.Transformer;
+
+/**
+ * Sets up trace support for a given transformer.
+ *
+ * @since Ant 1.8.0
+ */
+public interface XSLTTraceSupport {
+    void configureTrace(Transformer t, XSLTProcess.TraceConfiguration conf);
+}

Propchange: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/XSLTTraceSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java?rev=722849&view=auto
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java
(added)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java
Wed Dec  3 04:02:30 2008
@@ -0,0 +1,52 @@
+/*
+ *  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;
+
+import java.io.PrintWriter;
+import java.util.TooManyListenersException;
+import javax.xml.transform.Transformer;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.XSLTProcess;
+import org.apache.xalan.trace.PrintTraceListener;
+import org.apache.xalan.transformer.TransformerImpl;
+
+/**
+ * Sets up trace support for a given transformer.
+ *
+ * @since Ant 1.8.0
+ */
+public class Xalan2TraceSupport implements XSLTTraceSupport {
+    public void configureTrace(Transformer t,
+                               XSLTProcess.TraceConfiguration conf) {
+        if (t instanceof TransformerImpl && conf != null) {
+            PrintWriter w = new PrintWriter(conf.getOutputStream(), false);
+            PrintTraceListener tl = new PrintTraceListener(w);
+            tl.m_traceElements = conf.getElements();
+            tl.m_traceExtension = conf.getExtension();
+            tl.m_traceGeneration = conf.getGeneration();
+            tl.m_traceSelection = conf.getSelection();
+            tl.m_traceTemplates = conf.getTemplates();
+            try {
+                ((TransformerImpl) t).getTraceManager().addTraceListener(tl);
+            } catch (TooManyListenersException tml) {
+                throw new BuildException(tml);
+            }
+        }
+    }
+}

Propchange: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/Xalan2TraceSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: ant/core/trunk/src/tests/antunit/taskdefs/xslt-test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/xslt-test.xml?rev=722849&r1=722848&r2=722849&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/xslt-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/xslt-test.xml Wed Dec  3 04:02:30 2008
@@ -146,4 +146,28 @@
       </fileset>
     </xslt>
   </target>
+
+  <available property="jdk1.5+" classname="java.net.Proxy"/>
+
+  <target name="testTraceJdk14" unless="jdk1.5+" depends="setUp">
+    <xslt in="${legacy.dir}/data.xml"
+          out="${output}/out.xml"
+          style="${legacy.dir}/printParams.xsl">
+      <param name="set" expression="myvalue"/>
+      <trace templates="true"/>
+    </xslt>
+    <au:assertLogContains text="Failed to enable tracing" level="warning"/>
+  </target>
+
+  <target name="testTraceJdk15+" if="jdk1.5+" depends="setUp">
+    <xslt in="${legacy.dir}/data.xml"
+          out="${output}/out.xml"
+          style="${legacy.dir}/printParams.xsl">
+      <param name="set" expression="myvalue"/>
+      <trace templates="true" elements="true" generation="true"
+             selection="true" extension="true"/>
+    </xslt>
+    <au:assertLogDoesntContain text="Failed to enable tracing"/>
+  </target>
+
 </project>



Mime
View raw message