Author: billie
Date: Thu Jan 17 16:05:12 2013
New Revision: 1434751

URL: http://svn.apache.org/viewvc?rev=1434751&view=rev
Log:
ACCUMULO-846 cleaned up options validation

Modified:
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/AggregatingIterator.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/LongCombiner.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/OptionDescriber.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/SortedKeyIterator.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/TypedValueCombiner.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/AgeOffFilter.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/ColumnAgeOffFilter.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/LargeRowFilter.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/RegExFilter.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/SummingArrayCombiner.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/TimestampFilter.java
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
    
accumulo/trunk/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
    
accumulo/trunk/examples/simple/src/main/java/org/apache/accumulo/examples/simple/combiner/StatsCombiner.java

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/AggregatingIterator.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/AggregatingIterator.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/AggregatingIterator.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/AggregatingIterator.java
 Thu Jan 17 16:05:12 2013
@@ -190,7 +190,7 @@ public class AggregatingIterator impleme
     for (Entry<String,String> entry : options.entrySet()) {
       String classname = entry.getValue();
       if (classname == null)
-        return false;
+        throw new IllegalArgumentException("classname null");
       Class<? extends Aggregator> clazz;
       try {
         clazz = AccumuloVFSClassLoader.loadClass(classname, Aggregator.class);

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
 Thu Jan 17 16:05:12 2013
@@ -35,13 +35,13 @@ import org.apache.accumulo.core.iterator
 import org.apache.log4j.Logger;
 
 /**
- * A SortedKeyValueIterator that combines the Values for different versions 
(timestamps) of a Key into a single Value. Combiner will replace one or more 
versions of a Key
- * and their Values with the most recent Key and a Value which is the result 
of the reduce method.
+ * A SortedKeyValueIterator that combines the Values for different versions 
(timestamps) of a Key into a single Value. Combiner will replace one or more
+ * versions of a Key and their Values with the most recent Key and a Value 
which is the result of the reduce method.
  * 
  * Subclasses must implement a reduce method: {@code public Value reduce(Key 
key, Iterator<Value> iter)}.
  * 
- * This reduce method will be passed the most recent Key and an iterator over 
the Values for all non-deleted versions of that Key.
- * A combiner will not combine keys that differ by more than the timestamp.
+ * This reduce method will be passed the most recent Key and an iterator over 
the Values for all non-deleted versions of that Key. A combiner will not combine
+ * keys that differ by more than the timestamp.
  */
 public abstract class Combiner extends WrappingIterator implements 
OptionDescriber {
   static final Logger log = Logger.getLogger(Combiner.class);
@@ -254,20 +254,24 @@ public abstract class Combiner extends W
   @Override
   public boolean validateOptions(Map<String,String> options) {
     if (options.containsKey(ALL_OPTION)) {
-      combineAllColumns = Boolean.parseBoolean(options.get(ALL_OPTION));
+      try {
+        combineAllColumns = Boolean.parseBoolean(options.get(ALL_OPTION));
+      } catch (Exception e) {
+        throw new IllegalArgumentException("bad boolean " + ALL_OPTION + ":" + 
options.get(ALL_OPTION));
+      }
       if (combineAllColumns)
         return true;
     }
     if (!options.containsKey(COLUMNS_OPTION))
-      return false;
+      throw new IllegalArgumentException("options must include " + ALL_OPTION 
+ " or " + COLUMNS_OPTION);
     
     String encodedColumns = options.get(COLUMNS_OPTION);
     if (encodedColumns.length() == 0)
-      return false;
+      throw new IllegalArgumentException("empty columns specified in option " 
+ COLUMNS_OPTION);
     
     for (String columns : encodedColumns.split(",")) {
       if (!ColumnSet.isValidEncoding(columns))
-        return false;
+        throw new IllegalArgumentException("invalid column encoding " + 
encodedColumns);
     }
     
     return true;

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/Filter.java
 Thu Jan 17 16:05:12 2013
@@ -101,7 +101,11 @@ public abstract class Filter extends Wra
   @Override
   public boolean validateOptions(Map<String,String> options) {
     if (options.get(NEGATE) != null) {
-      Boolean.parseBoolean(options.get(NEGATE));
+      try {
+        Boolean.parseBoolean(options.get(NEGATE));
+      } catch (Exception e) {
+        throw new IllegalArgumentException("bad boolean " + NEGATE + ":" + 
options.get(NEGATE));
+      }
     }
     return true;
   }

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/FirstEntryInRowIterator.java
 Thu Jan 17 16:05:12 2013
@@ -92,8 +92,7 @@ public class FirstEntryInRowIterator ext
         Key nextKey = getSource().getTopKey().followingKey(PartialKey.ROW);
         if (!latestRange.afterEndKey(nextKey))
           getSource().seek(new Range(nextKey, true, latestRange.getEndKey(), 
latestRange.isEndKeyInclusive()), latestColumnFamilies, latestInclusive);
-        else
-        {
+        else {
           finished = true;
           break;
         }
@@ -103,13 +102,12 @@ public class FirstEntryInRowIterator ext
   }
   
   private boolean finished = true;
-
+  
   @Override
-  public boolean hasTop()
-  {
+  public boolean hasTop() {
     return !finished && getSource().hasTop();
   }
-
+  
   @Override
   public void seek(Range range, Collection<ByteSequence> columnFamilies, 
boolean inclusive) throws IOException {
     // save parameters for future internal seeks
@@ -122,7 +120,7 @@ public class FirstEntryInRowIterator ext
     Range seekRange = new Range(startKey == null ? null : new 
Key(startKey.getRow()), true, range.getEndKey(), range.isEndKeyInclusive());
     super.seek(seekRange, columnFamilies, inclusive);
     finished = false;
-
+    
     if (getSource().hasTop()) {
       lastRowFound = getSource().getTopKey().getRow();
       if (range.beforeStartKey(getSource().getTopKey()))
@@ -143,11 +141,12 @@ public class FirstEntryInRowIterator ext
   public boolean validateOptions(Map<String,String> options) {
     try {
       String o = options.get(NUM_SCANS_STRING_NAME);
-      Integer i = o == null ? 10 : Integer.parseInt(o);
-      return i != null;
+      if (o != null)
+        Integer.parseInt(o);
     } catch (Exception e) {
-      return false;
+      throw new IllegalArgumentException("bad integer " + 
NUM_SCANS_STRING_NAME + ":" + options.get(NUM_SCANS_STRING_NAME), e);
     }
+    return true;
   }
   
 }

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/LongCombiner.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/LongCombiner.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/LongCombiner.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/LongCombiner.java
 Thu Jan 17 16:05:12 2013
@@ -102,8 +102,13 @@ public abstract class LongCombiner exten
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
-    setEncoder(options);
+    if (super.validateOptions(options) == false)
+      return false;
+    try {
+      setEncoder(options);
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad encoder option", e);
+    }
     return true;
   }
   

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/OptionDescriber.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/OptionDescriber.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/OptionDescriber.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/OptionDescriber.java
 Thu Jan 17 16:05:12 2013
@@ -122,7 +122,9 @@ public interface OptionDescriber {
    * 
    * @param options
    *          a map of option names to option values
-   * @return true if options are valid, false otherwise
+   * @return true if options are valid, false otherwise 
(IllegalArgumentException preferred)
+   * @exception IllegalArgumentException
+   *              if there are problems with the options
    */
   public boolean validateOptions(Map<String,String> options);
 }

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/SortedKeyIterator.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/SortedKeyIterator.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/SortedKeyIterator.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/SortedKeyIterator.java
 Thu Jan 17 16:05:12 2013
@@ -47,6 +47,6 @@ public class SortedKeyIterator extends W
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    return options == null || options.isEmpty();
+    return true;
   }
 }

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/TypedValueCombiner.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/TypedValueCombiner.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/TypedValueCombiner.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/TypedValueCombiner.java
 Thu Jan 17 16:05:12 2013
@@ -211,8 +211,13 @@ public abstract class TypedValueCombiner
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
-    setLossyness(options);
+    if (super.validateOptions(options) == false)
+      return false;
+    try {
+      setLossyness(options);
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad boolean " + LOSSY + ":" + 
options.get(LOSSY));
+    }
     return true;
   }
   

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/AgeOffFilter.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/AgeOffFilter.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/AgeOffFilter.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/AgeOffFilter.java
 Thu Jan 17 16:05:12 2013
@@ -91,11 +91,12 @@ public class AgeOffFilter extends Filter
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
+    if (super.validateOptions(options) == false)
+      return false;
     try {
       Long.parseLong(options.get(TTL));
-    } catch (NumberFormatException e) {
-      return false;
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad long " + TTL + ":" + 
options.get(TTL));
     }
     return true;
   }

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/ColumnAgeOffFilter.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/ColumnAgeOffFilter.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/ColumnAgeOffFilter.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/ColumnAgeOffFilter.java
 Thu Jan 17 16:05:12 2013
