Browse Source

configurable User-Agent for <get>. PR 55489. Submitted by André-John Mas

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1548232 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 11 years ago
parent
commit
834d0d1201
5 changed files with 57 additions and 12 deletions
  1. +1
    -0
      CONTRIBUTORS
  2. +4
    -0
      contributors.xml
  3. +7
    -0
      src/main/org/apache/tools/ant/MagicNames.java
  4. +25
    -1
      src/main/org/apache/tools/ant/Main.java
  5. +20
    -11
      src/main/org/apache/tools/ant/taskdefs/Get.java

+ 1
- 0
CONTRIBUTORS View File

@@ -16,6 +16,7 @@ Andrew Eisenberg
Andrew Everitt Andrew Everitt
Andrew Stevens Andrew Stevens
Andrey Urazov Andrey Urazov
André-John Mas
Andy Wood Andy Wood
Anil K. Vijendran Anil K. Vijendran
Anli Shundi Anli Shundi


+ 4
- 0
contributors.xml View File

@@ -90,6 +90,10 @@
<first>Andrey</first> <first>Andrey</first>
<last>Urazov</last> <last>Urazov</last>
</name> </name>
<name>
<first>André-John</first>
<last>Mas</last>
</name>
<name> <name>
<first>Andy</first> <first>Andy</first>
<last>Wood</last> <last>Wood</last>


+ 7
- 0
src/main/org/apache/tools/ant/MagicNames.java View File

@@ -282,5 +282,12 @@ public final class MagicNames {
* @since Ant 1.9.1 * @since Ant 1.9.1
*/ */
public static final String ATTRIBUTE_NAMESPACE = "attribute namespace"; public static final String ATTRIBUTE_NAMESPACE = "attribute namespace";

/**
* Name of the property which can provide an override of the
* User-Agent used in &lt;get&gt; tasks.
* Value {@value}
*/
public static final String HTTP_AGENT_PROPERTY = "ant.http.agent";
} }



+ 25
- 1
src/main/org/apache/tools/ant/Main.java View File

@@ -1060,6 +1060,11 @@ public class Main implements AntMain {
*/ */
private static String antVersion = null; private static String antVersion = null;


/**
* Cache of the short Ant version information when it has been loaded.
*/
private static String shortAntVersion = null;
/** /**
* Returns the Ant version information, if available. Once the information * Returns the Ant version information, if available. Once the information
* has been loaded once, it's cached and returned from the cache on future * has been loaded once, it's cached and returned from the cache on future
@@ -1078,10 +1083,11 @@ public class Main implements AntMain {
Main.class.getResourceAsStream("/org/apache/tools/ant/version.txt"); Main.class.getResourceAsStream("/org/apache/tools/ant/version.txt");
props.load(in); props.load(in);
in.close(); in.close();
shortAntVersion = props.getProperty("VERSION");


StringBuffer msg = new StringBuffer(); StringBuffer msg = new StringBuffer();
msg.append("Apache Ant(TM) version "); msg.append("Apache Ant(TM) version ");
msg.append(props.getProperty("VERSION"));
msg.append(shortAntVersion);
msg.append(" compiled on "); msg.append(" compiled on ");
msg.append(props.getProperty("DATE")); msg.append(props.getProperty("DATE"));
antVersion = msg.toString(); antVersion = msg.toString();
@@ -1094,6 +1100,24 @@ public class Main implements AntMain {
} }
return antVersion; return antVersion;
} }
/**
* Returns the short Ant version information, if available. Once the information
* has been loaded once, it's cached and returned from the cache on future
* calls.
*
* @return the short Ant version information as a String
* (always non-<code>null</code>)
*
* @throws BuildException BuildException if the version information is unavailable
* @since Ant 1.9.3
*/
public static String getShortAntVersion() throws BuildException {
if (shortAntVersion == null) {
getAntVersion();
}
return shortAntVersion;
}


/** /**
* Prints the description of a project (if there is one) to * Prints the description of a project (if there is one) to


+ 20
- 11
src/main/org/apache/tools/ant/taskdefs/Get.java View File

@@ -31,6 +31,7 @@ import java.net.URLConnection;
import java.util.Date; import java.util.Date;


import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.MagicNames;
import org.apache.tools.ant.Main; import org.apache.tools.ant.Main;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task; import org.apache.tools.ant.Task;
@@ -80,7 +81,10 @@ public class Get extends Task {
private boolean skipExisting = false; private boolean skipExisting = false;
private boolean httpUseCaches = true; // on by default private boolean httpUseCaches = true; // on by default
private Mapper mapperElement = null; private Mapper mapperElement = null;
private String userAgent = System.getProperty("http.agent", DEFAULT_AGENT_PREFIX + "/" + Main.getAntVersion());
private String userAgent =
System.getProperty(MagicNames.HTTP_AGENT_PROPERTY,
DEFAULT_AGENT_PREFIX + "/"
+ Main.getShortAntVersion());


/** /**
* Does the work. * Does the work.
@@ -406,6 +410,18 @@ public class Get extends Task {
public void setSkipExisting(boolean s) { public void setSkipExisting(boolean s) {
this.skipExisting = s; this.skipExisting = s;
} }
/**
* HTTP connections only - set the user-agent to be used
* when communicating with remote server. if null, then
* the value is considered unset and the behaviour falls
* back to the default of the http API.
*
* @since Ant 1.9.3
*/
public void setUserAgent(String userAgent) {
this.userAgent = userAgent;
}


/** /**
* HTTP connections only - control caching on the * HTTP connections only - control caching on the
@@ -421,16 +437,6 @@ public class Get extends Task {
this.httpUseCaches = httpUseCache; this.httpUseCaches = httpUseCache;
} }
/**
* HTTP connections only - set the user-agent to be used
* when communicating with remote server. if null, then
* the value is considered unset and the behaviour falls
* back to the default of the http API.
*/
public void setUserAgent(String userAgent) {
this.userAgent = userAgent;
}

/** /**
* Define the mapper to map source to destination files. * Define the mapper to map source to destination files.
* @return a mapper to be configured. * @return a mapper to be configured.
@@ -657,6 +663,9 @@ public class Get extends Task {
if (hasTimestamp) { if (hasTimestamp) {
connection.setIfModifiedSince(timestamp); connection.setIfModifiedSince(timestamp);
} }
// Set the user agent
connection.addRequestProperty("User-Agent", this.userAgent);
// prepare Java 1.1 style credentials // prepare Java 1.1 style credentials
if (uname != null || pword != null) { if (uname != null || pword != null) {
String up = uname + ":" + pword; String up = uname + ":" + pword;


Loading…
Cancel
Save