git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277740 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -345,6 +345,8 @@ Fixed bugs: | |||||
| * <javac debug="false"> created an invalid command line when running | * <javac debug="false"> created an invalid command line when running | ||||
| the Symantec Java compiler. | the Symantec Java compiler. | ||||
| * Get with usetimestamp did not work on Java 1.2. | |||||
| Changes from Ant 1.6.1 to Ant 1.6.2 | Changes from Ant 1.6.1 to Ant 1.6.2 | ||||
| =================================== | =================================== | ||||
| @@ -24,6 +24,50 @@ | |||||
| <target name="test6"> | <target name="test6"> | ||||
| <get src="http://www.apache.org/" dest="get.tmp"/> | <get src="http://www.apache.org/" dest="get.tmp"/> | ||||
| <fileset id="t6" file="get.tmp" /> | |||||
| <pathconvert property="t6" refid="t6" setonempty="false" /> | |||||
| <fail message="get failed"> | |||||
| <condition> | |||||
| <not> | |||||
| <isset property="t6" /> | |||||
| </not> | |||||
| </condition> | |||||
| </fail> | |||||
| </target> | |||||
| <target name="testUseTimestamp"> | |||||
| <property name="pat" value="yyyyMMddHHmm" /> | |||||
| <tstamp> | |||||
| <format property="dt" pattern="${pat}" offset="-90" unit="second" /> | |||||
| </tstamp> | |||||
| <touch file="get.tmp" datetime="${dt}" pattern="${pat}" /> | |||||
| <get src="http://www.apache.org/" dest="get.tmp" | |||||
| usetimestamp="true" verbose="true" /> | |||||
| <fileset id="ts" file="get.tmp"> | |||||
| <date when="equal" datetime="${dt}" pattern="${pat}" /> | |||||
| </fileset> | |||||
| <pathconvert property="ts" refid="ts" setonempty="false" /> | |||||
| <fail message="get w/ timestamp should have failed."> | |||||
| <condition> | |||||
| <not> | |||||
| <isset property="ts" /> | |||||
| </not> | |||||
| </condition> | |||||
| </fail> | |||||
| </target> | |||||
| <target name="cleanup"> | |||||
| <delete> | |||||
| <fileset dir="${basedir}" includes="get.tmp" /> | |||||
| </delete> | |||||
| </target> | </target> | ||||
| </project> | </project> | ||||
| @@ -21,6 +21,7 @@ import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
| import org.apache.tools.ant.util.JavaEnvUtils; | |||||
| import java.io.File; | import java.io.File; | ||||
| import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
| @@ -137,7 +138,7 @@ public class Get extends Task { | |||||
| URLConnection connection = source.openConnection(); | URLConnection connection = source.openConnection(); | ||||
| //modify the headers | //modify the headers | ||||
| //NB: things like user authentication could go in here too. | //NB: things like user authentication could go in here too. | ||||
| if (useTimestamp && hasTimestamp) { | |||||
| if (hasTimestamp) { | |||||
| connection.setIfModifiedSince(timestamp); | connection.setIfModifiedSince(timestamp); | ||||
| } | } | ||||
| // prepare Java 1.1 style credentials | // prepare Java 1.1 style credentials | ||||
| @@ -160,13 +161,19 @@ public class Get extends Task { | |||||
| HttpURLConnection httpConnection | HttpURLConnection httpConnection | ||||
| = (HttpURLConnection) connection; | = (HttpURLConnection) connection; | ||||
| if (httpConnection.getResponseCode() | if (httpConnection.getResponseCode() | ||||
| == HttpURLConnection.HTTP_NOT_MODIFIED) { | |||||
| == HttpURLConnection.HTTP_NOT_MODIFIED | |||||
| //workaround: doesn't work on 1.2 | |||||
| || (hasTimestamp | |||||
| && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2) | |||||
| && timestamp > httpConnection.getLastModified())) { | |||||
| //not modified so no file download. just return | //not modified so no file download. just return | ||||
| //instead and trace out something so the user | //instead and trace out something so the user | ||||
| //doesn't think that the download happened when it | //doesn't think that the download happened when it | ||||
| //didn't | //didn't | ||||
| log("Not modified - so not downloaded", logLevel); | log("Not modified - so not downloaded", logLevel); | ||||
| return false; | return false; | ||||
| // also, if timestamp is roughly >= now, HTTP_NOT_MODIFIED is _not_ | |||||
| // returned... We may want to remove the 1.2 qualifier above. | |||||
| } | } | ||||
| // test for 401 result (HTTP only) | // test for 401 result (HTTP only) | ||||
| if (httpConnection.getResponseCode() | if (httpConnection.getResponseCode() | ||||
| @@ -32,6 +32,10 @@ public class GetTest extends BuildFileTest { | |||||
| configureProject("src/etc/testcases/taskdefs/get.xml"); | configureProject("src/etc/testcases/taskdefs/get.xml"); | ||||
| } | } | ||||
| public void tearDown() { | |||||
| executeTarget("cleanup"); | |||||
| } | |||||
| public void test1() { | public void test1() { | ||||
| expectBuildException("test1", "required argument missing"); | expectBuildException("test1", "required argument missing"); | ||||
| } | } | ||||
| @@ -54,13 +58,10 @@ public class GetTest extends BuildFileTest { | |||||
| public void test6() { | public void test6() { | ||||
| executeTarget("test6"); | executeTarget("test6"); | ||||
| java.io.File f = new File(getProjectDir(), "get.tmp"); | |||||
| if (!f.exists()) { | |||||
| fail("get failed"); | |||||
| } else { | |||||
| f.delete(); | |||||
| } | |||||
| } | |||||
| public void testUseTimestamp() { | |||||
| executeTarget("testUseTimestamp"); | |||||
| } | } | ||||
| } | } | ||||