1 21 package proguard.ant; 22 23 import org.apache.tools.ant.*; 24 import org.apache.tools.ant.types.*; 25 26 import proguard.*; 27 28 import java.io.*; 29 import java.lang.ref.Reference ; 30 import java.util.Stack ; 31 32 38 public class ClassPathElement extends Path 39 { 40 private String filter; 41 private String jarFilter; 42 private String warFilter; 43 private String earFilter; 44 private String zipFilter; 45 46 47 50 public ClassPathElement(Project project) 51 { 52 super(project); 53 } 54 55 56 61 public void appendClassPathEntriesTo(ClassPath classPath, boolean output) 62 { 63 File baseDir = getProject().getBaseDir(); 64 String [] fileNames; 65 66 if (isReference()) 67 { 68 Object referencedObject = getCheckedRef(DataType.class, 70 DataType.class.getName()); 71 72 if (referencedObject instanceof Path) 73 { 74 Path path = (Path)referencedObject; 75 76 fileNames = path.list(); 78 } 79 else if (referencedObject instanceof AbstractFileSet) 80 { 81 AbstractFileSet fileSet = (AbstractFileSet)referencedObject; 82 83 DirectoryScanner scanner = fileSet.getDirectoryScanner(getProject()); 85 baseDir = scanner.getBasedir(); 86 fileNames = scanner.getIncludedFiles(); 87 } 88 else 89 { 90 throw new BuildException("The refid attribute doesn't point to a <path> element or a <fileset> element"); 91 } 92 } 93 else 94 { 95 fileNames = list(); 97 } 98 99 if (output) 100 { 101 if (fileNames.length != 1) 102 { 103 throw new BuildException("The <outjar> element must specify exactly one file or directory ["+fileNames.length+"]"); 104 } 105 } 106 else 107 { 108 if (fileNames.length < 1) 109 { 110 throw new BuildException("The <injar> element must specify at least one file or directory"); 111 } 112 } 113 114 for (int index = 0; index < fileNames.length; index++) 115 { 116 String fileName = fileNames[index]; 119 File file = new File(fileName); 120 121 ClassPathEntry entry = 122 new ClassPathEntry(file.isAbsolute() ? file : new File(baseDir, fileName), 123 output); 124 entry.setFilter(filter); 125 entry.setJarFilter(jarFilter); 126 entry.setWarFilter(warFilter); 127 entry.setEarFilter(earFilter); 128 entry.setZipFilter(zipFilter); 129 130 classPath.add(entry); 132 } 133 } 134 135 136 138 141 public void setFile(File file) 142 { 143 setLocation(file); 144 } 145 146 147 150 public void setDir(File file) 151 { 152 setLocation(file); 153 } 154 155 156 159 public void setName(File file) 160 { 161 setLocation(file); 162 } 163 164 165 public void setFilter(String filter) 166 { 167 this.filter = filter; 168 } 169 170 171 public void setJarFilter(String jarFilter) 172 { 173 this.jarFilter = jarFilter; 174 } 175 176 177 public void setWarFilter(String warFilter) 178 { 179 this.warFilter = warFilter; 180 } 181 182 183 public void setEarFilter(String earFilter) 184 { 185 this.earFilter = earFilter; 186 } 187 188 189 public void setZipFilter(String zipFilter) 190 { 191 this.zipFilter = zipFilter; 192 } 193 } 194 | Popular Tags |