You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/11/23 21:31:06 UTC

svn commit: r1413047 [2/2] - in /lucene/dev/branches/branch_4x: ./ dev-tools/ lucene/ lucene/analysis/ lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/ lucene/benchmark/ lucene/codecs/ lucene/core/ lucene/core/src/test/org/ap...

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java Fri Nov 23 20:30:59 2012
@@ -26,7 +26,6 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.docvalues.DoubleDocValues;
 import org.apache.lucene.queries.function.docvalues.LongDocValues;
 import org.apache.lucene.queries.function.valuesource.*;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.SortField;
@@ -61,7 +60,7 @@ public abstract class ValueSourceParser 
   /**
    * Parse the user input into a ValueSource.
    */
-  public abstract ValueSource parse(FunctionQParser fp) throws ParseException;
+  public abstract ValueSource parse(FunctionQParser fp) throws SyntaxError;
 
   /* standard functions */
   public static Map<String, ValueSourceParser> standardValueSourceParsers = new HashMap<String, ValueSourceParser>();
@@ -87,33 +86,33 @@ public abstract class ValueSourceParser 
   static {
     addParser("testfunc", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         final ValueSource source = fp.parseValueSource();
         return new TestValueSource(source);
       }
     });
     addParser("ord", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         String field = fp.parseId();
         return new OrdFieldSource(field);
       }
     });
     addParser("literal", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         return new LiteralValueSource(fp.parseArg());
       }
     });
     addParser("threadid", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         return new LongConstValueSource(Thread.currentThread().getId());
       }
     });
     addParser("sleep", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         int ms = fp.parseInt();
         ValueSource source = fp.parseValueSource();
         try {
@@ -126,14 +125,14 @@ public abstract class ValueSourceParser 
     });
     addParser("rord", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         String field = fp.parseId();
         return new ReverseOrdFieldSource(field);
       }
     });
     addParser("top", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         // top(vs) is now a no-op
         ValueSource source = fp.parseValueSource();
         return source;
@@ -141,7 +140,7 @@ public abstract class ValueSourceParser 
     });
     addParser("linear", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource source = fp.parseValueSource();
         float slope = fp.parseFloat();
         float intercept = fp.parseFloat();
@@ -150,7 +149,7 @@ public abstract class ValueSourceParser 
     });
     addParser("recip", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource source = fp.parseValueSource();
         float m = fp.parseFloat();
         float a = fp.parseFloat();
@@ -160,7 +159,7 @@ public abstract class ValueSourceParser 
     });
     addParser("scale", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource source = fp.parseValueSource();
         float min = fp.parseFloat();
         float max = fp.parseFloat();
@@ -169,7 +168,7 @@ public abstract class ValueSourceParser 
     });
     addParser("div", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource a = fp.parseValueSource();
         ValueSource b = fp.parseValueSource();
         return new DivFloatFunction(a, b);
@@ -177,7 +176,7 @@ public abstract class ValueSourceParser 
     });
     addParser("mod", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource a = fp.parseValueSource();
         ValueSource b = fp.parseValueSource();
         return new DualFloatFunction(a, b) {
@@ -194,7 +193,7 @@ public abstract class ValueSourceParser 
     });
     addParser("map", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource source = fp.parseValueSource();
         float min = fp.parseFloat();
         float max = fp.parseFloat();
@@ -206,7 +205,7 @@ public abstract class ValueSourceParser 
 
     addParser("abs", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource source = fp.parseValueSource();
         return new SimpleFloatFunction(source) {
           @Override
@@ -223,7 +222,7 @@ public abstract class ValueSourceParser 
     });
     addParser("sum", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new SumFloatFunction(sources.toArray(new ValueSource[sources.size()]));
       }
@@ -232,7 +231,7 @@ public abstract class ValueSourceParser 
 
     addParser("product", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new ProductFloatFunction(sources.toArray(new ValueSource[sources.size()]));
       }
@@ -241,7 +240,7 @@ public abstract class ValueSourceParser 
 
     addParser("sub", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource a = fp.parseValueSource();
         ValueSource b = fp.parseValueSource();
         return new DualFloatFunction(a, b) {
@@ -259,14 +258,14 @@ public abstract class ValueSourceParser 
     });
     addParser("vector", new ValueSourceParser(){
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException{
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         return new VectorValueSource(fp.parseValueSourceList());
       }
     });
     addParser("query", new ValueSourceParser() {
       // boost(query($q),rating)
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         Query q = fp.parseNestedQuery();
         float defVal = 0.0f;
         if (fp.hasMoreArguments()) {
@@ -277,7 +276,7 @@ public abstract class ValueSourceParser 
     });
     addParser("boost", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         Query q = fp.parseNestedQuery();
         ValueSource vs = fp.parseValueSource();
         BoostedQuery bq = new BoostedQuery(q, vs);
@@ -286,7 +285,7 @@ public abstract class ValueSourceParser 
     });
     addParser("joindf", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         String f0 = fp.parseArg();
         String qf = fp.parseArg();
         return new JoinDocFreqValueSource( f0, qf );
@@ -297,7 +296,7 @@ public abstract class ValueSourceParser 
 
     addParser("hsin", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
 
         double radius = fp.parseDouble();
         //SOLR-2114, make the convert flag required, since the parser doesn't support much in the way of lookahead or the ability to convert a String into a ValueSource
@@ -338,7 +337,7 @@ public abstract class ValueSourceParser 
 
     addParser("ghhsin", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         double radius = fp.parseDouble();
 
         ValueSource gh1 = fp.parseValueSource();
@@ -350,7 +349,7 @@ public abstract class ValueSourceParser 
 
     addParser("geohash", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
 
         ValueSource lat = fp.parseValueSource();
         ValueSource lon = fp.parseValueSource();
@@ -360,7 +359,7 @@ public abstract class ValueSourceParser 
     });
     addParser("strdist", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
 
         ValueSource str1 = fp.parseValueSource();
         ValueSource str2 = fp.parseValueSource();
@@ -385,7 +384,7 @@ public abstract class ValueSourceParser 
     });
     addParser("field", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
 
         String fieldName = fp.parseArg();
         SchemaField f = fp.getReq().getSchema().getField(fieldName);
@@ -527,21 +526,21 @@ public abstract class ValueSourceParser 
     });
     addParser("max", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new MaxFloatFunction(sources.toArray(new ValueSource[sources.size()]));
       }
     });
     addParser("min", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new MinFloatFunction(sources.toArray(new ValueSource[sources.size()]));
       }
     });
     addParser("sqedist", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         MVResult mvr = getMultiValueSources(sources);
 
@@ -551,7 +550,7 @@ public abstract class ValueSourceParser 
 
     addParser("dist", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         float power = fp.parseFloat();
         List<ValueSource> sources = fp.parseValueSourceList();
         MVResult mvr = getMultiValueSources(sources);
@@ -577,7 +576,7 @@ public abstract class ValueSourceParser 
 
     addParser("docfreq", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         TInfo tinfo = parseTerm(fp);
         return new DocFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
       }
@@ -585,7 +584,7 @@ public abstract class ValueSourceParser 
 
     addParser("totaltermfreq", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         TInfo tinfo = parseTerm(fp);
         return new TotalTermFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
       }
@@ -594,7 +593,7 @@ public abstract class ValueSourceParser 
 
     addParser("sumtotaltermfreq", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         String field = fp.parseArg();
         return new SumTotalTermFreqValueSource(field);
       }
@@ -603,7 +602,7 @@ public abstract class ValueSourceParser 
 
     addParser("idf", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         TInfo tinfo = parseTerm(fp);
         return new IDFValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
       }
@@ -611,7 +610,7 @@ public abstract class ValueSourceParser 
 
     addParser("termfreq", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         TInfo tinfo = parseTerm(fp);
         return new TermFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
       }
@@ -619,7 +618,7 @@ public abstract class ValueSourceParser 
 
     addParser("tf", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         TInfo tinfo = parseTerm(fp);
         return new TFValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
       }
@@ -627,7 +626,7 @@ public abstract class ValueSourceParser 
 
     addParser("norm", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         String field = fp.parseArg();
         return new NormValueSource(field);
       }
@@ -663,7 +662,7 @@ public abstract class ValueSourceParser 
 
     addParser("exists", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource vs = fp.parseValueSource();
         return new SimpleBoolFunction(vs) {
           @Override
@@ -680,7 +679,7 @@ public abstract class ValueSourceParser 
 
     addParser("not", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource vs = fp.parseValueSource();
         return new SimpleBoolFunction(vs) {
           @Override
@@ -698,7 +697,7 @@ public abstract class ValueSourceParser 
 
     addParser("and", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new MultiBoolFunction(sources) {
           @Override
@@ -717,7 +716,7 @@ public abstract class ValueSourceParser 
 
     addParser("or", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new MultiBoolFunction(sources) {
           @Override
@@ -736,7 +735,7 @@ public abstract class ValueSourceParser 
 
     addParser("xor", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         List<ValueSource> sources = fp.parseValueSourceList();
         return new MultiBoolFunction(sources) {
           @Override
@@ -758,7 +757,7 @@ public abstract class ValueSourceParser 
 
     addParser("if", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         ValueSource ifValueSource = fp.parseValueSource();
         ValueSource trueValueSource = fp.parseValueSource();
         ValueSource falseValueSource = fp.parseValueSource();
@@ -769,14 +768,14 @@ public abstract class ValueSourceParser 
 
     addParser("def", new ValueSourceParser() {
       @Override
-      public ValueSource parse(FunctionQParser fp) throws ParseException {
+      public ValueSource parse(FunctionQParser fp) throws SyntaxError {
         return new DefFunction(fp.parseValueSourceList());
       }
     });
 
   }
 
-  private static TInfo parseTerm(FunctionQParser fp) throws ParseException {
+  private static TInfo parseTerm(FunctionQParser fp) throws SyntaxError {
     TInfo tinfo = new TInfo();
 
     tinfo.indexedField = tinfo.field = fp.parseArg();
@@ -888,7 +887,7 @@ class DateValueSourceParser extends Valu
   }
 
   @Override
-  public ValueSource parse(FunctionQParser fp) throws ParseException {
+  public ValueSource parse(FunctionQParser fp) throws SyntaxError {
     String first = fp.parseArg();
     String second = fp.parseArg();
     if (first == null) first = "NOW";
@@ -1079,7 +1078,7 @@ abstract class DoubleParser extends Name
   public abstract double func(int doc, FunctionValues vals);
 
   @Override
-  public ValueSource parse(FunctionQParser fp) throws ParseException {
+  public ValueSource parse(FunctionQParser fp) throws SyntaxError {
     return new Function(fp.parseValueSource());
   }
 
@@ -1119,7 +1118,7 @@ abstract class Double2Parser extends Nam
   public abstract double func(int doc, FunctionValues a, FunctionValues b);
 
   @Override
-  public ValueSource parse(FunctionQParser fp) throws ParseException {
+  public ValueSource parse(FunctionQParser fp) throws SyntaxError {
     return new Function(fp.parseValueSource(), fp.parseValueSource());
   }
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java Fri Nov 23 20:30:59 2012
@@ -24,7 +24,6 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.valuesource.DoubleConstValueSource;
 import org.apache.lucene.queries.function.valuesource.MultiValueSource;
 import org.apache.lucene.queries.function.valuesource.VectorValueSource;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.search.IndexSearcher;
 import com.spatial4j.core.io.ParseUtils;
 import com.spatial4j.core.distance.DistanceUtils;
@@ -32,6 +31,7 @@ import com.spatial4j.core.exception.Inva
 import org.apache.solr.common.params.SpatialParams;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.FunctionQParser;
+import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.ValueSourceParser;
 
 import java.io.IOException;
@@ -48,7 +48,7 @@ public class HaversineConstFunction exte
 
   public static ValueSourceParser parser = new ValueSourceParser() {
     @Override
-    public ValueSource parse(FunctionQParser fp) throws ParseException
+    public ValueSource parse(FunctionQParser fp) throws SyntaxError
     {
       // TODO: dispatch through SpatialQueryable in the future?
       List<ValueSource> sources = fp.parseValueSourceList();
@@ -65,7 +65,7 @@ public class HaversineConstFunction exte
       } else if (sources.size() == 1) {
         ValueSource vs = sources.get(0);
         if (!(vs instanceof MultiValueSource)) {
-          throw new ParseException("geodist - invalid parameters:" + sources);
+          throw new SyntaxError("geodist - invalid parameters:" + sources);
         }
         mv1 = (MultiValueSource)vs;
       } else if (sources.size() == 2) {
@@ -88,7 +88,7 @@ public class HaversineConstFunction exte
           mv1 = makeMV(sources.subList(0,2), sources);
           vs1 = sources.get(2);
           if (!(vs1 instanceof MultiValueSource)) {
-            throw new ParseException("geodist - invalid parameters:" + sources);
+            throw new SyntaxError("geodist - invalid parameters:" + sources);
           }
           mv2 = (MultiValueSource)vs1;
         }
@@ -96,7 +96,7 @@ public class HaversineConstFunction exte
         mv1 = makeMV(sources.subList(0,2), sources);
         mv2 = makeMV(sources.subList(2,4), sources);
       } else if (sources.size() > 4) {
-        throw new ParseException("geodist - invalid parameters:" + sources);
+        throw new SyntaxError("geodist - invalid parameters:" + sources);
       }
 
       if (mv1 == null) {
@@ -109,7 +109,7 @@ public class HaversineConstFunction exte
       }
 
       if (mv1 == null || mv2 == null) {
-        throw new ParseException("geodist - not enough parameters:" + sources);
+        throw new SyntaxError("geodist - not enough parameters:" + sources);
       }
 
       // We have all the parameters at this point, now check if one of the points is constant
@@ -130,24 +130,24 @@ public class HaversineConstFunction exte
   };
 
   /** make a MultiValueSource from two non MultiValueSources */
-  private static VectorValueSource makeMV(List<ValueSource> sources, List<ValueSource> orig) throws ParseException {
+  private static VectorValueSource makeMV(List<ValueSource> sources, List<ValueSource> orig) throws SyntaxError {
     ValueSource vs1 = sources.get(0);
     ValueSource vs2 = sources.get(1);
 
     if (vs1 instanceof MultiValueSource || vs2 instanceof MultiValueSource) {
-      throw new ParseException("geodist - invalid parameters:" + orig);
+      throw new SyntaxError("geodist - invalid parameters:" + orig);
     }
     return  new VectorValueSource(sources);
   }
 
-  private static MultiValueSource parsePoint(FunctionQParser fp) throws ParseException {
+  private static MultiValueSource parsePoint(FunctionQParser fp) throws SyntaxError {
     String pt = fp.getParam(SpatialParams.POINT);
     if (pt == null) return null;
     double[] point = null;
     try {
       point = ParseUtils.parseLatitudeLongitude(pt);
     } catch (InvalidShapeException e) {
-      throw new ParseException("Bad spatial pt:" + pt);
+      throw new SyntaxError("Bad spatial pt:" + pt);
     }
     return new VectorValueSource(Arrays.<ValueSource>asList(new DoubleConstValueSource(point[0]),new DoubleConstValueSource(point[1])));
   }
@@ -161,13 +161,13 @@ public class HaversineConstFunction exte
     return null;
   }
 
-  private static MultiValueSource parseSfield(FunctionQParser fp) throws ParseException {
+  private static MultiValueSource parseSfield(FunctionQParser fp) throws SyntaxError {
     String sfield = fp.getParam(SpatialParams.FIELD);
     if (sfield == null) return null;
     SchemaField sf = fp.getReq().getSchema().getField(sfield);
     ValueSource vs = sf.getType().getValueSource(sf, fp);
     if (!(vs instanceof MultiValueSource)) {
-      throw new ParseException("Spatial field must implement MultiValueSource:" + sf);
+      throw new SyntaxError("Spatial field must implement MultiValueSource:" + sf);
     }
     return (MultiValueSource)vs;
   }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java Fri Nov 23 20:30:59 2012
@@ -17,12 +17,12 @@ package org.apache.solr.search.grouping.
  * limitations under the License.
  */
 
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.search.*;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.DocSet;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.grouping.Command;
 import org.apache.solr.search.grouping.collector.FilterCollector;
 
@@ -61,9 +61,8 @@ public class QueryCommand implements Com
      * @param groupQueryString The group query string to parse
      * @param request The current request
      * @return this
-     * @throws ParseException If parsing the groupQueryString failed
      */
-    public Builder setQuery(String groupQueryString, SolrQueryRequest request) throws ParseException {
+    public Builder setQuery(String groupQueryString, SolrQueryRequest request) throws SyntaxError {
       QParser parser = QParser.getParser(groupQueryString, null, request);
       this.queryString = groupQueryString;
       return setQuery(parser.getQuery());

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Fri Nov 23 20:30:59 2012
@@ -37,7 +37,6 @@ import org.apache.lucene.index.IndexRead
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
@@ -58,6 +57,7 @@ import org.apache.solr.response.SolrQuer
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.FunctionRangeQuery;
 import org.apache.solr.search.QParser;
+import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.QueryUtils;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.search.function.ValueSourceRangeFilter;
@@ -318,7 +318,7 @@ public class DirectUpdateHandler2 extend
 
       return q;
 
-    } catch (ParseException e) {
+    } catch (SyntaxError e) {
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
     }
   }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java Fri Nov 23 20:30:59 2012
@@ -19,8 +19,6 @@ package org.apache.solr.util;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexableField;
-import org.apache.lucene.queryparser.classic.ParseException;
-import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.*;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.solr.common.SolrDocument;
@@ -28,7 +26,6 @@ import org.apache.solr.common.SolrDocume
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.UpdateParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
@@ -36,13 +33,12 @@ import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.component.HighlightComponent;
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.highlight.SolrHighlighter;
+import org.apache.solr.parser.QueryParser;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.*;
-import org.apache.solr.update.DocumentBuilder;
-import org.slf4j.Logger;
 
 import java.io.IOException;
 import java.util.*;
@@ -384,7 +380,7 @@ public class SolrPluginUtils {
 
     DocList results = req.getSearcher().getDocList(query,(DocSet)null, sort, start, limit);
     return results;
-    } catch (ParseException e) {
+    } catch (SyntaxError e) {
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Error parsing query: " + qs);
     }
 
@@ -602,8 +598,6 @@ public class SolrPluginUtils {
 
   /**
    * Escapes all special characters except '"', '-', and '+'
-   *
-   * @see QueryParser#escape
    */
   public static CharSequence partialEscape(CharSequence s) {
     StringBuilder sb = new StringBuilder();
@@ -724,7 +718,7 @@ public class SolrPluginUtils {
      */
     @Override
     protected Query getFieldQuery(String field, String queryText, boolean quoted)
-      throws ParseException {
+      throws SyntaxError {
 
       if (aliases.containsKey(field)) {
 
@@ -796,7 +790,7 @@ public class SolrPluginUtils {
    * @return null if no queries are generated
    */
   public static List<Query> parseQueryStrings(SolrQueryRequest req,
-                                              String[] queries) throws ParseException {
+                                              String[] queries) throws SyntaxError {
     if (null == queries || 0 == queries.length) return null;
     List<Query> out = new ArrayList<Query>(queries.length);
     for (String q : queries) {

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java Fri Nov 23 20:30:59 2012
@@ -19,9 +19,9 @@ package org.apache.solr.core;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.valuesource.SimpleFloatFunction;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.search.FunctionQParser;
+import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.ValueSourceParser;
 
 
@@ -38,7 +38,7 @@ public class DummyValueSourceParser exte
   }
 
   @Override
-  public ValueSource parse(FunctionQParser fp) throws ParseException {
+  public ValueSource parse(FunctionQParser fp) throws SyntaxError {
     ValueSource source = fp.parseValueSource();
     ValueSource result = new SimpleFloatFunction(source) {
       @Override

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java Fri Nov 23 20:30:59 2012
@@ -29,7 +29,6 @@ import org.apache.lucene.document.Field;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.Version;
 import org.apache.solr.common.SolrException;
@@ -96,7 +95,7 @@ public class TestArbitraryIndexDir exten
   }
 
   @Test
-  public void testLoadNewIndexDir() throws IOException, ParserConfigurationException, SAXException, ParseException {
+  public void testLoadNewIndexDir() throws IOException, ParserConfigurationException, SAXException {
     //add a doc in original index dir
     assertU(adoc("id", String.valueOf(1),
         "name", "name"+String.valueOf(1)));

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java Fri Nov 23 20:30:59 2012
@@ -17,7 +17,6 @@
 
 package org.apache.solr.search;
 
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.request.SolrQueryRequest;
@@ -42,7 +41,7 @@ class FooQParser extends QParser {
   }
 
   @Override
-  public Query parse() throws ParseException {
+  public Query parse() throws SyntaxError {
     return new TermQuery(new Term(localParams.get(QueryParsing.F), localParams.get(QueryParsing.V)));
   }
 }

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java Fri Nov 23 20:30:59 2012
@@ -769,7 +769,7 @@ public class TestExtendedDismaxParser ex
             "defType", "edismax")
         , "*[count(//doc)=1]");
     
-    // Query string field 'cat_s' for special char / - causes ParseException without patch SOLR-3467
+    // Query string field 'cat_s' for special char / - causes SyntaxError without patch SOLR-3467
     assertQ("Escaping string with reserved / character",
         req("q", "foo/",
             "qf", "cat_s",

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java Fri Nov 23 20:30:59 2012
@@ -35,6 +35,12 @@ public class TestSolrQueryParser extends
     assertU(adoc("id","1", "text",v,  "text_np",v));
     v="now cow";
     assertU(adoc("id","2", "text",v,  "text_np",v));
+    assertU(adoc("id","3", "foo_s","a ' \" \\ {! ) } ( { z"));  // A value filled with special chars
+
+    assertU(adoc("id","10", "qqq_s","X"));
+    assertU(adoc("id","11", "www_s","X"));
+    assertU(adoc("id","12", "eee_s","X"));
+
     assertU(commit());
   }
 
@@ -49,4 +55,35 @@ public class TestSolrQueryParser extends
         ,"//*[@numFound='2']"
     );
   }
+
+  @Test
+  public void testLocalParamsInQP() throws Exception {
+    assertJQ(req("q","qaz {!term f=text v=$qq} wsx", "qq","now")
+        ,"/response/numFound==2"
+    );
+
+    assertJQ(req("q","qaz {!term f=text v=$qq} wsx", "qq","nomatch")
+        ,"/response/numFound==0"
+    );
+
+    assertJQ(req("q","qaz {!term f=text}now wsx", "qq","now")
+        ,"/response/numFound==2"
+    );
+
+    assertJQ(req("q","qaz {!term f=foo_s v='a \\' \" \\\\ {! ) } ( { z'} wsx")           // single quote escaping
+        ,"/response/numFound==1"
+    );
+
+    assertJQ(req("q","qaz {!term f=foo_s v=\"a ' \\\" \\\\ {! ) } ( { z\"} wsx")         // double quote escaping
+        ,"/response/numFound==1"
+    );
+
+    // double-join to test back-to-back local params
+    assertJQ(req("q","qaz {!join from=www_s to=eee_s}{!join from=qqq_s to=www_s}id:10" )
+        ,"/response/docs/[0]/id=='12'"
+    );
+
+
+  }
+
 }

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java Fri Nov 23 20:30:59 2012
@@ -17,7 +17,6 @@ package org.apache.solr.search;
  * limitations under the License.
  */
 
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.QueryUtils;
 import org.apache.solr.SolrTestCaseJ4;
@@ -41,14 +40,14 @@ public class TestValueSourceCache extend
     _func = null;
   }
 
-  Query getQuery(String query) throws ParseException {
+  Query getQuery(String query) throws SyntaxError {
     _func.setString(query);
     return _func.parse();
   }
 
   // This is actually also tested by the tests for val_d1 below, but the bug was reported against geodist()...
   @Test
-  public void testGeodistSource() throws ParseException {
+  public void testGeodistSource() throws SyntaxError {
     Query q_home = getQuery("geodist(home_ll, 45.0, 43.0)");
     Query q_work = getQuery("geodist(work_ll, 45.0, 43.0)");
     Query q_home2 = getQuery("geodist(home_ll, 45.0, 43.0)");
@@ -57,7 +56,7 @@ public class TestValueSourceCache extend
   }
 
   @Test
-  public void testNumerics() throws ParseException {
+  public void testNumerics() throws SyntaxError {
     String[] templates = new String[]{
         "sum(#v0, #n0)",
         "product(pow(#v0,#n0),#v1,#n1)",
@@ -94,7 +93,7 @@ public class TestValueSourceCache extend
 
   // This test should will fail because q1 and q3 evaluate as equal unless
   // fixes for bug 2829 are in place.
-  void tryQuerySameTypes(String template, String numbers, String type) throws ParseException {
+  void tryQuerySameTypes(String template, String numbers, String type) throws SyntaxError {
     String s1 = template;
     String s2 = template;
     String s3 = template;
@@ -120,7 +119,7 @@ public class TestValueSourceCache extend
 
   // These should always and forever fail, and would have failed without the fixes for 2829, but why not make
   // some more tests just in case???
-  void tryQueryDiffTypes(String template, String numbers, String[] types) throws ParseException {
+  void tryQueryDiffTypes(String template, String numbers, String[] types) throws SyntaxError {
     String s1 = template;
     String s2 = template;
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java Fri Nov 23 20:30:59 2012
@@ -20,9 +20,9 @@ package org.apache.solr.search.function;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.valuesource.SimpleFloatFunction;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.search.FunctionQParser;
+import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.ValueSourceParser;
 
 /**
@@ -46,7 +46,7 @@ public class NvlValueSourceParser extend
     private float nvlFloatValue = 0.0f;
 
     @Override
-    public ValueSource parse(FunctionQParser fp) throws ParseException {
+    public ValueSource parse(FunctionQParser fp) throws SyntaxError {
       ValueSource source = fp.parseValueSource();
       final float nvl = fp.parseFloat();
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java Fri Nov 23 20:30:59 2012
@@ -329,7 +329,7 @@ public class DateMathParserTest extends 
     for (String command : badCommands.keySet()) {
       try {
         Date out = p.parseMath(command);
-        fail("Didn't generate ParseException for: " + command);
+        fail("Didn't generate SyntaxError for: " + command);
       } catch (ParseException e) {
         assertEquals("Wrong pos for: " + command + " => " + e.getMessage(),
                      badCommands.get(command).intValue(), e.getErrorOffset());