diff --git a/manual/Tasks/get.html b/manual/Tasks/get.html index a6d89e9dd..e63b59df8 100644 --- a/manual/Tasks/get.html +++ b/manual/Tasks/get.html @@ -183,12 +183,12 @@ plain text' authentication is used. This is only secure over an HTTPS link. name - The name or key of this header. + The name or key of this header. Cannot be null or empty. Leading and trailing spaces are removed Yes value - The value to assign to the. + The value to assign to the header. Cannot be null or empty. Leading and trailing spaces are removed Yes @@ -261,10 +261,9 @@ the input task to query for a password.

With custom HTTP headers

 <get src="http://ant.apache.org/index.html" dest="downloads">
-  <header name="header1" value=="headerValue1" />
-  <header name="header2" value=="headerValue2" />
-  <header name="header3" value=="headerValue3" />
-
+  <header name="header1" value="headerValue1" />
+  <header name="header2" value="headerValue2" />
+  <header name="header3" value="headerValue3" />
 </get>
 
diff --git a/src/etc/testcases/taskdefs/get.xml b/src/etc/testcases/taskdefs/get.xml index 569d8333e..188febddc 100644 --- a/src/etc/testcases/taskdefs/get.xml +++ b/src/etc/testcases/taskdefs/get.xml @@ -98,21 +98,21 @@ - +
- +
- +
@@ -120,7 +120,7 @@ - +
diff --git a/src/main/org/apache/tools/ant/taskdefs/Get.java b/src/main/org/apache/tools/ant/taskdefs/Get.java index 2200bd89f..674a535e1 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Get.java +++ b/src/main/org/apache/tools/ant/taskdefs/Get.java @@ -45,6 +45,8 @@ import org.apache.tools.ant.types.resources.URLProvider; import org.apache.tools.ant.types.resources.URLResource; import org.apache.tools.ant.util.FileNameMapper; import org.apache.tools.ant.util.FileUtils; +import org.apache.tools.ant.util.StringUtils; + import java.util.LinkedHashMap; import java.util.Map; @@ -495,28 +497,14 @@ public class Get extends Task { */ public void addConfiguredHeader(Header header) { if (header != null) { - String key = trimToNull(header.getName()); - String value = trimToNull(header.getValue()); + String key = StringUtils.trimToNull(header.getName()); + String value = StringUtils.trimToNull(header.getValue()); if (key != null && value != null) { this.headers.put(key, value); } } } - private String trimToNull(String inputString) { - - if (inputString == null) { - return null; - } - - inputString = inputString.trim(); - if ("".equals(inputString)) { - return null; - } - return inputString; - } - - /** * Define the mapper to map source to destination files. * @return a mapper to be configured. @@ -761,14 +749,14 @@ public class Get extends Task { connection.setRequestProperty("Accept-Encoding", GZIP_CONTENT_ENCODING); } - if (!headers.isEmpty()) { - for (final Map.Entry header : headers.entrySet()) { - //we do not log the header value as it may contain sensitive data like passwords - log(String.format("Adding header '%s' ", header.getKey())); - connection.setRequestProperty(header.getKey(), header.getValue()); - } + + for (final Map.Entry header : headers.entrySet()) { + //we do not log the header value as it may contain sensitive data like passwords + log(String.format("Adding header '%s' ", header.getKey())); + connection.setRequestProperty(header.getKey(), header.getValue()); } + if (connection instanceof HttpURLConnection) { ((HttpURLConnection) connection) .setInstanceFollowRedirects(false); diff --git a/src/main/org/apache/tools/ant/util/StringUtils.java b/src/main/org/apache/tools/ant/util/StringUtils.java index 04f1ce8c1..6ee9c450d 100644 --- a/src/main/org/apache/tools/ant/util/StringUtils.java +++ b/src/main/org/apache/tools/ant/util/StringUtils.java @@ -306,4 +306,25 @@ public final class StringUtils { private static Collector joining(CharSequence separator) { return separator == null ? Collectors.joining() : Collectors.joining(separator); } + + + /** + * @param inputString String to trim + * @return null if the input string is null or empty or contain only empty spaces. + * It returns the input string without leading and trailing spaces otherwise. + * + */ + public static String trimToNull(String inputString) { + + if (inputString == null) { + return null; + } + + String tmpString = inputString.trim(); + if ("".equals(tmpString)) { + return null; + } + return tmpString; + } + } diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/GetTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/GetTest.java index e18fdcd14..fb7893707 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/GetTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/GetTest.java @@ -124,8 +124,8 @@ public class GetTest { } @Test - public void testTwoHeaders() { - buildRule.executeTarget("testTwoHeaders"); + public void testTwoHeadersAreAddedOK() { + buildRule.executeTarget("testTwoHeadersAreAddedOK"); String log = buildRule.getLog(); AntAssert.assertContains("Adding header 'header1'", log); AntAssert.assertContains("Adding header 'header2'", log); @@ -133,13 +133,13 @@ public class GetTest { @Test public void testEmptyHeadersAreNeverAdded() { - buildRule.executeTarget("testEmptyHeaders"); + buildRule.executeTarget("testEmptyHeadersAreNeverAdded"); AntAssert.assertNotContains("Adding header", buildRule.getLog()); } @Test public void testThatWhenMoreThanOneHeaderHaveSameNameOnlyLastOneIsAdded() { - buildRule.executeTarget("testDuplicateHeaderNames"); + buildRule.executeTarget("testThatWhenMoreThanOneHeaderHaveSameNameOnlyLastOneIsAdded"); String log = buildRule.getLog(); AntAssert.assertContains("Adding header 'header1'", log); @@ -150,7 +150,7 @@ public class GetTest { @Test public void testHeaderSpaceTrimmed() { - buildRule.executeTarget("testHeaderSpacesTrimmed"); + buildRule.executeTarget("testHeaderSpaceTrimmed"); AntAssert.assertContains("Adding header 'header1'", buildRule.getLog()); } diff --git a/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java b/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java index d2187c4e0..612c6ec3a 100644 --- a/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java +++ b/src/tests/junit/org/apache/tools/ant/util/StringUtilsTest.java @@ -17,16 +17,14 @@ */ package org.apache.tools.ant.util; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - import java.util.Arrays; import java.util.Collection; import java.util.Vector; import org.junit.Test; +import static org.junit.Assert.*; + /** * Test for StringUtils */ @@ -195,5 +193,24 @@ public class StringUtilsTest { public void testJoinNullSeparator() { assertEquals("abc", StringUtils.join(Arrays.asList("a", "b", "c"), null)); } - + + @Test + public void testTrimToNullWithNullInput(){ + assertNull(StringUtils.trimToNull(null)); + } + + @Test + public void testTrimToNullWithEmptyInput(){ + assertNull(StringUtils.trimToNull("")); + } + + @Test + public void testTrimToNullWithBlankSpaceInput(){ + assertNull(StringUtils.trimToNull(" ")); + } + + @Test + public void testTrimToNullWithInputPaddedWithSpace(){ + assertEquals("aaBcDeF",StringUtils.trimToNull(" aaBcDeF ")); + } }