diff --git a/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java b/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java index 39a7e1bd6..d5efd6a72 100755 --- a/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java +++ b/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java @@ -133,9 +133,9 @@ public class CommandLineGATK extends CommandLineProgram { @Override protected ArgumentFactory getCustomArgumentFactory() { return new ArgumentFactory() { - public Object createArgument( Class type, String repr ) { - if (type == SAMFileReader.class) { - SAMFileReader samFileReader = new SAMFileReader(new File(repr),true); + public Object createArgument( Class type, List repr ) { + if (type == SAMFileReader.class && repr.size() == 1) { + SAMFileReader samFileReader = new SAMFileReader(new File(repr.get(0)),true); samFileReader.setValidationStringency(argCollection.strictnessLevel); return samFileReader; } diff --git a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java index 8422659d6..5648a21b4 100755 --- a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java @@ -136,7 +136,8 @@ public class GenomeAnalysisEngine { logger.info("Strictness is " + argCollection.strictnessLevel); // perform validation steps that are common to all the engines - genericEngineSetup(); + engine.setMaximumIterations(argCollection.maximumEngineIterations); + engine.initialize(); GenomeLocSortedSet locs = null; if (argCollection.intervals != null) { @@ -192,13 +193,6 @@ public class GenomeAnalysisEngine { return microScheduler; } - - /** commands that get executed for each engine, regardless of the type */ - private void genericEngineSetup() { - engine.setMaximumIterations(argCollection.maximumEngineIterations); - engine.initialize(); - } - /** * setup the interval regions, from either the interval file of the genome region string * diff --git a/java/src/org/broadinstitute/sting/utils/cmdLine/ArgumentFactory.java b/java/src/org/broadinstitute/sting/utils/cmdLine/ArgumentFactory.java index 44c9901b4..1b81eacc2 100755 --- a/java/src/org/broadinstitute/sting/utils/cmdLine/ArgumentFactory.java +++ b/java/src/org/broadinstitute/sting/utils/cmdLine/ArgumentFactory.java @@ -24,6 +24,8 @@ package org.broadinstitute.sting.utils.cmdLine; +import java.util.List; + /** * Provides a service whereby the application can provide a mechanism * for creating specialty arguments. @@ -36,5 +38,5 @@ public abstract class ArgumentFactory { * @param repr A String representation of the argument. * @return */ - public abstract Object createArgument(Class type, String repr); + public abstract Object createArgument(Class type, List repr); } diff --git a/java/src/org/broadinstitute/sting/utils/cmdLine/ParsingEngine.java b/java/src/org/broadinstitute/sting/utils/cmdLine/ParsingEngine.java index 90e2773ef..6b6cecd4e 100755 --- a/java/src/org/broadinstitute/sting/utils/cmdLine/ParsingEngine.java +++ b/java/src/org/broadinstitute/sting/utils/cmdLine/ParsingEngine.java @@ -270,6 +270,14 @@ public class ParsingEngine { return; if( definition.source.clazz.isAssignableFrom(object.getClass()) ) { + if( customArgumentFactory != null ) { + Object instance = customArgumentFactory.createArgument(definition.source.field.getType(), match.values()); + if( instance != null ) { + definition.source.setValue( object, instance ); + return; + } + } + if( !definition.source.isFlag() ) { String[] tokens = match.values().toArray(new String[0]); FieldParser fieldParser = FieldParser.create(definition.source.field);