@@ -99,8 +99,13 @@ public class ColumnAgeOffFilter extends 
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
-    this.ttls = new TTLSet(options);
+    if (super.validateOptions(options) == false)
+      return false;
+    try {
+      this.ttls = new TTLSet(options);
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad TTL options", e);
+    }
     return true;
   }
   

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/LargeRowFilter.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/LargeRowFilter.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/LargeRowFilter.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/LargeRowFilter.java
 Thu Jan 17 16:05:12 2013
@@ -257,20 +257,15 @@ public class LargeRowFilter implements S
   @Override
   public boolean validateOptions(Map<String,String> options) {
     if (options == null || options.size() < 1) {
-      System.out.println("Bad # of options, must supply: " + MAX_COLUMNS + " 
as value");
-      return false;
+      throw new IllegalArgumentException("Bad # of options, must supply: " + 
MAX_COLUMNS + " as value");
     }
     
-    if (options.containsKey(MAX_COLUMNS)) {
-      try {
-        maxColumns = Integer.parseInt(options.get(MAX_COLUMNS));
-      } catch (NumberFormatException e) {
-        e.printStackTrace();
-        return false;
-      }
-    } else {
-      System.out.println("Need to have " + MAX_COLUMNS);
-      return false;
+    if (!options.containsKey(MAX_COLUMNS))
+      throw new IllegalArgumentException("Bad # of options, must supply: " + 
MAX_COLUMNS + " as value");
+    try {
+      maxColumns = Integer.parseInt(options.get(MAX_COLUMNS));
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad integer " + MAX_COLUMNS + ":" + 
options.get(MAX_COLUMNS));
     }
     
     return true;

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/RegExFilter.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/RegExFilter.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/RegExFilter.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/RegExFilter.java
 Thu Jan 17 16:05:12 2013
@@ -46,8 +46,6 @@ public class RegExFilter extends Filter 
     return result;
   }
   
-  
-  
   public static final String ROW_REGEX = "rowRegex";
   public static final String COLF_REGEX = "colfRegex";
   public static final String COLQ_REGEX = "colqRegex";
@@ -101,18 +99,12 @@ public class RegExFilter extends Filter 
   @Override
   public boolean accept(Key key, Value value) {
     if (orFields)
-      return ( 
-          (matches(rowMatcher, rowMatcher == null ? null : key.getRowData())) 
|| 
-          (matches(colfMatcher, colfMatcher == null ? null : 
key.getColumnFamilyData())) || 
-          (matches(colqMatcher, colqMatcher == null ? null : 
key.getColumnQualifierData())) || 
-          (matches(valueMatcher, value.get(), 0, value.get().length))
-          );
-    return (
-        (matches(rowMatcher, rowMatcher == null ? null : key.getRowData())) && 
-        (matches(colfMatcher, colfMatcher == null ? null : 
key.getColumnFamilyData())) && 
-        (matches(colqMatcher, colqMatcher == null ? null : 
key.getColumnQualifierData())) &&
-        (matches(valueMatcher, value.get(), 0, value.get().length))
-        );
+      return ((matches(rowMatcher, rowMatcher == null ? null : 
key.getRowData()))
+          || (matches(colfMatcher, colfMatcher == null ? null : 
key.getColumnFamilyData()))
+          || (matches(colqMatcher, colqMatcher == null ? null : 
key.getColumnQualifierData())) || (matches(valueMatcher, value.get(), 0, 
value.get().length)));
+    return ((matches(rowMatcher, rowMatcher == null ? null : key.getRowData()))
+        && (matches(colfMatcher, colfMatcher == null ? null : 
key.getColumnFamilyData()))
+        && (matches(colqMatcher, colqMatcher == null ? null : 
key.getColumnQualifierData())) && (matches(valueMatcher, value.get(), 0, 
value.get().length)));
   }
   
   @Override
@@ -149,9 +141,9 @@ public class RegExFilter extends Filter 
     }
     
     if (options.containsKey(MATCH_SUBSTRING)) {
-       matchSubstring = Boolean.parseBoolean(options.get(MATCH_SUBSTRING));
+      matchSubstring = Boolean.parseBoolean(options.get(MATCH_SUBSTRING));
     } else {
-       matchSubstring = false;
+      matchSubstring = false;
     }
     
     if (options.containsKey(ENCODING)) {
@@ -176,29 +168,33 @@ public class RegExFilter extends Filter 
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
-    if (options.containsKey(ROW_REGEX))
-      Pattern.compile(options.get(ROW_REGEX)).matcher("");
-    
-    if (options.containsKey(COLF_REGEX))
-      Pattern.compile(options.get(COLF_REGEX)).matcher("");
+    if (super.validateOptions(options) == false)
+      return false;
     
-    if (options.containsKey(COLQ_REGEX))
-      Pattern.compile(options.get(COLQ_REGEX)).matcher("");
-    
-    if (options.containsKey(VALUE_REGEX))
-      Pattern.compile(options.get(VALUE_REGEX)).matcher("");
+    try {
+      if (options.containsKey(ROW_REGEX))
+        Pattern.compile(options.get(ROW_REGEX)).matcher("");
+      
+      if (options.containsKey(COLF_REGEX))
+        Pattern.compile(options.get(COLF_REGEX)).matcher("");
+      
+      if (options.containsKey(COLQ_REGEX))
+        Pattern.compile(options.get(COLQ_REGEX)).matcher("");
+      
+      if (options.containsKey(VALUE_REGEX))
+        Pattern.compile(options.get(VALUE_REGEX)).matcher("");
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad regex", e);
+    }
     
     if (options.containsKey(ENCODING)) {
       try {
         this.encoding = options.get(ENCODING);
         if ("".equals(this.encoding))
           encoding = ENCODING_DEFAULT;
-        @SuppressWarnings("unused")
-        String test = new String("test".getBytes(), encoding);
+        new String("test".getBytes(), encoding);
       } catch (UnsupportedEncodingException e) {
-        e.printStackTrace();
-        return false;
+        throw new IllegalArgumentException("invalid encoding " + ENCODING + 
":" + this.encoding, e);
       }
     }
     
@@ -206,8 +202,7 @@ public class RegExFilter extends Filter 
   }
   
   /**
-   * Encode the terms to match against in the iterator
-   * Same as calling setRegexs(IteratorSetting si, String rowTerm, String 
cfTerm, String cqTerm, String valueTerm, boolean orFields, boolean 
matchSubstring)
+   * Encode the terms to match against in the iterator. Same as calling {@link 
#setRegexs(IteratorSetting, String, String, String, String, boolean, boolean)}
    * with matchSubstring set to false
    * 
    * @param si
@@ -223,7 +218,7 @@ public class RegExFilter extends Filter 
    * @param orFields
    *          if true, any of the non-null terms can match to return the entry
    */
