You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by an...@apache.org on 2006/10/26 03:39:59 UTC

svn commit: r467828 - in /ant/core/trunk: ./ docs/manual/OptionalTasks/ src/etc/testcases/taskdefs/optional/ src/main/org/apache/tools/ant/taskdefs/optional/ src/tests/junit/org/apache/tools/ant/taskdefs/optional/

Author: antoine
Date: Wed Oct 25 18:39:57 2006
New Revision: 467828

URL: http://svn.apache.org/viewvc?view=rev&rev=467828
Log:
add regex attribute to echoproperties task.
Bugzilla 40019.

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/docs/manual/OptionalTasks/echoproperties.html
    ant/core/trunk/src/etc/testcases/taskdefs/optional/echoproperties.xml
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
    ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?view=diff&rev=467828&r1=467827&r2=467828
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Oct 25 18:39:57 2006
@@ -24,6 +24,9 @@
 
 * removed dependence on sun.misc.UUEncoder for UUMailer.
 
+* added regex attribute to the echoproperties task. 
+  Bugzilla 40019.
+
 Changes from Ant 1.7.0Beta2 to Ant 1.7.0Beta3 
 =============================================
 

Modified: ant/core/trunk/docs/manual/OptionalTasks/echoproperties.html
URL: http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/OptionalTasks/echoproperties.html?view=diff&rev=467828&r1=467827&r2=467828
==============================================================================
--- ant/core/trunk/docs/manual/OptionalTasks/echoproperties.html (original)
+++ ant/core/trunk/docs/manual/OptionalTasks/echoproperties.html Wed Oct 25 18:39:57 2006
@@ -58,9 +58,15 @@
     </td>
     <td valign="top" align="center">No</td>
   </tr>
-  
-  
-   
+  <tr>
+    <td valign="top">regex</td>
+    <td valign="top">
+        a regular expression which is used to filter the
+        properties
+        only those properties whose names match it will be echoed.
+    </td>
+    <td valign="top" align="center">No</td>
+  </tr>   
   <tr>
     <td valign="top">failonerror</td>
     <td valign="top">By default, the "failonerror" attribute is enabled.
@@ -70,7 +76,6 @@
     statement, and the build will continue without failure from this task.</td>
     <td valign="top" align="center">No</td>
   </tr>
-
   <tr>
     <td valign="top">format</td>
     <td valign="top">One of <code>text</code> or <code>xml</code>.
@@ -84,7 +89,11 @@
 <h4>propertyset</h4>
 
 <p>You can specify subsets of properties to be echoed with <a
-href="../CoreTypes/propertyset.html">propertyset</a>s.</p>
+href="../CoreTypes/propertyset.html">propertyset</a>s. Using
+<tt>propertyset</tt>s gives more control on which properties will be
+picked up. The attributes <tt>prefix</tt> and <tt>regex</tt> are just
+shorcuts that use <tt>propertyset</tt>s internally.
+</p>
 
 <p><em>since Ant 1.6</em>.</p>
 
@@ -115,7 +124,20 @@
     &lt;/propertyset&gt;
   &lt;/echoproperties&gt;
 </pre></blockquote>
-<p>List all properties beginning with "java."</p>
+<p>This again lists all properties beginning with "java." using a nested
+<tt>&lt;/propertyset&gt;</tt> which is an equivalent but longer way.</p>
+<blockquote><pre>
+  &lt;echoproperties regex=".*ant.*"/&gt;
+</pre></blockquote>
+<p>Lists all properties that contain "ant" in their names.
+The equivalent snippet with <tt>&lt;/propertyset&gt;</tt> is:</p>
+<blockquote><pre>
+  &lt;echoproperties&gt;
+    &lt;propertyset&gt;
+      &lt;propertyref regex=".*ant.*"/&gt;
+    &lt;/propertyset&gt;
+  &lt;/echoproperties&gt;
+</pre></blockquote>
 
 
 

Modified: ant/core/trunk/src/etc/testcases/taskdefs/optional/echoproperties.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/optional/echoproperties.xml?view=diff&rev=467828&r1=467827&r2=467828
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/optional/echoproperties.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/optional/echoproperties.xml Wed Oct 25 18:39:57 2006
@@ -94,6 +94,18 @@
     </echoproperties>
   </target>
 
