diff --git a/ivy.xml b/ivy.xml index e8002861c..bcfa9d326 100644 --- a/ivy.xml +++ b/ivy.xml @@ -1,7 +1,6 @@ - diff --git a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java index 61063b641..3331dabe1 100755 --- a/java/src/org/broadinstitute/sting/gatk/WalkerManager.java +++ b/java/src/org/broadinstitute/sting/gatk/WalkerManager.java @@ -1,10 +1,5 @@ package org.broadinstitute.sting.gatk; -import net.sf.functionalj.reflect.StdReflect; -import net.sf.functionalj.reflect.JdkStdReflect; -import net.sf.functionalj.FunctionN; -import net.sf.functionalj.Functions; - import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -41,7 +36,7 @@ public class WalkerManager { */ private static Logger logger = Logger.getLogger(WalkerManager.class); - private Map walkers; + private Map> walkersByName; public WalkerManager(String pluginDirectory) { try { @@ -67,12 +62,12 @@ public class WalkerManager { } } - walkerCandidates = filterWalkers(walkerCandidates); + List> walkers = filterWalkers(walkerCandidates); if (walkerCandidates.isEmpty()) throw new RuntimeException("No walkers were found."); - walkers = createWalkerDatabase(walkerCandidates); + walkersByName = createWalkerDatabase(walkers); } // IOExceptions here are suspect; they indicate that the WalkerManager can't open its containing jar. // Wrap in a RuntimeException. @@ -88,7 +83,7 @@ public class WalkerManager { * @return True if the walker exists, false otherwise. */ public boolean doesWalkerExist(String walkerName) { - return walkers.containsKey(walkerName); + return walkersByName.containsKey(walkerName); } /** @@ -99,8 +94,8 @@ public class WalkerManager { */ public Walker createWalkerByName(String walkerName) throws InstantiationException, IllegalAccessException { - Class walker = walkers.get(walkerName); - return (Walker) walker.newInstance(); + Class walker = walkersByName.get(walkerName); + return walker.newInstance(); } /** @@ -109,7 +104,7 @@ public class WalkerManager { * @return Class representing the walker. */ public Class getWalkerClassByName(String walkerName) { - return walkers.get(walkerName); + return walkersByName.get(walkerName); } /** @@ -213,10 +208,13 @@ public class WalkerManager { * @param classes Arbitrary list of classes. * @return List of classes extending from Walker. */ - private List filterWalkers(List classes) { - StdReflect reflect = new JdkStdReflect(); - FunctionN filterFunc = reflect.instanceFunction(new JVMUtils.ClassFilter(Walker.class), "filter", Class.class); - return Functions.findAll(filterFunc.f1(), classes); + private List> filterWalkers(List classes) { + List> walkerClasses = new ArrayList>(); + for( Class clazz: classes ) { + if( JVMUtils.isConcreteImplementationOf(clazz,Walker.class) ) + walkerClasses.add( (Class)clazz ); + } + return walkerClasses; } /** @@ -225,10 +223,10 @@ public class WalkerManager { * @param walkerClasses Classes to instantiate. * @return map of walker name to walker. */ - private Map createWalkerDatabase(List walkerClasses) { - Map walkers = new HashMap(); + private Map> createWalkerDatabase(List> walkerClasses) { + Map> walkers = new HashMap>(); - for (Class walkerClass : walkerClasses) { + for (Class walkerClass : walkerClasses) { String walkerName = getWalkerName(walkerClass); logger.info(String.format("* Adding module %s", walkerName)); walkers.put(walkerName, walkerClass); diff --git a/java/src/org/broadinstitute/sting/utils/GenomeLoc.java b/java/src/org/broadinstitute/sting/utils/GenomeLoc.java index 656c974a6..bcdc6f038 100644 --- a/java/src/org/broadinstitute/sting/utils/GenomeLoc.java +++ b/java/src/org/broadinstitute/sting/utils/GenomeLoc.java @@ -3,12 +3,6 @@ package org.broadinstitute.sting.utils; import edu.mit.broad.picard.directed.IntervalList; import edu.mit.broad.picard.reference.ReferenceSequenceFile; import edu.mit.broad.picard.util.Interval; -import net.sf.functionalj.Function1; -import net.sf.functionalj.FunctionN; -import net.sf.functionalj.Functions; -import net.sf.functionalj.reflect.JdkStdReflect; -import net.sf.functionalj.reflect.StdReflect; -import net.sf.functionalj.util.Operators; import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMSequenceDictionary; import net.sf.samtools.SAMSequenceRecord; @@ -203,23 +197,21 @@ public class GenomeLoc implements Comparable, Cloneable { * @param str String representation of genome locs. Null string corresponds to no filter. * @return Array of GenomeLoc objects corresponding to the locations in the string, sorted by coordinate order */ - public static ArrayList parseGenomeLocs(final String str) { + public static List parseGenomeLocs(final String str) { // Null string means no filter. if( str == null ) return null; // Of the form: loc1;loc2;... // Where each locN can be: // 'chr2', 'chr2:1000000' or 'chr2:1,000,000-2,000,000' - StdReflect reflect = new JdkStdReflect(); - FunctionN parseOne = reflect.staticFunction(GenomeLoc.class, "parseGenomeLoc", String.class); - Function1 f1 = parseOne.f1(); try { - Collection result = Functions.map(f1, Arrays.asList(str.split(";"))); - ArrayList locs = new ArrayList(result); + List locs = new ArrayList(); + for( String loc: str.split(";") ) + locs.add( parseGenomeLoc(loc.trim()) ); Collections.sort(locs); //logger.info(String.format("Going to process %d locations", locs.length)); locs = mergeOverlappingLocations(locs); - logger.info("Locations are:" + Utils.join(", ", Functions.map(Operators.toString, locs))); + logger.info("Locations are:" + Utils.join(", ", locs)); return locs; } catch (Exception e) { e.printStackTrace(); @@ -228,8 +220,8 @@ public class GenomeLoc implements Comparable, Cloneable { } } - public static ArrayList mergeOverlappingLocations(final ArrayList raw) { - logger.debug(" Raw locations are:\n" + Utils.join("\n", Functions.map(Operators.toString, raw))); + public static List mergeOverlappingLocations(final List raw) { + logger.debug(" Raw locations are:\n" + Utils.join("\n", raw)); if ( raw.size() <= 1 ) return raw; else { @@ -561,11 +553,11 @@ public class GenomeLoc implements Comparable, Cloneable { * * @param file_name */ - public static ArrayList IntervalFileToList(final String file_name) { + public static List IntervalFileToList(final String file_name) { // first try to read it as an interval file since that's well structured // we'll fail quickly if it's not a valid file. Then try to parse it as // a location string file - ArrayList ret = null; + List ret = null; try { IntervalList il = IntervalList.fromFile(new File(file_name)); diff --git a/java/src/org/broadinstitute/sting/utils/JVMUtils.java b/java/src/org/broadinstitute/sting/utils/JVMUtils.java index a9150b506..1033e1143 100755 --- a/java/src/org/broadinstitute/sting/utils/JVMUtils.java +++ b/java/src/org/broadinstitute/sting/utils/JVMUtils.java @@ -101,20 +101,15 @@ public class JVMUtils { } /** - * A functor returning true for classes which extend from baseClass. + * Is the specified class a concrete implementation of baseClass? + * @param clazz Class to check. + * @param baseClass Base class to check against. + * @return True if clazz implements baseClass and is not abstract / an interface. False otherwise. */ - public static class ClassFilter { - private Class baseClass; - - public ClassFilter(Class baseClass) { - this.baseClass = baseClass; - } - - public Boolean filter(Class clazz) { - return baseClass.isAssignableFrom(clazz) && - !Modifier.isAbstract(clazz.getModifiers()) && - !Modifier.isInterface(clazz.getModifiers()); - } + public static boolean isConcreteImplementationOf( Class clazz, Class baseClass ) { + return baseClass.isAssignableFrom(clazz) && + !Modifier.isAbstract(clazz.getModifiers()) && + !Modifier.isInterface(clazz.getModifiers()); } /** diff --git a/settings/repository/net.sf/functionalj-1.0.jar b/settings/repository/net.sf/functionalj-1.0.jar deleted file mode 100644 index 5d41cbdb7..000000000 Binary files a/settings/repository/net.sf/functionalj-1.0.jar and /dev/null differ diff --git a/settings/repository/net.sf/functionalj-1.0.xml b/settings/repository/net.sf/functionalj-1.0.xml deleted file mode 100644 index 2d57ef884..000000000 --- a/settings/repository/net.sf/functionalj-1.0.xml +++ /dev/null @@ -1,3 +0,0 @@ - - -