1 18 package org.apache.tools.ant.taskdefs.optional.extension.resolvers; 19 20 import java.io.File ; 21 import java.net.URL ; 22 import org.apache.tools.ant.BuildException; 23 import org.apache.tools.ant.Project; 24 import org.apache.tools.ant.taskdefs.Get; 25 import org.apache.tools.ant.taskdefs.optional.extension.Extension; 26 import org.apache.tools.ant.taskdefs.optional.extension.ExtensionResolver; 27 28 32 public class URLResolver implements ExtensionResolver { 33 private File destfile; 34 private File destdir; 35 private URL url; 36 37 41 public void setUrl(final URL url) { 42 this.url = url; 43 } 44 45 49 public void setDestfile(final File destfile) { 50 this.destfile = destfile; 51 } 52 53 57 public void setDestdir(final File destdir) { 58 this.destdir = destdir; 59 } 60 61 68 public File resolve(final Extension extension, 69 final Project project) throws BuildException { 70 validate(); 71 72 final File file = getDest(); 73 74 final Get get = new Get(); 75 get.setProject(project); 76 get.setDest(file); 77 get.setSrc(url); 78 get.execute(); 79 80 return file; 81 } 82 83 86 private File getDest() { 87 File result; 88 if (null != destfile) { 89 result = destfile; 90 } else { 91 final String file = url.getFile(); 92 String filename; 93 if (null == file || file.length() <= 1) { 94 filename = "default.file"; 95 } else { 96 int index = file.lastIndexOf('/'); 97 if (-1 == index) { 98 index = 0; 99 } 100 filename = file.substring(index); 101 } 102 result = new File (destdir, filename); 103 } 104 return result; 105 } 106 107 110 private void validate() { 111 if (null == url) { 112 final String message = "Must specify URL"; 113 throw new BuildException(message); 114 } 115 116 if (null == destdir && null == destfile) { 117 final String message = "Must specify destination file or directory"; 118 throw new BuildException(message); 119 } else if (null != destdir && null != destfile) { 120 final String message = "Must not specify both destination file or directory"; 121 throw new BuildException(message); 122 } 123 } 124 125 129 public String toString() { 130 return "URL[" + url + "]"; 131 } 132 } 133 | Popular Tags |