Obtained from: Kevin Jackson git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277156 13f79535-47bb-0310-9956-ffa450edef68master
@@ -29,63 +29,87 @@ import org.apache.tools.ant.taskdefs.optional.extension.ExtensionResolver; | |||
* | |||
* @version $Revision$ $Date$ | |||
*/ | |||
public class AntResolver | |||
implements ExtensionResolver { | |||
private File m_antfile; | |||
private File m_destfile; | |||
private String m_target; | |||
public class AntResolver implements ExtensionResolver { | |||
private File antfile; | |||
private File destfile; | |||
private String target; | |||
public void setAntfile(File antfile) { | |||
m_antfile = antfile; | |||
/** | |||
* Sets the ant file | |||
* @param antfile the ant file to set | |||
*/ | |||
public void setAntfile(final File antfile) { | |||
this.antfile = antfile; | |||
} | |||
public void setDestfile(File destfile) { | |||
m_destfile = destfile; | |||
/** | |||
* Sets the destination file | |||
* @param destfile the destination file | |||
*/ | |||
public void setDestfile(final File destfile) { | |||
this.destfile = destfile; | |||
} | |||
/** | |||
* Sets the target | |||
* @param target the target | |||
*/ | |||
public void setTarget(final String target) { | |||
m_target = target; | |||
this.target = target; | |||
} | |||
/** | |||
* Returns the resolved file | |||
* @param extension the extension | |||
* @param project the project | |||
* @return the file resolved | |||
* @throws BuildException if the file cannot be resolved | |||
*/ | |||
public File resolve(final Extension extension, | |||
final Project project) | |||
throws BuildException { | |||
final Project project) throws BuildException { | |||
validate(); | |||
final Ant ant = (Ant) project.createTask("ant"); | |||
ant.setInheritAll(false); | |||
ant.setAntfile(m_antfile.getName()); | |||
ant.setAntfile(antfile.getName()); | |||
try { | |||
final File dir = | |||
m_antfile.getParentFile().getCanonicalFile(); | |||
antfile.getParentFile().getCanonicalFile(); | |||
ant.setDir(dir); | |||
} catch (final IOException ioe) { | |||
throw new BuildException(ioe.getMessage(), ioe); | |||
} | |||
if (null != m_target) { | |||
ant.setTarget(m_target); | |||
if (null != target) { | |||
ant.setTarget(target); | |||
} | |||
ant.execute(); | |||
return m_destfile; | |||
return destfile; | |||
} | |||
/* | |||
* Validates URL | |||
*/ | |||
private void validate() { | |||
if (null == m_antfile) { | |||
if (null == antfile) { | |||
final String message = "Must specify Buildfile"; | |||
throw new BuildException(message); | |||
} | |||
if (null == m_destfile) { | |||
if (null == destfile) { | |||
final String message = "Must specify destination file"; | |||
throw new BuildException(message); | |||
} | |||
} | |||
/** | |||
* Returns a string representation | |||
* @return the string representation | |||
*/ | |||
public String toString() { | |||
return "Ant[" + m_antfile + "==>" + m_destfile + "]"; | |||
return "Ant[" + antfile + "==>" + destfile + "]"; | |||
} | |||
} |
@@ -27,26 +27,38 @@ import org.apache.tools.ant.taskdefs.optional.extension.ExtensionResolver; | |||
* | |||
* @version $Revision$ $Date$ | |||
*/ | |||
public class LocationResolver | |||
implements ExtensionResolver { | |||
private String m_location; | |||
public class LocationResolver implements ExtensionResolver { | |||
private String location; | |||
/** | |||
* Sets the location for this resolver | |||
* @param location the location | |||
*/ | |||
public void setLocation(final String location) { | |||
m_location = location; | |||
this.location = location; | |||
} | |||
/** | |||
* Returns the resolved file | |||
* @param extension the extension | |||
* @param project the project | |||
* @return the file resolved | |||
* @throws BuildException if no location is set | |||
*/ | |||
public File resolve(final Extension extension, | |||
final Project project) | |||
throws BuildException { | |||
if (null == m_location) { | |||
final Project project) throws BuildException { | |||
if (null == location) { | |||
final String message = "No location specified for resolver"; | |||
throw new BuildException(message); | |||
} | |||
return project.resolveFile(m_location); | |||
return project.resolveFile(location); | |||
} | |||
/** | |||
* Returns a string representation of the Location | |||
* @return the string representation | |||
*/ | |||
public String toString() { | |||
return "Location[" + m_location + "]"; | |||
return "Location[" + location + "]"; | |||
} | |||
} |
@@ -29,45 +29,66 @@ import org.apache.tools.ant.taskdefs.optional.extension.ExtensionResolver; | |||
* | |||
* @version $Revision$ $Date$ | |||
*/ | |||
public class URLResolver | |||
implements ExtensionResolver { | |||
private File m_destfile; | |||
private File m_destdir; | |||
private URL m_url; | |||
public class URLResolver implements ExtensionResolver { | |||
private File destfile; | |||
private File destdir; | |||
private URL url; | |||
/** | |||
* Sets the URL | |||
* @param url the url | |||
*/ | |||
public void setUrl(final URL url) { | |||
m_url = url; | |||
this.url = url; | |||
} | |||
/** | |||
* Sets the destination file | |||
* @param destfile the destination file | |||
*/ | |||
public void setDestfile(final File destfile) { | |||
m_destfile = destfile; | |||
this.destfile = destfile; | |||
} | |||
/** | |||
* Sets the destination directory | |||
* @param destdir the destination directory | |||
*/ | |||
public void setDestdir(final File destdir) { | |||
m_destdir = destdir; | |||
this.destdir = destdir; | |||
} | |||
/** | |||
* Returns the file resolved from URL and directory | |||
* @param extension the extention | |||
* @param project the project | |||
* @return file the file resolved | |||
* @throws BuildException if the URL is invalid | |||
*/ | |||
public File resolve(final Extension extension, | |||
final Project project) | |||
throws BuildException { | |||
final Project project) throws BuildException { | |||
validate(); | |||
final File file = getDest(); | |||
final Get get = (Get) project.createTask("get"); | |||
get.setDest(file); | |||
get.setSrc(m_url); | |||
get.setSrc(url); | |||
get.execute(); | |||
return file; | |||
} | |||
/* | |||
* Gets the destination file | |||
*/ | |||
private File getDest() { | |||
if (null != m_destfile) { | |||
return m_destfile; | |||
File result; | |||
if (null != destfile) { | |||
result = destfile; | |||
} else { | |||
final String file = m_url.getFile(); | |||
String filename = null; | |||
final String file = url.getFile(); | |||
String filename; | |||
if (null == file || file.length() <= 1) { | |||
filename = "default.file"; | |||
} else { | |||
@@ -77,27 +98,34 @@ public class URLResolver | |||
} | |||
filename = file.substring(index); | |||
} | |||
return new File(m_destdir, filename); | |||
result = new File(destdir, filename); | |||
} | |||
return result; | |||
} | |||
/* | |||
* Validates URL | |||
*/ | |||
private void validate() { | |||
if (null == m_url) { | |||
if (null == url) { | |||
final String message = "Must specify URL"; | |||
throw new BuildException(message); | |||
} | |||
if (null == m_destdir && null == m_destfile) { | |||
if (null == destdir && null == destfile) { | |||
final String message = "Must specify destination file or directory"; | |||
throw new BuildException(message); | |||
} else if (null != m_destdir && null != m_destfile) { | |||
} else if (null != destdir && null != destfile) { | |||
final String message = "Must not specify both destination file or directory"; | |||
throw new BuildException(message); | |||
} | |||
} | |||
/** | |||
* Returns a string representation of the URL | |||
* @return the string representation | |||
*/ | |||
public String toString() { | |||
return "URL[" + m_url + "]"; | |||
return "URL[" + url + "]"; | |||
} | |||
} |