You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Craeg K Strong <cs...@arielpartners.com> on 2002/05/27 21:45:21 UTC

Re: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs

  XSLTProcess.java
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hello Stefan:

I agree with your reasoning about not making XSLTProcess _depend_ on the TRAX
API, since it can also use non-TRAX XSLT processors.  Removing the dependency
via reflection is the right thing to do IMO.

However, I would propose an alternate solution for the tests.  I happen
to prefer the Saxon XSLT processor to Xalan.  Of course, I still fully support
bundling Xalan with Ant.   I often find it extremely useful to test my XSLT code
with _both_ processors, comparing the results I get with each one.

The way you have coded it, I must change build.xml to switch.  While its
not difficult, it is a little inconvenient.

What about testing for an _implementation_ of TRAX, and excluding the XSLT tests
iff the TRAX _implementation_ is not present?

That is, instead of:

    <exclude name="${optional.package}/XsltTest.java"
         unless="xalan2.present"/>

Have something like

     <exclude name="${optional.package}/XsltTest.java"
        unless= "trax.impl.present"/>

Where "trax.impl.present" is defined something like the following:

      <condition property="trax.impl.present">
        <or>
          <and>
            <isset property="javax.xml.transform.TransformerFactory"/>
            <available classname="${javax.xml.transform.TransformerFactory}"
                       classpathref="classpath" />
          </and>
          <available
resource="META-INF/services/javax.xml.transform.TransformerFactory"/>
        </or>
      </condition>

The above is not perfect (See JAXP 1.1 specification, page 19/section 3.3 "XSLT
Pluggability") but it works for the normal case where you simply either:

a) drop in either the saxon.jar or xalan.jar or
b) keep them both in the classpath and define the TransformerFactory property
     to point to the one you want

Using this kind of technique, the test will execute if saxon _OR_ xalan is present.

--Craeg

bodewig@apache.org wrote:
 > bodewig     02/05/27 02:13:36
 >
 >   Modified:    .        Tag: ANT_15_BRANCH build.xml
 >                src/main/org/apache/tools/ant/taskdefs Tag: ANT_15_BRANCH
 >                         XSLTProcess.java
 >   Log:
 >   Remove direct TraX compile-time dependency from <style>.
 >
 >   There still is an indirect dependency via XMLCatalog, of course.
 >
 >   Revision  Changes    Path
 >   No                   revision
 >
 >
 >   No                   revision
 >
 >
 >   1.304.2.10 +1 -1      jakarta-ant/build.xml
 >
 >   Index: build.xml
 >   ===================================================================
 >   RCS file: /home/cvs/jakarta-ant/build.xml,v
 >   retrieving revision 1.304.2.9
 >   retrieving revision 1.304.2.10
 >   diff -u -r1.304.2.9 -r1.304.2.10
 >   --- build.xml	27 May 2002 08:47:25 -0000	1.304.2.9
 >   +++ build.xml	27 May 2002 09:13:36 -0000	1.304.2.10
 >   @@ -1275,7 +1275,7 @@
 >              <!-- these tests need to be localised before being ran???? -->
 >              <exclude name="${optional.package}/PvcsTest.java" />
 >
 >   -          <!-- ehm, these are not really a TraX test but rather a xalan2 
test..-->
 >   +          <!-- ehm, these are not really TraX tests but rather xalan2 