-  public static void setRegexs(IteratorSetting si, String rowTerm, String 
cfTerm, String cqTerm, String valueTerm, boolean orFields) {  
+  public static void setRegexs(IteratorSetting si, String rowTerm, String 
cfTerm, String cqTerm, String valueTerm, boolean orFields) {
     setRegexs(si, rowTerm, cfTerm, cqTerm, valueTerm, orFields, false);
   }
   
@@ -244,7 +239,7 @@ public class RegExFilter extends Filter 
    *          if true then search expressions will match on partial strings
    */
   public static void setRegexs(IteratorSetting si, String rowTerm, String 
cfTerm, String cqTerm, String valueTerm, boolean orFields, boolean 
matchSubstring) {
-        
+    
     if (rowTerm != null)
       si.addOption(RegExFilter.ROW_REGEX, rowTerm);
     if (cfTerm != null)
@@ -254,13 +249,10 @@ public class RegExFilter extends Filter 
     if (valueTerm != null)
       si.addOption(RegExFilter.VALUE_REGEX, valueTerm);
     si.addOption(RegExFilter.OR_FIELDS, String.valueOf(orFields));
-         si.addOption(RegExFilter.MATCH_SUBSTRING, 
String.valueOf(matchSubstring));
-         
+    si.addOption(RegExFilter.MATCH_SUBSTRING, String.valueOf(matchSubstring));
+    
   }
   
-  
-  
-  
   /**
    * Set the encoding string to use when interpreting characters
    * 

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/SummingArrayCombiner.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/SummingArrayCombiner.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/SummingArrayCombiner.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/SummingArrayCombiner.java
 Thu Jan 17 16:05:12 2013
@@ -127,8 +127,13 @@ public class SummingArrayCombiner extend
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
-    setEncoder(options);
+    if (super.validateOptions(options) == false)
+      return false;
+    try {
+      setEncoder(options);
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad encoder option", e);
+    }
     return true;
   }
   

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/TimestampFilter.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/TimestampFilter.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/TimestampFilter.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/TimestampFilter.java
 Thu Jan 17 16:05:12 2013
@@ -136,7 +136,8 @@ public class TimestampFilter extends Fil
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    super.validateOptions(options);
+    if (super.validateOptions(options) == false)
+      return false;
     boolean hasStart = false;
     boolean hasEnd = false;
     try {
@@ -157,13 +158,13 @@ public class TimestampFilter extends Fil
           dateParser.parse(s);
       }
       if (!hasStart && !hasEnd)
-        return false;
+        throw new IllegalArgumentException(START + " or " + END + " must be 
specified");
       if (options.get(START_INCL) != null)
         Boolean.parseBoolean(options.get(START_INCL));
       if (options.get(END_INCL) != null)
         Boolean.parseBoolean(options.get(END_INCL));
     } catch (Exception e) {
-      return false;
+      throw new IllegalArgumentException("invalid options", e);
     }
     return true;
   }

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/iterators/user/VersioningIterator.java
 Thu Jan 17 16:05:12 2013
@@ -147,7 +147,12 @@ public class VersioningIterator extends 
   
   @Override
   public boolean validateOptions(Map<String,String> options) {
-    int i = Integer.parseInt(options.get(MAXVERSIONS_OPT));
+    int i;
+    try {
+      i = Integer.parseInt(options.get(MAXVERSIONS_OPT));
+    } catch (Exception e) {
+      throw new IllegalArgumentException("bad integer " + MAXVERSIONS_OPT + 
":" + options.get(MAXVERSIONS_OPT));
+    }
     if (i < 1)
       throw new IllegalArgumentException(MAXVERSIONS_OPT + " for versioning 
iterator must be >= 1");
     return true;

Modified: 
accumulo/trunk/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
 (original)
+++ 
accumulo/trunk/core/src/test/java/org/apache/accumulo/core/iterators/user/FilterTest.java
 Thu Jan 17 16:05:12 2013
@@ -17,7 +17,6 @@
 package org.apache.accumulo.core.iterators.user;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
@@ -199,7 +198,10 @@ public class FilterTest {
     AgeOffFilter.setCurrentTime(is, 1001l);
     AgeOffFilter.setNegate(is, true);
     assertTrue(((AgeOffFilter) a).validateOptions(is.getOptions()));
-    assertFalse(((AgeOffFilter) a).validateOptions(EMPTY_OPTS));
+    try {
+      ((AgeOffFilter) a).validateOptions(EMPTY_OPTS);
+      assertTrue(false);
+    } catch (IllegalArgumentException e) {}
     a.init(new SortedMapIterator(tm), is.getOptions(), null);
     a = a.deepCopy(null);
     SortedKeyValueIterator<Key,Value> copy = a.deepCopy(null);
@@ -467,7 +469,10 @@ public class FilterTest {
     a.seek(new Range(), EMPTY_COL_FAMS, false);
     assertEquals(size(a), 32);
     
-    assertFalse(a.validateOptions(EMPTY_OPTS));
+    try {
+      a.validateOptions(EMPTY_OPTS);
+      assertTrue(false);
+    } catch (IllegalArgumentException e) {}
   }
   
   @Test

Modified: 
accumulo/trunk/examples/simple/src/main/java/org/apache/accumulo/examples/simple/combiner/StatsCombiner.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/examples/simple/src/main/java/org/apache/accumulo/examples/simple/combiner/StatsCombiner.java?rev=1434751&r1=1434750&r2=1434751&view=diff
==============================================================================
--- 
accumulo/trunk/examples/simple/src/main/java/org/apache/accumulo/examples/simple/combiner/StatsCombiner.java
 (original)
+++ 
accumulo/trunk/examples/simple/src/main/java/org/apache/accumulo/examples/simple/combiner/StatsCombiner.java
 Thu Jan 17 16:05:12 2013
@@ -92,7 +92,7 @@ public class StatsCombiner extends Combi
       return false;
     
     if (options.containsKey(RADIX_OPTION) && 
!options.get(RADIX_OPTION).matches("\\d+"))
-      return false;
+      throw new IllegalArgumentException("invalid option " + RADIX_OPTION + 
":" + options.get(RADIX_OPTION));
     
     return true;
   }


Reply via email to