You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2003/08/05 18:01:10 UTC

cvs commit: ant/src/testcases/org/apache/tools/ant/taskdefs StyleTest.java

peterreilly    2003/08/05 09:01:10

  Modified:    docs/manual/CoreTasks style.html
               src/main/org/apache/tools/ant/taskdefs XSLTProcess.java
  Added:       src/etc/testcases/taskdefs/style build.xml data.xml
                        printParams.xsl
               src/testcases/org/apache/tools/ant/taskdefs StyleTest.java
  Log:
  Add if/unless attributes to <param/> element of <style/> task
  PR: 22044
  Obtained from: Jens
  Submitted by:	 Peter Reilly & Jan Matèrne
  
  Revision  Changes    Path
  1.29      +14 -4     ant/docs/manual/CoreTasks/style.html
  
  Index: style.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTasks/style.html,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- style.html	26 Jul 2003 16:40:07 -0000	1.28
  +++ style.html	5 Aug 2003 16:01:10 -0000	1.29
  @@ -187,9 +187,20 @@
     <tr>
       <td valign="top">expression</td>
       <td valign="top">Text value to be placed into the param.<br/>
  -    Was originally intended to be an XSL expression.
  +    Was originally intended to be an XSL expression.</td>
       <td align="center" valign="top">Yes</td>
     </tr>
  +  <tr>
  +    <td valign="top">if</td>
  +    <td valign="top">The param will only passed if this property is set.</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">unless</td>
  +    <td valign="top">The param will only passed unless this property is set.</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +
   </table>
   
   <h4>outputproperty ('trax' processors only)</h4>
  @@ -230,7 +241,7 @@
       transformer factory to use. For example
         <tt>org.apache.xalan.processor.TransformerFactoryImpl</tt>
          or <tt>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</tt>
  -       or <tt>net.sf.saxon.TransformerFactoryImpl</tt>...    
  +       or <tt>net.sf.saxon.TransformerFactoryImpl</tt>...
       </td>
       <td align="center" valign="top">No. Defaults to the JAXP lookup mechanism.</td>
     </tr>
  @@ -318,7 +329,7 @@
     <h4>Using factory settings</h4>
   <pre>&lt;xslt in=&quot;doc.xml&quot; out=&quot;build/doc/output.xml&quot;
         style=&quot;style/apache.xsl&quot;&gt;
  -  &lt;factory name=&quot;org.apache.xalan.processor.TransformerFactoryImpl&quot;&gt;  
  +  &lt;factory name=&quot;org.apache.xalan.processor.TransformerFactoryImpl&quot;&gt;
       &lt;attribute name=&quot;http://xml.apache.org/xalan/features/optimize&quot; value=&quot;true&quot;/&gt;
     &lt;/factory&gt;
   &lt;/xslt&gt;</pre>
  @@ -329,4 +340,3 @@
   
   </body>
   </html>
  -
  
  
  
  1.1                  ant/src/etc/testcases/taskdefs/style/build.xml
  
  Index: build.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <project name="style-test" basedir="." default="nothing">
  
    <property name="out.dir" value="out"/>
  
  
    <target name="setup">
    </target>
  
    <target name="teardown">
        <delete dir="${out.dir}" failonerror="false" />
    </target>
  
    <target name="testStyleIsSet">
        <style in="data.xml" out="${out.dir}/out.xml"/>
    </target>
  
    <target name="testTransferParameterSet">
        <property name="value" value="myvalue"/>
        <style in="data.xml" out="${out.dir}/out.xml" style="printParams.xsl">
            <param name="set" expression="${value}"/>
        </style>
    </target>
  
    <target name="testTransferParameterEmpty">
        <property name="value" value=""/>
        <style in="data.xml" out="${out.dir}/out.xml" style="printParams.xsl">
            <param name="empty" expression="${value}"/>
        </style>
    </target>
  
    <target name="testTransferParameterUnset">
        <style in="data.xml" out="${out.dir}/out.xml" style="printParams.xsl">
            <param name="undefined" expression="${value}"/>
        </style>
    </target>
  
    <target name="testTransferParameterUnsetWithIf">
        <style in="data.xml" out="${out.dir}/out.xml" style="printParams.xsl">
            <param name="undefined" expression="${value}" if="value" />
        </style>
    </target>
  
  </project>
  
  
  1.1                  ant/src/etc/testcases/taskdefs/style/data.xml
  
  Index: data.xml
  ===================================================================
  <data/>
  
  
  1.1                  ant/src/etc/testcases/taskdefs/style/printParams.xsl
  
  Index: printParams.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format">
  
  <!-- get the xsl-parameter -->
  <xsl:param name="set">set default value</xsl:param>
  <xsl:param name="empty">empty default value</xsl:param>
  <xsl:param name="undefined">undefined default value</xsl:param>
  
  <!-- use the xsl-parameter -->
  <xsl:template match="/">
  set='<xsl:value-of select="$set"/>'
  empty='<xsl:value-of select="$empty"/>'
  undefined='<xsl:value-of select="$undefined"/>'
  </xsl:template>
  
  </xsl:stylesheet>
  
  
  1.72      +50 -2     ant/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
  
  Index: XSLTProcess.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- XSLTProcess.java	26 Jul 2003 16:58:14 -0000	1.71
  +++ XSLTProcess.java	5 Aug 2003 16:01:10 -0000	1.72
  @@ -615,6 +615,19 @@
           /** The parameter's value */
           private String expression = null;
   
  +        private String ifProperty;
  +        private String unlessProperty;
  +        private Project project;
  +
  +        /**
  +         * Set the current project
  +         *
  +         * @param project the current project
  +         */
  +        public void setProject(Project project) {
  +            this.project = project;
  +        }
  +
           /**
            * Set the parameter name.
            *
  @@ -658,6 +671,39 @@
               }
               return expression;
           }
  +
  +        /**
  +         * Set whether this param should be used.  It will be
  +         * used if the property has been set, otherwise it won't.
  +         * @param ifProperty name of property
  +         */
  +        public void setIf(String ifProperty) {
  +            this.ifProperty = ifProperty;
  +        }
  +
  +        /**
  +         * Set whether this param should NOT be used. It
  +         * will not be used if the property has been set, orthwise it
  +         * will be used.
  +         * @param unlessProperty name of property
  +         */
  +        public void setUnless(String unlessProperty) {
  +            this.unlessProperty = unlessProperty;
  +        }
  +        /**
  +         * Ensures that the param passes the conditions placed
  +         * on it with <code>if</code> and <code>unless</code> properties.
  +         */
  +        public boolean shouldUse() {
  +            if (ifProperty != null && project.getProperty(ifProperty) == null) {
  +                return false;
  +            } else if (unlessProperty != null
  +                    && project.getProperty(unlessProperty) != null) {
  +                return false;
  +            }
  +            
  +            return true;
  +        }
       } // Param
   
   
  @@ -743,7 +789,9 @@
               liaison.setStylesheet(stylesheet);
               for (Enumeration e = params.elements(); e.hasMoreElements();) {
                   Param p = (Param) e.nextElement();
  -                liaison.addParam(p.getName(), p.getExpression());
  +                if (p.shouldUse()) {
  +                    liaison.addParam(p.getName(), p.getExpression());
  +                }
               }
               if (liaison instanceof TraXLiaison) {
                   configureTraXLiaison((TraXLiaison) liaison);
  
  
  
  1.1                  ant/src/testcases/org/apache/tools/ant/taskdefs/StyleTest.java
  
  Index: StyleTest.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001-2002 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 "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;
  
  
  import org.apache.tools.ant.BuildFileTest;
  import org.apache.tools.ant.util.FileUtils;
  
  import java.io.File;
  import java.io.FileReader;
  import java.io.IOException;
  import java.io.Reader;
  
  
  /**
   * TestCases f�r <style> / <xslt> task.
   * @author Jan Mat�rne
   * @version 2003-08-05
   */
  public class StyleTest extends BuildFileTest {
  
      public StyleTest(String s) {
          super(s);
      }
  
      protected void setUp() throws Exception {
          configureProject("src/etc/testcases/taskdefs/style/build.xml");
          //executeTarget("setup");
          //commented out for performance while target is empty
      }
  
      protected void tearDown() throws Exception {
          executeTarget("teardown");
      }
  
      public void testStyleIsSet() throws Exception {
          expectBuildException("testStyleIsSet", "no stylesheet specified");
      }
  
      public void testTransferParameterSet() throws Exception {
          expectFileContains("testTransferParameterSet",  // target
                             "out/out.xml",               // file
                             "set='myvalue'");            // exptected string
      }
  
      public void testTransferParameterEmpty() throws Exception {
          expectFileContains("testTransferParameterEmpty",
                             "out/out.xml",
                             "empty=''");
      }
  
      public void testTransferParameterUnset() throws Exception {
          expectFileContains("testTransferParameterUnset",
                             "out/out.xml",
                             "undefined='${value}'");
      }
  
      public void testTransferParameterUnsetWithIf() throws Exception {
          expectFileContains("testTransferParameterUnsetWithIf",
                             "out/out.xml",
                             "undefined='undefined default value'");
      }
  
  
      // *************  copied from ConcatTest  *************
  
      // ------------------------------------------------------
      //   Helper methods - should be in BuildFileTest
      // -----------------------------------------------------
  
      private String getFileString(String filename)
          throws IOException
      {
          Reader r = null;
          try {
              r = new FileReader(getProject().resolveFile(filename));
              return  FileUtils.newFileUtils().readFully(r);
          }
          finally {
              try {r.close();} catch (Throwable ignore) {}
          }
  
      }
  
      private String getFileString(String target, String filename)
          throws IOException
      {
          executeTarget(target);
          return getFileString(filename);
      }
  
      private void expectFileContains(
          String target, String filename, String contains)
          throws IOException
      {
          String content = getFileString(target, filename);
          assertTrue(
              "expecting file " + filename + " to contain " +
              contains +
              " but got " + content, content.indexOf(contains) > -1);
      }
  
  }
  
  

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