tests..-->
 >              <exclude name="${optional.package}/TraXLiaisonTest.java"
 >                       unless="xalan2.present"/>
 >              <exclude name="${optional.package}/XsltTest.java"
 >
 >
 >
 >   No                   revision
 >
 >
 >   No                   revision
 >
 >
 >   1.43.2.2  +11 -6 
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
 >
 >   Index: XSLTProcess.java
 >   ===================================================================
 >   RCS file: 
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java,v
 >   retrieving revision 1.43.2.1
 >   retrieving revision 1.43.2.2
 >   diff -u -r1.43.2.1 -r1.43.2.2
 >   --- XSLTProcess.java	24 May 2002 15:47:57 -0000	1.43.2.1
 >   +++ XSLTProcess.java	27 May 2002 09:13:36 -0000	1.43.2.2
 >   @@ -67,13 +67,12 @@
 >    import org.apache.tools.ant.util.FileUtils;
 >    import org.apache.tools.ant.types.XMLCatalog;
 >    import org.xml.sax.EntityResolver;
 >   -import javax.xml.transform.URIResolver;
 >
 >    /**
 >     * A Task to process via XSLT a set of XML documents. This is
 >     * useful for building views of XML based documentation.
 >     *
 >   - * @version $Revision: 1.43.2.1 $
 >   + * @version $Revision: 1.43.2.2 $
 >     *
 >     * @author <a href="mailto:kvisco@exoffice.com">Keith Visco</a>
 >     * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
 >   @@ -662,6 +661,12 @@
 >                    Param p = (Param) e.nextElement();
 >                    liaison.addParam(p.getName(), p.getExpression());
 >                }
 >   +        } catch (Exception ex) {
 >   +            log("Failed to read stylesheet " + stylesheet, Project.MSG_INFO);
 >   +            throw new BuildException(ex);
 >   +        }
 >   +
 >   +        try {
 >                // if liaison is a TraxLiason, use XMLCatalog as the entity
 >                // resolver and URI resolver
 >                if (liaison.getClass().getName().equals(TRAX_LIAISON_CLASS) &&
 >   @@ -675,12 +680,12 @@
 >
 >                    resolver = liaison.getClass()
 >                        .getDeclaredMethod("setURIResolver",
 >   -                                       new Class[] {URIResolver.class});
 >   +                                       new Class[] 
{loadClass("javax.xml.transform.URIResolver")});
 >                    resolver.invoke(liaison, new Object[] {xmlCatalog});
 >                }
 >   -        } catch (Exception ex) {
 >   -            log("Failed to read stylesheet " + stylesheet, Project.MSG_INFO);
 >   -            throw new BuildException(ex);
 >   +        } catch (Exception e) {
 >   +            throw new BuildException("Failed to configure XMLCatalog for "
 >   +                                     + "TraxLiaison", e);
 >            }
 >        }
 >
 >
 >
 >
 >
 > --
 > To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
 > For additional commands, e-mail: <ma...@jakarta.apache.org>
 >


-- 
Craeg K Strong, General Partner
Ariel Partners LLC
http://www.arielpartners.com
voice 781-647-2425
fax   781-647-9690

NOTICE: This message is for the sole use of the intended recipient(s)
and may contain confidential and privileged information. Any review,
retransmission, dissemination or other use of, or taking of any action
in reliance upon, this information by persons or entities other than
the intended recipient is prohibited. If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies -- including electronic copies -- of the original message.


-- 
Craeg K Strong, General Partner
Ariel Partners LLC
http://www.arielpartners.com
voice 781-647-2425
fax   781-647-9690

NOTICE: This message is for the sole use of the intended recipient(s)
and may contain confidential and privileged information. Any review,
retransmission, dissemination or other use of, or taking of any action
in reliance upon, this information by persons or entities other than
the intended recipient is prohibited. If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies -- including electronic copies -- of the original message.


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs

Posted by Stefan Bodewig <bo...@apache.org>.
On Mon, 27 May 2002, Craeg K. Strong <cs...@arielpartners.com>
wrote:

> However, I would propose an alternate solution for the tests.

I'm all ears.

> The way you have coded it, I must change build.xml to switch.

I found that the test was asserting a given message for the
BuildException - will all TraX processors use the same message?

> What about testing for an _implementation_ of TRAX, and excluding
> the XSLT tests iff the TRAX _implementation_ is not present?

Fine with me.

> The above is not perfect (See JAXP 1.1 specification, page
> 19/section 3.3 "XSLT Pluggability")

I can put that back in, fine with me.

Stefan

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>