+  <target name="testWithPrefixAndRegex" depends="setup">
+    <echoproperties prefix="ant." regex=".*ant.*"/>
+  </target>
+
+  <target name="testWithEmptyPrefixAndRegex" depends="setup">
+    <echoproperties prefix="" regex=""/>
+  </target>
+
+  <target name="testWithRegex" depends="setup">
+    <echoproperties regex=".*ant.*"/>
+  </target>
+
   <target name="cleanup">
     <delete file="test.properties" failonerror="no" />
     <delete file="test-prefix.properties" failonerror="no" />

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java?view=diff&rev=467828&r1=467827&r2=467828
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java Wed Oct 25 18:39:57 2006
@@ -129,6 +129,13 @@
 
     private String format = "text";
 
+    private String prefix;
+
+    /**
+     * @since Ant 1.7
+     */
+    private String regex;
+
     /**
      * Sets the input file.
      *
@@ -163,19 +170,20 @@
 
     /**
      *  If the prefix is set, then only properties which start with this
-     *  prefix string will be recorded.  If this is never set, or it is set
-     *  to an empty string or <tt>null</tt>, then all properties will be
-     *  recorded. <P>
+     *  prefix string will be recorded. If regex is not set and  if this
+     *  is never set, or it is set to an empty string or <tt>null</tt>,
+     *  then all properties will be recorded. <P>
      *
-     *  For example, if the property is set as:
+     *  For example, if the attribute is set as:
      *    <PRE>&lt;echoproperties  prefix="ant." /&gt;</PRE>
      *  then the property "ant.home" will be recorded, but "ant-example"
      *  will not.
      *
-     *@param  prefix  The new prefix value
+     * @param  prefix  The new prefix value
      */
     public void setPrefix(String prefix) {
         if (prefix != null && prefix.length() != 0) {
+            this.prefix = prefix;
             PropertySet ps = new PropertySet();
             ps.setProject(getProject());
             ps.appendPrefix(prefix);
@@ -184,6 +192,31 @@
     }
 
     /**
+     *  If the regex is set, then only properties whose names match it
+     *  will be recorded.  If prefix is not set and if this is never set,
+     *  or it is set to an empty string or <tt>null</tt>, then all
+     *  properties will be recorded.<P>
+     *
+     *  For example, if the attribute is set as:
+     *    <PRE>&lt;echoproperties  prefix=".*ant.*" /&gt;</PRE>
+     *  then the properties "ant.home" and "user.variant" will be recorded,
+     *  but "ant-example" will not.
+     *
+     * @param  regex  The new regex value
+     *
+     * @since Ant 1.7
+     */
+    public void setRegex(String regex) {
+        if (regex != null && regex.length() != 0) {
+            this.regex = regex;
+            PropertySet ps = new PropertySet();
+            ps.setProject(getProject());
+            ps.appendRegex(regex);
+            addPropertyset(ps);
+        }
+    }
+
+    /**
      * A set of properties to write.
      * @param ps the property set to write
      * @since Ant 1.6
@@ -209,6 +242,7 @@
 
         /**
          * @see EnumeratedAttribute#getValues()
+         * @return accepted values
          */
         public String[] getValues() {
             return formats;
@@ -221,6 +255,10 @@
      *@exception  BuildException  trouble, probably file IO
      */
     public void execute() throws BuildException {
+        if (prefix != null && regex != null) {
+            throw new BuildException("Please specify either prefix"
+                    + " or regex, but not both", getLocation());
+        }
         //copy the properties file
         Hashtable allProps = new Hashtable();
 

Modified: ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java?view=diff&rev=467828&r1=467827&r2=467828
==============================================================================
--- ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java (original)
+++ ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/optional/EchoPropertiesTest.java Wed Oct 25 18:39:57 2006
@@ -161,6 +161,22 @@
         testEchoPrefixVarious("testEchoPrefixAsDoublyNegatedPropertyset");
     }
 
+    public void testWithPrefixAndRegex() throws Exception {
+        expectSpecificBuildException("testWithPrefixAndRegex",
+                "The target must fail with prefix and regex attributes set",
+                "Please specify either prefix or regex, but not both");
+    }
+
+    public void testWithEmptyPrefixAndRegex() throws Exception {
+        expectLogContaining("testEchoWithEmptyPrefixToLog", "test.property="+TEST_VALUE);
+    }
+
+    public void testWithRegex() throws Exception {
+        executeTarget("testWithRegex");
+        assertDebuglogContaining("ant.home=");
+        assertDebuglogContaining("user.variant=");
+    }
+
     private void testEchoPrefixVarious(String target) throws Exception {
         executeTarget(target);
         Properties props = loadPropFile(PREFIX_OUTFILE);



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