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><xslt in="doc.xml" out="build/doc/output.xml"
style="style/apache.xsl">
- <factory name="org.apache.xalan.processor.TransformerFactoryImpl">
+ <factory name="org.apache.xalan.processor.TransformerFactoryImpl">
<attribute name="http://xml.apache.org/xalan/features/optimize" value="true"/>
</factory>
</xslt></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