From 38a526952120eff57f3a17271fa16f3cca3ac7f7 Mon Sep 17 00:00:00 2001 From: j2blake Date: Fri, 9 Sep 2011 22:11:39 +0000 Subject: [PATCH] NIHVIVO-2811 Changing the approach to FileSet-based ResourceCollection. Is it a problem that it won't copy empty directories? --- ...irResourceCollection$DirectoryFilter.class | Bin 954 -> 0 bytes ...esourceCollection$NonDirectoryFilter.class | Bin 998 -> 0 bytes .../AbstractDirResourceCollection.class | Bin 3838 -> 0 bytes .../anttasks/AbstractWrappedFileSet.class | Bin 0 -> 2130 bytes .../anttasks/DirDifferenceFileSet.class | Bin 0 -> 2617 bytes ...ceResourceCollection$DirectoryFilter.class | Bin 966 -> 0 bytes ...esourceCollection$NonDirectoryFilter.class | Bin 1010 -> 0 bytes .../DirDifferenceResourceCollection.class | Bin 3307 -> 0 bytes .../OptionalDirResourceCollection.class | Bin 964 -> 0 bytes .../AbstractDirResourceCollection.java | 125 ------------------ .../anttasks/AbstractWrappedFileSet.java | 72 ++++++++++ .../anttasks/DirDifferenceFileSet.java | 57 ++++++++ .../DirDifferenceResourceCollection.java | 92 ------------- .../OptionalDirResourceCollection.java | 35 ----- webapp/product-build.xml | 72 +++++----- 15 files changed, 164 insertions(+), 289 deletions(-) delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection$DirectoryFilter.class delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection$NonDirectoryFilter.class delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection.class create mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.class create mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceFileSet.class delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection$DirectoryFilter.class delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection$NonDirectoryFilter.class delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.class delete mode 100644 utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/OptionalDirResourceCollection.class delete mode 100644 utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection.java create mode 100644 utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.java create mode 100644 utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceFileSet.java delete mode 100644 utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.java delete mode 100644 utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/OptionalDirResourceCollection.java diff --git a/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection$DirectoryFilter.class b/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection$DirectoryFilter.class deleted file mode 100644 index 335fb77f1c68fd0efb3810b9911439d65d4399b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 954 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 F;(xAF#vcFx diff --git a/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.class b/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.class new file mode 100644 index 0000000000000000000000000000000000000000..4ea4b5a3c5f6a34046ad2adda621fd5cbbe7304e GIT binary patch literal 2130 zcmb_dTUQ%Z6#h;Un2-+PQVL2fCQva1%2>Qqg;GnPicO(5l}f#>Nix#Y4l`LZCtc!i z@}aI}!&27Lw?6box!n8AKmr~67{@9vHw=7c z;AReexXv$YIaILD*NrT0@&0)Z8GMl=-Ay+5@*HlX%F7+TZW-9lVU&$WahI2`4BRtN zGjLy^?81<>@{vpFYZMY2Ott1H zfy>DVk$3h@h=-S?%wOx-BI4nc<93F(q z+28iu1D%400$Hh?z*auNjvt%ql5fUx%Gzq;!^(UzFT{FsF+Cou6fb__f)@eOuOJjAyGlZB@5 zgayx6g|OXf`GG2Mk;rJ##CNPVgYQjTV;*l}(!dWU&HDQ$KEy{RikKFdP9$}zt4)+K zZ(;#g1S!OIls zTR8!NH|S%U;S$mLB7Klkc#D42I{HlAqjxG8?E|Dkoki7JEo>c!b+dT zDiYT8e_(NVjJ2qPVP3Z>85~sc2$|g@^z9xJ#SV-PvKynB0nKjsr-#>qWNxj^HQ8tDx2H)o<5K7eCOPAe|z-PLjVWx zZ3gWas>N0e*WxvtP%)B$f}t9ml;6<|UdJ05jA2|JC**P}gVUIlCTB8SrZPB-H&vX= zpbqglq%$R!My0)(yPM`<#Wz*NC%29!IzvWoLfIzaV`<#F>b zwX7wKoX4b%uA|>yE#fo44lqdlRA3Zl$BlC6TZO5jBv5Pl$7Lg!Y>7iv8GMH8?u!C~ zjv6AUmK)N>51U5ez{&>Z*i?Sv)Wp?*=%ipfyGGV8TT*PVvjs$h&pieiT|qPeSk-42bQ%BiJ?Rp&TJ8-6rbI=fbzoXTG|3&GJC zO=uz22x1NBwQ8&G$_nV3z>TgChe_Ad+0kRvi|mtCGzq9>Nt*4D$MtC9U`&;Gt(Zb% zMA>SP*=aKvbvUmaBOINaX#%?$z6yhJl?kXu&OSNmIOvujhu)WpP91f|@F&cxbj!De z6Gd^t!`c*MdN^xV8Yf~q$@k!i%$B&Mvs&LQ8!-ZvsZ1DioF8fPDofyF2Vcx~KFl05 za%6C)aL)jL=10^nAhUqF1!ybI8)yc!AjKEE16#r%Es>)*2wjF~Nfo-6 zvHn3jg_a|^A5i}*lsmZv4ra#LFrIsWMn>Lv5A{9wkrlX!UEFLE_!&(Tx!y%Ie}@KX z*Lxo=37o(6_;(3N3A5dcI_|eZB~>*fr=HR*A+$5&-OP6%Gd@fpL)e28=m`PmXuA)a zkfThdGZI6uM;|qM$xxOPZZ8Q=P%mOJlI*AC03{7jYW_x(ii0X%>`YL~i5N5cC%voG znIz-{i5%~FIFLM~G%M}jW1y#5InbASfXx?TzFSk|`!2Rbthe$*$`{ermu_Vxp1X;Z za{GoNZaw}bd7Dm?VbX0ZG8nRrL66~OCU69!JfA{;nBYkQIED=W9HwR)6FI`vQY2^u wN2!w_X~TF01N7H`LFx{K)tOwb;bcgTh?7k|LW7D|h3NZ>UO3JfJ%Qu@05wUSHUIzs literal 0 HcmV?d00001 diff --git a/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection$DirectoryFilter.class b/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection$DirectoryFilter.class deleted file mode 100644 index 610bbcfa7d0abc6777b11473f4844576993f2f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 zcmb_b%W70X5Ir@S@j5rxWD+&LjnN5A60k+wNW{$qK^P)F$U-F0b5o-oJKfT^C*VK1 zaiM`M`~W{ntiDbpX5nf!_2@ozy6P1D^VjhY01vU+MiWa?2-^eR8>`X>$JVL??VL43b!cMnY8;I<(Qu`-i&0k}E45|9mKlvWuq*i$SAHBy z?t5#wjK;f7VSZwqiBAbHd()*}+aWajevb+B1LJsmd@$tjMh~r=EDn6B?T!v6<&(o^ z8dA{Gw6y2L=V!)74us;la~%3sR}~9jcdCtc&pekj(Phb>B4MF7*w=?z8Ly-l-duYt zGmRu7%>8>q$Y0muCLAG={!jS(iMBw7^99w z!+jB2wsCsM6VYdSX@kY-E5fX){>nuVhzK&(ZD2+IKnt=1P^XgwlCRN_yp3G!tYnWQ zZ-~#=H@<<^kI?v9V+yfSCH4px#1?g&V-5?F$&|P_VR$S)F|;Yx15PjZkShCr)DIYE0PzWe(r5Yh_MF=Ss64DX`t$N^soUH?HUAyu+mHJos z16;UpXpuNn>a{^ zoh7D8_b zr$RhV#(^Z=^{t_~X+rDvUn=dTW5`|^BVA96vXoRKCOT{9?-#>nL{Z3H&oI-?x5S>{ z%5oY2#k^^+9md7nv9>jr7F^H&T_RsPnDfl6pc6V(Xw^f~Gv zS-{%uup|025ycIpWSbN{r8pv=E-oE_Eq+Jzt*Xh$QWx1Hw8&=FImHxaC?b})JVwaL z2ZYwrA!?tI#9t8CzEYw_O=lp-70B$b!Z8T7;0mr%`z+Pf5j9@~q&W&ATtl0Dm@>v~ HOoROdQfn4) diff --git a/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.class b/utilities/anttasks/classes/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.class deleted file mode 100644 index 5d648d452817eedbc490e3bebb4975233b655604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3307 zcmb_eS#uOs7(I8ko=iFrCM3w7NPuL>Fp7dgSPWqivJeOa1ETiKbdn~W?yXm~@z zMS zfmpX&GzFIST8`O2IgvNLlSba=NV?Z881|6iS+ZXqj0IzsFVNp>7AJEB*KqacwmbCp|%MaKe42;5fpHV8qZnT_&Jy|qQIZ6|= zsMZRsUvSXkV`KD8F=B@2wNjnpMyGJFfddtT9kQ|8dTwt z3JJ76By?M4&gsZvtB!VLbZkL~jwxKy@g_0?+Ca!&$6I)tlodbXWjs~3%4ErPd7d#P z1E*sbm<;D0DY?4xe&88}fJhgoR%^fOaDsW}dQ+qnm}Ho~*PwpHaZInjAyoe(@-p2ez@GZ(n7t!`m%|DyWF8O;p_9^;`FNNsB8j&I(q z;|qK#%~t{~o0~1aS!JwQY|c+L8_kaEWQ!GToLWDw|{zpt~s_W|m8NqDIxV?->BB-DHHs{Djb-Obi(~ooysn+?vc#3kc2~K$v!0BaLBBD<%Cx+#J&Z%O zfXx2|I2W&xiX_a7l!S8d4dgksmR}X8gi$J)4q;`hVTJdEyzg^$$Zp>H3XKP>mt+Qv zV2pJ!a6|tKw5S|9gckmO*bIR-MEJ*2%O5NeS#9~%IL-=8n`1A>ui!VHnSr>emOVwA zP=ob&nr%H?z+XJiuqW^=w$sYZdzE{x&TP4b$lcv3j)T8N;#i?PG^u`~>_K{$kmSKT z@Z2I_t8XE?(AO&ZT74g1k`|vV3GJBHL&diU9{fgMl3>)!uB03FCHY4dIt?JF9 zW_SjvTZpMOa&iW>^7tsE5bLNH&`P@zN$S}^=q*ag4j!1T5@=_c-cGewB*~fYQ^-#E zM3m&jl`XT-hpBblG?w&dZ|{gjcf=dxjj`|1o^6b8+m*kTdN%`-=(e8euJ(YG+sw78!I(ZQ(peKOK>Y{iE9r@?Io>! zM7#%G*pEEAF^&T$;UHh=!+g{B^9ebs2w!4Ov|tr>Gl~h+F(dYHcNEJg**?5LuFEM+ z7h7@qXyVQc1KGAKJ3-Y5I! zg+vn{eeg#a?`#{tV`AdVoqNyRx##Y=cRzo5{}I4F@Caj=A4P)J-CEQ&{EW zAsD!0l`+)ovfbl}v8mLWcSM?M)#9hhS;KoyY2}p6xJaE7*-6Hqb)7P)&<~Y;E;G}! ziQF?<%f!RG4C9AN>qknm*J8C+=B!BEAC+R*GWLjz zu1Jn0cgE;kWA6H0Qu}vh8A>FqqN4p1psp6b&SdLasz9LfUgI4Z737EkwMFB2- zd;FRr|9GeR7KKj;&Z-|!d~t!`9ST*#N;4zDIYRH9qx=SAIe3myPgH~_T1H5Ap6mk3 jSR{%i|DVw!t>7*yKQyp2Y+#P^0~E^ZM17h30 diff --git a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection.java b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection.java deleted file mode 100644 index 058912f46..000000000 --- a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractDirResourceCollection.java +++ /dev/null @@ -1,125 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.utilities.anttasks; - -import java.io.File; -import java.io.FileFilter; -import java.util.Iterator; -import java.util.List; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.types.DataType; -import org.apache.tools.ant.types.Resource; -import org.apache.tools.ant.types.ResourceCollection; -import org.apache.tools.ant.types.resources.FileResource; - -/** - * Include all files that are in the primary directory, but do not have matching - * files in the blocking directory. - */ -public abstract class AbstractDirResourceCollection extends DataType implements - ResourceCollection { - protected List files = null; - protected File primaryDir; - - @Override - public boolean isFilesystemOnly() { - return true; - } - - /** - * Insure that the list has been filled and return an iterator to the list. - */ - @Override - public Iterator iterator() { - fillFilesList(); - return files.iterator(); - } - - /** - * Insure that the list has been filled and return the size of the list. - */ - @Override - public int size() { - fillFilesList(); - return files.size(); - } - - public void setPrimary(File primaryDir) { - this.primaryDir = primaryDir; - } - - protected abstract void fillFilesList(); - - /** - * The directory path must be provided, and unless the optional flag is set, - * must point to an existing, readable directory. - */ - protected void confirmValidDirectory(File dir, String label, - boolean optional) { - if (dir == null) { - throw new BuildException(label + " directory not specified."); - } - if (!dir.exists()) { - if (optional) { - return; - } else { - throw new BuildException(label + " directory '" + dir.getPath() - + "' does not exist."); - } - } - if (!dir.isDirectory()) { - throw new BuildException(label + " directory '" + dir.getPath() - + "' is not a directory."); - } - if (!dir.canRead()) { - throw new BuildException(label + " directory '" + dir.getPath() - + "' is not readable."); - } - } - - protected void includeAllFiles(File primary) { - for (File file : primary.listFiles(new NonDirectoryFilter())) { - files.add(buildResource(file)); - } - for (File primarySubDir : primary.listFiles(new DirectoryFilter())) { - includeAllFiles(primarySubDir); - } - } - - /** - * All file resources are based on the original primary directory. - */ - protected FileResource buildResource(File file) { - String primaryBasePath = primaryDir.getAbsolutePath(); - String filePath = file.getAbsolutePath(); - if (!filePath.startsWith(primaryBasePath)) { - throw new IllegalStateException("File is not a descendant " - + "of the primary directory: file='" + file - + "', primary='" + primaryDir + "'"); - } - - String pathPart = filePath.substring(primaryBasePath.length()); - if (pathPart.startsWith(File.separator)) { - pathPart = pathPart.substring(1); - } - - // System.out.println("Resource: b='" + primaryDir + "', name='" + - // pathPart + "'"); - return new FileResource(primaryDir, pathPart); - } - - public class DirectoryFilter implements FileFilter { - @Override - public boolean accept(File file) { - return file.isDirectory(); - } - } - - public class NonDirectoryFilter implements FileFilter { - @Override - public boolean accept(File file) { - return !file.isDirectory(); - } - } -} diff --git a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.java b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.java new file mode 100644 index 000000000..9b9e80b18 --- /dev/null +++ b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/AbstractWrappedFileSet.java @@ -0,0 +1,72 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.utilities.anttasks; + +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.types.Resource; +import org.apache.tools.ant.types.ResourceCollection; +import org.apache.tools.ant.types.resources.FileResource; + +/** + * A base class for our custom-made FileSet extensions. + */ +public abstract class AbstractWrappedFileSet implements ResourceCollection { + protected List files; + + private Project p; + private File dir; + + private FileSet fileSet; + + public void setProject(Project p) { + this.p = p; + } + + public void setDir(File dir) { + this.dir = dir; + } + + @Override + public Object clone() { + throw new BuildException(this.getClass().getSimpleName() + + " does not support cloning."); + } + + @Override + public boolean isFilesystemOnly() { + return true; + } + + @Override + public Iterator iterator() { + fillFileList(); + return files.iterator(); + } + + @Override + public int size() { + fillFileList(); + return files.size(); + } + + protected abstract void fillFileList(); + + protected FileSet getInternalFileSet() { + if (fileSet != null) { + return fileSet; + } + + fileSet = new FileSet(); + fileSet.setProject(p); + fileSet.setDir(dir); + return fileSet; + } + +} diff --git a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceFileSet.java b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceFileSet.java new file mode 100644 index 000000000..2ebd9bb19 --- /dev/null +++ b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceFileSet.java @@ -0,0 +1,57 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.utilities.anttasks; + +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; + +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.types.Path; +import org.apache.tools.ant.types.resources.FileResource; + +/** + * TODO + */ +public class DirDifferenceFileSet extends AbstractWrappedFileSet { + private Path blockingPath; + + @SuppressWarnings("hiding") + public void addConfiguredPath(Path blockingPath) { + this.blockingPath = blockingPath; + } + + @Override + protected void fillFileList() { + if (files != null) { + return; + } + + FileSet fs = getInternalFileSet(); + + @SuppressWarnings("unchecked") + Iterator iter = fs.iterator(); + + files = new ArrayList(); + while (iter.hasNext()) { + FileResource fr = iter.next(); + if (!isBlocked(fr)) { + files.add(fr); + } + } + } + + /** + * Check to see whether this same file exists in any of the blocking + * directories. + */ + private boolean isBlocked(FileResource fr) { + for (String blockingDir : blockingPath.list()) { + File f = new File(blockingDir + File.separator + fr.getName()); + if (f.exists()) { + return true; + } + } + return false; + } +} diff --git a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.java b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.java deleted file mode 100644 index bd2da2425..000000000 --- a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/DirDifferenceResourceCollection.java +++ /dev/null @@ -1,92 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.utilities.anttasks; - -import java.io.File; -import java.util.ArrayList; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.types.ResourceCollection; -import org.apache.tools.ant.types.resources.FileResource; - -/** - * Include all files that are in the primary directory, but do not have matching - * files in the blocking directory. - */ -public class DirDifferenceResourceCollection extends - AbstractDirResourceCollection implements ResourceCollection { - private File blockingDir; - private boolean blockingOptional; - - public void setBlocking(File blockingDir) { - this.blockingDir = blockingDir; - } - - public void setBlockingOptional(boolean blockingOptional) { - this.blockingOptional = blockingOptional; - } - - /** - * If the list hasn't already been filled, fill it with all files in the - * primary directory that are not blocked by files with the same path under - * the blocking directory. - */ - @Override - protected void fillFilesList() { - if (files != null) { - return; - } - - confirmValidDirectory(primaryDir, "Primary", false); - confirmValidDirectory(blockingDir, "Blocking", blockingOptional); - - files = new ArrayList(); - includeUnblockedFiles(primaryDir, blockingDir); - } - - /** - * Include any file from the primary directory that does not match a file in - * the blocking directory. - * - * Include all files from any subdirectory that has no matching subdirectory - * in the blocking directory. - * - * Include all unblocked files from any subdirectory that has a matching - * subdirectory in the blocking directory. - * - * NOTE: if a file is matched by a subdirectory, the file is blocked. If a - * subdirectory is matched by a file, an exception is thrown. - */ - private void includeUnblockedFiles(File primary, File blocking) { - for (File file : primary.listFiles(new NonDirectoryFilter())) { - if (!isBlocked(file, blocking)) { - files.add(buildResource(file)); - } - } - for (File primarySubDir : primary.listFiles(new DirectoryFilter())) { - File blockingSubDir = findMatchingDir(primarySubDir, blocking); - if (blockingSubDir == null) { - includeAllFiles(primarySubDir); - } else { - includeUnblockedFiles(primarySubDir, blockingSubDir); - } - } - } - - private boolean isBlocked(File file, File blocking) { - return new File(blocking, file.getName()).exists(); - } - - private File findMatchingDir(File primary, File blockingParent) { - File dir = new File(blockingParent, primary.getName()); - if (!dir.exists()) { - return null; - } - if (!dir.isDirectory()) { - throw new BuildException("Directory '" + primary - + "' is blocked by a non-directory '" + dir.getPath() + "'"); - } - return dir; - } - -} diff --git a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/OptionalDirResourceCollection.java b/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/OptionalDirResourceCollection.java deleted file mode 100644 index 65daae2b3..000000000 --- a/utilities/anttasks/src/edu/cornell/mannlib/vitro/utilities/anttasks/OptionalDirResourceCollection.java +++ /dev/null @@ -1,35 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.utilities.anttasks; - -import java.util.ArrayList; - -import org.apache.tools.ant.types.ResourceCollection; -import org.apache.tools.ant.types.resources.FileResource; - -/** - * If the primary directory exists, include all files that are descendent from - * it. Otherwise, don't complain but act as a collection of zero files. - */ -public class OptionalDirResourceCollection extends - AbstractDirResourceCollection implements ResourceCollection { - - /** - * If the list hasn't already been filled, fill it with all files in the - * primary directory that are not blocked by files with the same path under - * the blocking directory. - */ - @Override - protected void fillFilesList() { - if (files != null) { - return; - } - files = new ArrayList(); - - confirmValidDirectory(primaryDir, "The", true); - - if (primaryDir.exists()) { - includeAllFiles(primaryDir); - } - } -} diff --git a/webapp/product-build.xml b/webapp/product-build.xml index 15ad66502..89ec1acb5 100644 --- a/webapp/product-build.xml +++ b/webapp/product-build.xml @@ -40,10 +40,7 @@ custom Ant types - - - - - - - - - - - - - - - - - --> -