You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ch...@apache.org on 2011/08/16 04:11:08 UTC

svn commit: r1158088 [2/3] - in /lucene/dev/trunk/lucene/contrib/xml-query-parser/src: demo/java/org/apache/lucene/xmlparser/webdemo/ java/org/apache/lucene/xmlparser/ java/org/apache/lucene/xmlparser/builders/ test/org/apache/lucene/xmlparser/ test/or...

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java Tue Aug 16 02:11:07 2011
@@ -28,44 +28,33 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
 public class DuplicateFilterBuilder implements FilterBuilder {
-	
 
-	public Filter getFilter(Element e) throws ParserException {
-        String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
-		DuplicateFilter df=new DuplicateFilter(fieldName);
-		String keepMode=DOMUtils.getAttribute(e,"keepMode","first");
-		if(keepMode.equalsIgnoreCase("first"))
-		{
-			df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_FIRST_OCCURRENCE);
-		}
-		else
-			if(keepMode.equalsIgnoreCase("last"))
-			{
-				df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_LAST_OCCURRENCE);
-			}
-			else
-			{
-				throw new ParserException("Illegal keepMode attribute in DuplicateFilter:"+keepMode);
-			}
-		String processingMode=DOMUtils.getAttribute(e,"processingMode","full");
-		if(processingMode.equalsIgnoreCase("full"))
-		{
-			df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FULL_VALIDATION);
-		}
-		else
-			if(processingMode.equalsIgnoreCase("fast"))
-			{
-				df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FAST_INVALIDATION);
-			}
-			else
-			{
-				throw new ParserException("Illegal processingMode attribute in DuplicateFilter:"+processingMode);
-			}
-					
-		return df;
-	}
+  public Filter getFilter(Element e) throws ParserException {
+    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    DuplicateFilter df = new DuplicateFilter(fieldName);
+
+    String keepMode = DOMUtils.getAttribute(e, "keepMode", "first");
+    if (keepMode.equalsIgnoreCase("first")) {
+      df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_FIRST_OCCURRENCE);
+    } else if (keepMode.equalsIgnoreCase("last")) {
+      df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_LAST_OCCURRENCE);
+    } else {
+      throw new ParserException("Illegal keepMode attribute in DuplicateFilter:" + keepMode);
+    }
+
+    String processingMode = DOMUtils.getAttribute(e, "processingMode", "full");
+    if (processingMode.equalsIgnoreCase("full")) {
+      df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FULL_VALIDATION);
+    } else if (processingMode.equalsIgnoreCase("fast")) {
+      df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FAST_INVALIDATION);
+    } else {
+      throw new ParserException("Illegal processingMode attribute in DuplicateFilter:" + processingMode);
+    }
+
+    return df;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -30,35 +30,34 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
 public class FilteredQueryBuilder implements QueryBuilder {
-	
-	private FilterBuilder filterFactory;
-	private QueryBuilder queryFactory;
-
-	public FilteredQueryBuilder(FilterBuilder filterFactory, QueryBuilder queryFactory)
-	{
-		this.filterFactory=filterFactory;
-		this.queryFactory=queryFactory;
-		
-	}
-
-	/* (non-Javadoc)
-	 * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
-	 */
-	public Query getQuery(Element e) throws ParserException {	
- 	    Element filterElement=DOMUtils.getChildByTagOrFail(e,"Filter");
- 	    filterElement=DOMUtils.getFirstChildOrFail(filterElement);
- 	    Filter f=filterFactory.getFilter(filterElement);
- 
- 	    Element queryElement=DOMUtils.getChildByTagOrFail(e,"Query");
- 	    queryElement=DOMUtils.getFirstChildOrFail(queryElement);
- 	    Query q=queryFactory.getQuery(queryElement);
- 	    
- 	    FilteredQuery fq = new FilteredQuery(q,f);
- 	    fq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- 	    return fq;		
-	}
+
+  private final FilterBuilder filterFactory;
+  private final QueryBuilder queryFactory;
+
+  public FilteredQueryBuilder(FilterBuilder filterFactory, QueryBuilder queryFactory) {
+    this.filterFactory = filterFactory;
+    this.queryFactory = queryFactory;
+
+  }
+
+  /* (non-Javadoc)
+    * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+    */
+  public Query getQuery(Element e) throws ParserException {
+    Element filterElement = DOMUtils.getChildByTagOrFail(e, "Filter");
+    filterElement = DOMUtils.getFirstChildOrFail(filterElement);
+    Filter f = filterFactory.getFilter(filterElement);
+
+    Element queryElement = DOMUtils.getChildByTagOrFail(e, "Query");
+    queryElement = DOMUtils.getFirstChildOrFail(queryElement);
+    Query q = queryFactory.getQuery(queryElement);
+
+    FilteredQuery fq = new FilteredQuery(q, f);
+    fq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return fq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -28,40 +28,39 @@ import org.w3c.dom.NodeList;
  */
 
 /**
- * 
+ *
  */
-public class FuzzyLikeThisQueryBuilder implements QueryBuilder
-{
-	int defaultMaxNumTerms=50;
-	float defaultMinSimilarity=FuzzyQuery.defaultMinSimilarity;
-	int defaultPrefixLength=1;
-	boolean defaultIgnoreTF=false;
-	private Analyzer analyzer;
-	
-	public FuzzyLikeThisQueryBuilder(Analyzer analyzer)
-	{
-		this.analyzer=analyzer;
-	}
-
-	public Query getQuery(Element e) throws ParserException
-	{
-		NodeList nl = e.getElementsByTagName("Field");
-		int maxNumTerms=DOMUtils.getAttribute(e,"maxNumTerms",defaultMaxNumTerms);
-		FuzzyLikeThisQuery fbq=new FuzzyLikeThisQuery(maxNumTerms,analyzer);
-		fbq.setIgnoreTF(DOMUtils.getAttribute(e,"ignoreTF",defaultIgnoreTF));
-		for(int i=0;i<nl.getLength();i++)
-		{
-			Element fieldElem=(Element) nl.item(i);
-			float minSimilarity=DOMUtils.getAttribute(fieldElem,"minSimilarity",defaultMinSimilarity);
-			int prefixLength=DOMUtils.getAttribute(fieldElem,"prefixLength",defaultPrefixLength);
-			String fieldName=DOMUtils.getAttributeWithInheritance(fieldElem,"fieldName");
-			
-			String value=DOMUtils.getText(fieldElem);
-			fbq.addTerms(value,fieldName,minSimilarity,prefixLength);
-		}
-		fbq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
+public class FuzzyLikeThisQueryBuilder implements QueryBuilder {
 
-		return fbq;
-	}
+  private static final int DEFAULT_MAX_NUM_TERMS = 50;
+  private static final float DEFAULT_MIN_SIMILARITY = FuzzyQuery.defaultMinSimilarity;
+  private static final int DEFAULT_PREFIX_LENGTH = 1;
+  private static final boolean DEFAULT_IGNORE_TF = false;
+
+  private final Analyzer analyzer;
+
+  public FuzzyLikeThisQueryBuilder(Analyzer analyzer) {
+    this.analyzer = analyzer;
+  }
+
+  public Query getQuery(Element e) throws ParserException {
+    NodeList nl = e.getElementsByTagName("Field");
+    int maxNumTerms = DOMUtils.getAttribute(e, "maxNumTerms", DEFAULT_MAX_NUM_TERMS);
+    FuzzyLikeThisQuery fbq = new FuzzyLikeThisQuery(maxNumTerms, analyzer);
+    fbq.setIgnoreTF(DOMUtils.getAttribute(e, "ignoreTF", DEFAULT_IGNORE_TF));
+
+    for (int i = 0; i < nl.getLength(); i++) {
+      Element fieldElem = (Element) nl.item(i);
+      float minSimilarity = DOMUtils.getAttribute(fieldElem, "minSimilarity", DEFAULT_MIN_SIMILARITY);
+      int prefixLength = DOMUtils.getAttribute(fieldElem, "prefixLength", DEFAULT_PREFIX_LENGTH);
+      String fieldName = DOMUtils.getAttributeWithInheritance(fieldElem, "fieldName");
+
+      String value = DOMUtils.getText(fieldElem);
+      fbq.addTerms(value, fieldName, minSimilarity, prefixLength);
+    }
+
+    fbq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return fbq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -35,83 +35,74 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
 public class LikeThisQueryBuilder implements QueryBuilder {
 
-	private Analyzer analyzer;
-	String defaultFieldNames [];
-	int defaultMaxQueryTerms=20;
-	int defaultMinTermFrequency=1;
-	float defaultPercentTermsToMatch=30; //default is a 3rd of selected terms must match
-
-	public LikeThisQueryBuilder(Analyzer analyzer,String [] defaultFieldNames)
-	{
-		this.analyzer=analyzer;
-		this.defaultFieldNames=defaultFieldNames;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
-	 */
-	public Query getQuery(Element e) throws ParserException {
-		String fieldsList=e.getAttribute("fieldNames"); //a comma-delimited list of fields
-		String fields[]=defaultFieldNames;
-		if((fieldsList!=null)&&(fieldsList.trim().length()>0))
-		{
-			fields=fieldsList.trim().split(",");
-			//trim the fieldnames
-			for (int i = 0; i < fields.length; i++) {
-				fields[i]=fields[i].trim();
-			}
-		}
-		
-		//Parse any "stopWords" attribute
-		//TODO MoreLikeThis needs to ideally have per-field stopWords lists - until then 
-		//I use all analyzers/fields to generate multi-field compatible stop list
-		String stopWords=e.getAttribute("stopWords");
-		Set<String> stopWordsSet=null;
-		if((stopWords!=null)&&(fields!=null))
-		{
-		    stopWordsSet=new HashSet<String>();
-		    for (int i = 0; i < fields.length; i++)
-            {
-                try
-                {
-                  TokenStream ts = analyzer.reusableTokenStream(fields[i],new StringReader(stopWords));
-                  CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
-                  ts.reset();
-	                while(ts.incrementToken()) {
-	                    stopWordsSet.add(termAtt.toString());
-	                }
-	                ts.end();
-	                ts.close();
-                }
-                catch(IOException ioe)
-                {
-                    throw new ParserException("IoException parsing stop words list in "
-                            +getClass().getName()+":"+ioe.getLocalizedMessage());
-                }
-            }
-		}
-		
-		
-		MoreLikeThisQuery mlt=new MoreLikeThisQuery(DOMUtils.getText(e),fields,analyzer, fields[0]);
-		mlt.setMaxQueryTerms(DOMUtils.getAttribute(e,"maxQueryTerms",defaultMaxQueryTerms));
-		mlt.setMinTermFrequency(DOMUtils.getAttribute(e,"minTermFrequency",defaultMinTermFrequency));
-		mlt.setPercentTermsToMatch(DOMUtils.getAttribute(e,"percentTermsToMatch",defaultPercentTermsToMatch)/100);
-		mlt.setStopWords(stopWordsSet);
-		int minDocFreq=DOMUtils.getAttribute(e,"minDocFreq",-1);
-		if(minDocFreq>=0)
-		{
-			mlt.setMinDocFreq(minDocFreq);
-		}
-
-		mlt.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
-		return mlt;
-	}
+  private static final int DEFAULT_MAX_QUERY_TERMS = 20;
+  private static final int DEFAULT_MIN_TERM_FREQUENCY = 1;
+  private static final float DEFAULT_PERCENT_TERMS_TO_MATCH = 30; //default is a 3rd of selected terms must match
+
+  private final Analyzer analyzer;
+  private final String defaultFieldNames[];
+
+  public LikeThisQueryBuilder(Analyzer analyzer, String[] defaultFieldNames) {
+    this.analyzer = analyzer;
+    this.defaultFieldNames = defaultFieldNames;
+  }
+
+  /* (non-Javadoc)
+    * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+    */
+  public Query getQuery(Element e) throws ParserException {
+    String fieldsList = e.getAttribute("fieldNames"); //a comma-delimited list of fields
+    String fields[] = defaultFieldNames;
+    if ((fieldsList != null) && (fieldsList.trim().length() > 0)) {
+      fields = fieldsList.trim().split(",");
+      //trim the fieldnames
+      for (int i = 0; i < fields.length; i++) {
+        fields[i] = fields[i].trim();
+      }
+    }
+
+    //Parse any "stopWords" attribute
+    //TODO MoreLikeThis needs to ideally have per-field stopWords lists - until then
+    //I use all analyzers/fields to generate multi-field compatible stop list
+    String stopWords = e.getAttribute("stopWords");
+    Set<String> stopWordsSet = null;
+    if ((stopWords != null) && (fields != null)) {
+      stopWordsSet = new HashSet<String>();
+      for (String field : fields) {
+        try {
+          TokenStream ts = analyzer.reusableTokenStream(field, new StringReader(stopWords));
+          CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
+          ts.reset();
+          while (ts.incrementToken()) {
+            stopWordsSet.add(termAtt.toString());
+          }
+          ts.end();
+          ts.close();
+        } catch (IOException ioe) {
+          throw new ParserException("IoException parsing stop words list in "
+              + getClass().getName() + ":" + ioe.getLocalizedMessage());
+        }
+      }
+    }
+
+
+    MoreLikeThisQuery mlt = new MoreLikeThisQuery(DOMUtils.getText(e), fields, analyzer, fields[0]);
+    mlt.setMaxQueryTerms(DOMUtils.getAttribute(e, "maxQueryTerms", DEFAULT_MAX_QUERY_TERMS));
+    mlt.setMinTermFrequency(DOMUtils.getAttribute(e, "minTermFrequency", DEFAULT_MIN_TERM_FREQUENCY));
+    mlt.setPercentTermsToMatch(DOMUtils.getAttribute(e, "percentTermsToMatch", DEFAULT_PERCENT_TERMS_TO_MATCH) / 100);
+    mlt.setStopWords(stopWordsSet);
+    int minDocFreq = DOMUtils.getAttribute(e, "minDocFreq", -1);
+    if (minDocFreq >= 0) {
+      mlt.setMinDocFreq(minDocFreq);
+    }
 
+    mlt.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
 
+    return mlt;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -23,12 +23,11 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public class MatchAllDocsQueryBuilder implements QueryBuilder
-{
-	public Query getQuery(Element e) throws ParserException
-	{
-		return new MatchAllDocsQuery();
-	}
+public class MatchAllDocsQueryBuilder implements QueryBuilder {
+  
+  public Query getQuery(Element e) throws ParserException {
+    return new MatchAllDocsQuery();
+  }
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java Tue Aug 16 02:11:07 2011
@@ -17,8 +17,6 @@ package org.apache.lucene.xmlparser.buil
  * limitations under the License.
  */
 
-import java.io.IOException;
-
 import org.apache.lucene.index.IndexReader.AtomicReaderContext;
 import org.apache.lucene.search.DocIdSet;
 import org.apache.lucene.search.Filter;
@@ -29,6 +27,8 @@ import org.apache.lucene.xmlparser.Filte
 import org.apache.lucene.xmlparser.ParserException;
 import org.w3c.dom.Element;
 
+import java.io.IOException;
+
 /**
  * Creates a {@link NumericRangeFilter}. The table below specifies the required
  * attributes and the defaults if optional attributes are omitted. For more
@@ -84,80 +84,79 @@ import org.w3c.dom.Element;
  * <td>4</td>
  * </tr>
  * </table>
- * <p>
+ * <p/>
  * If an error occurs parsing the supplied <tt>lowerTerm</tt> or
  * <tt>upperTerm</tt> into the numeric type specified by <tt>type</tt>, then the
  * error will be silently ignored and the resulting filter will not match any
  * documents.
  */
 public class NumericRangeFilterBuilder implements FilterBuilder {
-	private static final NoMatchFilter NO_MATCH_FILTER = new NoMatchFilter();
-
-	private boolean strictMode = false;
-
-	/**
-	 * Specifies how this {@link NumericRangeFilterBuilder} will handle errors.
-	 * <p>
-	 * If this is set to true, {@link #getFilter(Element)} will throw a
-	 * {@link ParserException} if it is unable to parse the lowerTerm or upperTerm
-	 * into the appropriate numeric type. If this is set to false, then this
-	 * exception will be silently ignored and the resulting filter will not match
-	 * any documents.
-	 * <p>
-	 * Defaults to false.
-	 * 
-	 * @param strictMode
-	 */
-	public void setStrictMode(boolean strictMode) {
-		this.strictMode = strictMode;
-	}
-
-	public Filter getFilter(Element e) throws ParserException {
-		String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
-		String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
-		String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
-		boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
-		boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
-		int precisionStep = DOMUtils.getAttribute(e, "precisionStep",  NumericUtils.PRECISION_STEP_DEFAULT);
-
-		String type = DOMUtils.getAttribute(e, "type", "int");
-		try {
-			Filter filter;
-			if (type.equalsIgnoreCase("int")) {
-				filter = NumericRangeFilter.newIntRange(field, precisionStep, Integer
-						.valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else if (type.equalsIgnoreCase("long")) {
-				filter = NumericRangeFilter.newLongRange(field, precisionStep, Long
-						.valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else if (type.equalsIgnoreCase("double")) {
-				filter = NumericRangeFilter.newDoubleRange(field, precisionStep, Double
-						.valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else if (type.equalsIgnoreCase("float")) {
-				filter = NumericRangeFilter.newFloatRange(field, precisionStep, Float
-						.valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else {
-				throw new ParserException(
-						"type attribute must be one of: [long, int, double, float]");
-			}
-			return filter;
-		} catch (NumberFormatException nfe) {
-			if (strictMode) {
-				throw new ParserException(
-						"Could not parse lowerTerm or upperTerm into a number", nfe);
-			}
-			return NO_MATCH_FILTER;
-		}
-	}
+  
+  private static final NoMatchFilter NO_MATCH_FILTER = new NoMatchFilter();
 
-	static class NoMatchFilter extends Filter {
+  private boolean strictMode = false;
 
-		@Override
-		public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
-			return null;
+  /**
+   * Specifies how this {@link NumericRangeFilterBuilder} will handle errors.
+   * <p/>
+   * If this is set to true, {@link #getFilter(Element)} will throw a
+   * {@link ParserException} if it is unable to parse the lowerTerm or upperTerm
+   * into the appropriate numeric type. If this is set to false, then this
+   * exception will be silently ignored and the resulting filter will not match
+   * any documents.
+   * <p/>
+   * Defaults to false.
+   *
+   * @param strictMode
+   */
+  public void setStrictMode(boolean strictMode) {
+    this.strictMode = strictMode;
+  }
+
+  public Filter getFilter(Element e) throws ParserException {
+    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
+    String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
+    boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
+    boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
+    int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
+
+    String type = DOMUtils.getAttribute(e, "type", "int");
+    try {
+      Filter filter;
+      if (type.equalsIgnoreCase("int")) {
+        filter = NumericRangeFilter.newIntRange(field, precisionStep, Integer
+            .valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else if (type.equalsIgnoreCase("long")) {
+        filter = NumericRangeFilter.newLongRange(field, precisionStep, Long
+            .valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else if (type.equalsIgnoreCase("double")) {
+        filter = NumericRangeFilter.newDoubleRange(field, precisionStep, Double
+            .valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else if (type.equalsIgnoreCase("float")) {
+        filter = NumericRangeFilter.newFloatRange(field, precisionStep, Float
+            .valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else {
+        throw new ParserException("type attribute must be one of: [long, int, double, float]");
+      }
+      return filter;
+    } catch (NumberFormatException nfe) {
+      if (strictMode) {
+        throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
+      }
+      return NO_MATCH_FILTER;
+    }
+  }
+
+  static class NoMatchFilter extends Filter {
+
+    @Override
+    public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
+      return null;
 		}
 
 	}

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -80,48 +80,46 @@ import org.w3c.dom.Element;
  * <td>4</td>
  * </tr>
  * </table>
- * <p>
+ * <p/>
  * A {@link ParserException} will be thrown if an error occurs parsing the
  * supplied <tt>lowerTerm</tt> or <tt>upperTerm</tt> into the numeric type
  * specified by <tt>type</tt>.
  */
 public class NumericRangeQueryBuilder implements QueryBuilder {
 
-	public Query getQuery(Element e) throws ParserException {
-		String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
-		String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
-		String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
-		boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
-		boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
-		int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
+  public Query getQuery(Element e) throws ParserException {
+    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
+    String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
+    boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
+    boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
+    int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
 
-		String type = DOMUtils.getAttribute(e, "type", "int");
-		try {
-			Query filter;
-			if (type.equalsIgnoreCase("int")) {
-				filter = NumericRangeQuery.newIntRange(field, precisionStep, Integer
-						.valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else if (type.equalsIgnoreCase("long")) {
-				filter = NumericRangeQuery.newLongRange(field, precisionStep, Long
-						.valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else if (type.equalsIgnoreCase("double")) {
-				filter = NumericRangeQuery.newDoubleRange(field, precisionStep, Double
-						.valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else if (type.equalsIgnoreCase("float")) {
-				filter = NumericRangeQuery.newFloatRange(field, precisionStep, Float
-						.valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
-						upperInclusive);
-			} else {
-				throw new ParserException(
-						"type attribute must be one of: [long, int, double, float]");
-			}
-			return filter;
-		} catch (NumberFormatException nfe) {
-			throw new ParserException(
-					"Could not parse lowerTerm or upperTerm into a number", nfe);
-		}
-	}
+    String type = DOMUtils.getAttribute(e, "type", "int");
+    try {
+      Query filter;
+      if (type.equalsIgnoreCase("int")) {
+        filter = NumericRangeQuery.newIntRange(field, precisionStep, Integer
+            .valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else if (type.equalsIgnoreCase("long")) {
+        filter = NumericRangeQuery.newLongRange(field, precisionStep, Long
+            .valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else if (type.equalsIgnoreCase("double")) {
+        filter = NumericRangeQuery.newDoubleRange(field, precisionStep, Double
+            .valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else if (type.equalsIgnoreCase("float")) {
+        filter = NumericRangeQuery.newFloatRange(field, precisionStep, Float
+            .valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
+            upperInclusive);
+      } else {
+        throw new ParserException("type attribute must be one of: [long, int, double, float]");
+      }
+      return filter;
+    } catch (NumberFormatException nfe) {
+      throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
+    }
+  }
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java Tue Aug 16 02:11:07 2011
@@ -28,20 +28,18 @@ import org.w3c.dom.Element;
 
 
 /**
- * 
+ *
  */
 public class RangeFilterBuilder implements FilterBuilder {
 
+  public Filter getFilter(Element e) throws ParserException {
+    String fieldName = DOMUtils.getAttributeWithInheritance(e, "fieldName");
 
-	public Filter getFilter(Element e) throws ParserException {
-		
-		String fieldName=DOMUtils.getAttributeWithInheritance(e,"fieldName");
-		
-		String lowerTerm=e.getAttribute("lowerTerm");
-		String upperTerm=e.getAttribute("upperTerm");
-		boolean includeLower=DOMUtils.getAttribute(e,"includeLower",true);
-		boolean includeUpper=DOMUtils.getAttribute(e,"includeUpper",true);
-		return TermRangeFilter.newStringRange(fieldName,lowerTerm,upperTerm,includeLower,includeUpper);
-	}
+    String lowerTerm = e.getAttribute("lowerTerm");
+    String upperTerm = e.getAttribute("upperTerm");
+    boolean includeLower = DOMUtils.getAttribute(e, "includeLower", true);
+    boolean includeUpper = DOMUtils.getAttribute(e, "includeUpper", true);
+    return TermRangeFilter.newStringRange(fieldName, lowerTerm, upperTerm, includeLower, includeUpper);
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java Tue Aug 16 02:11:07 2011
@@ -21,13 +21,12 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public abstract class SpanBuilderBase implements SpanQueryBuilder
-{
-	public Query getQuery(Element e) throws ParserException
-	{
-		return getSpanQuery(e);
-	}
+public abstract class SpanBuilderBase implements SpanQueryBuilder {
+  
+  public Query getQuery(Element e) throws ParserException {
+    return getSpanQuery(e);
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java Tue Aug 16 02:11:07 2011
@@ -23,28 +23,25 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public class SpanFirstBuilder extends SpanBuilderBase
-{
-    SpanQueryBuilder factory;
-    
-    public SpanFirstBuilder(SpanQueryBuilder factory)
-    {
-        super();
-        this.factory = factory;
-    }
-
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
-	    int end=DOMUtils.getAttribute(e,"end",1);
-	    Element child=DOMUtils.getFirstChildElement(e);
-	    SpanQuery q=factory.getSpanQuery(child);
-	    
-		SpanFirstQuery sfq = new SpanFirstQuery(q,end);
-		
-		sfq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-		return sfq;
-	}
+public class SpanFirstBuilder extends SpanBuilderBase {
+
+  private final SpanQueryBuilder factory;
+
+  public SpanFirstBuilder(SpanQueryBuilder factory) {
+    this.factory = factory;
+  }
+
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    int end = DOMUtils.getAttribute(e, "end", 1);
+    Element child = DOMUtils.getFirstChildElement(e);
+    SpanQuery q = factory.getSpanQuery(child);
+
+    SpanFirstQuery sfq = new SpanFirstQuery(q, end);
+
+    sfq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return sfq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java Tue Aug 16 02:11:07 2011
@@ -1,13 +1,14 @@
 package org.apache.lucene.xmlparser.builders;
 
-import java.util.ArrayList;
-
 import org.apache.lucene.search.spans.SpanNearQuery;
 import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.xmlparser.DOMUtils;
 import org.apache.lucene.xmlparser.ParserException;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+
+import java.util.ArrayList;
+import java.util.List;
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -26,32 +27,28 @@ import org.w3c.dom.Node;
  */
 
 /**
- * 
+ *
  */
-public class SpanNearBuilder extends SpanBuilderBase
-{
-	SpanQueryBuilder factory;
-	public SpanNearBuilder(SpanQueryBuilder factory)
-	{
-		this.factory=factory;
-	}
-	
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
- 		String slopString=DOMUtils.getAttributeOrFail(e,"slop");
-  		int slop=Integer.parseInt(slopString);
-		boolean inOrder=DOMUtils.getAttribute(e,"inOrder",false);
-		ArrayList<SpanQuery> spans=new ArrayList<SpanQuery>();
-		for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling())
-		{
-				if (kid.getNodeType() == Node.ELEMENT_NODE) 
-				{
-					spans.add(factory.getSpanQuery((Element) kid));
-				}
-		}
-		SpanQuery[] spanQueries= spans.toArray(new SpanQuery[spans.size()]);
-		SpanNearQuery snq=new SpanNearQuery(spanQueries,slop,inOrder);
-		return snq;
-	}
+public class SpanNearBuilder extends SpanBuilderBase {
+
+  private final SpanQueryBuilder factory;
+
+  public SpanNearBuilder(SpanQueryBuilder factory) {
+    this.factory = factory;
+  }
+
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    String slopString = DOMUtils.getAttributeOrFail(e, "slop");
+    int slop = Integer.parseInt(slopString);
+    boolean inOrder = DOMUtils.getAttribute(e, "inOrder", false);
+    List<SpanQuery> spans = new ArrayList<SpanQuery>();
+    for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+      if (kid.getNodeType() == Node.ELEMENT_NODE) {
+        spans.add(factory.getSpanQuery((Element) kid));
+      }
+    }
+    SpanQuery[] spanQueries = spans.toArray(new SpanQuery[spans.size()]);
+    return new SpanNearQuery(spanQueries, slop, inOrder);
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java Tue Aug 16 02:11:07 2011
@@ -23,36 +23,33 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public class SpanNotBuilder extends SpanBuilderBase
-{
-    
-    SpanQueryBuilder factory;    
-
-    /**
-     * @param factory
-     */
-    public SpanNotBuilder(SpanQueryBuilder factory)
-    {
-        super();
-        this.factory = factory;
-    }
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
-  	    Element includeElem=DOMUtils.getChildByTagOrFail(e,"Include");
-        includeElem=DOMUtils.getFirstChildOrFail(includeElem);
-
-  	    Element excludeElem=DOMUtils.getChildByTagOrFail(e,"Exclude");
-        excludeElem=DOMUtils.getFirstChildOrFail(excludeElem);
-
-  	    SpanQuery include=factory.getSpanQuery(includeElem);
-  	    SpanQuery exclude=factory.getSpanQuery(excludeElem);
-	    
-		SpanNotQuery snq = new SpanNotQuery(include,exclude);
-		
-		snq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-		return snq;
-	}
+public class SpanNotBuilder extends SpanBuilderBase {
+
+  private final SpanQueryBuilder factory;
+
+  /**
+   * @param factory
+   */
+  public SpanNotBuilder(SpanQueryBuilder factory) {
+    this.factory = factory;
+  }
+
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    Element includeElem = DOMUtils.getChildByTagOrFail(e, "Include");
+    includeElem = DOMUtils.getFirstChildOrFail(includeElem);
+
+    Element excludeElem = DOMUtils.getChildByTagOrFail(e, "Exclude");
+    excludeElem = DOMUtils.getFirstChildOrFail(excludeElem);
+
+    SpanQuery include = factory.getSpanQuery(includeElem);
+    SpanQuery exclude = factory.getSpanQuery(excludeElem);
+
+    SpanNotQuery snq = new SpanNotQuery(include, exclude);
+
+    snq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return snq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java Tue Aug 16 02:11:07 2011
@@ -1,13 +1,14 @@
 package org.apache.lucene.xmlparser.builders;
 
-import java.util.ArrayList;
-
 import org.apache.lucene.search.spans.SpanOrQuery;
 import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.xmlparser.DOMUtils;
 import org.apache.lucene.xmlparser.ParserException;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+
+import java.util.ArrayList;
+import java.util.List;
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -26,34 +27,28 @@ import org.w3c.dom.Node;
  */
 
 /**
- * 
+ *
  */
-public class SpanOrBuilder extends SpanBuilderBase
-{
-    
-    SpanQueryBuilder factory;
-    
-    public SpanOrBuilder(SpanQueryBuilder factory)
-    {
-        super();
-        this.factory = factory;
+public class SpanOrBuilder extends SpanBuilderBase {
+
+  private final SpanQueryBuilder factory;
+
+  public SpanOrBuilder(SpanQueryBuilder factory) {
+    this.factory = factory;
+  }
+
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    List<SpanQuery> clausesList = new ArrayList<SpanQuery>();
+    for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+      if (kid.getNodeType() == Node.ELEMENT_NODE) {
+        SpanQuery clause = factory.getSpanQuery((Element) kid);
+        clausesList.add(clause);
+      }
     }
-    
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
-	    ArrayList<SpanQuery> clausesList=new ArrayList<SpanQuery>();
-		for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling())
-		{
-			if (kid.getNodeType() == Node.ELEMENT_NODE) 
-			{
-				SpanQuery clause=factory.getSpanQuery((Element) kid);
-				clausesList.add(clause);				
-			}
-		}	    
-		SpanQuery[] clauses= clausesList.toArray(new SpanQuery[clausesList.size()]);
-		SpanOrQuery soq = new SpanOrQuery(clauses);		
-		soq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-		return soq;
-	}
+    SpanQuery[] clauses = clausesList.toArray(new SpanQuery[clausesList.size()]);
+    SpanOrQuery soq = new SpanOrQuery(clauses);
+    soq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return soq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java Tue Aug 16 02:11:07 2011
@@ -1,9 +1,5 @@
 package org.apache.lucene.xmlparser.builders;
 
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
@@ -15,6 +11,11 @@ import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.xmlparser.DOMUtils;
 import org.apache.lucene.xmlparser.ParserException;
 import org.w3c.dom.Element;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -33,48 +34,43 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public class SpanOrTermsBuilder extends SpanBuilderBase
-{
-    Analyzer analyzer;
-    
-    
-    /**
-     * @param analyzer
-     */
-    public SpanOrTermsBuilder(Analyzer analyzer)
-    {
-        super();
-        this.analyzer = analyzer;
-    }
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
- 		String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- 		String value=DOMUtils.getNonBlankTextOrFail(e);
-		
-		try
-		{
-			ArrayList<SpanQuery> clausesList=new ArrayList<SpanQuery>();
-			TokenStream ts=analyzer.reusableTokenStream(fieldName,new StringReader(value));
-			TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
+public class SpanOrTermsBuilder extends SpanBuilderBase {
+
+  private final Analyzer analyzer;
+
+  /**
+   * @param analyzer
+   */
+  public SpanOrTermsBuilder(Analyzer analyzer) {
+    this.analyzer = analyzer;
+  }
+
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    String value = DOMUtils.getNonBlankTextOrFail(e);
+
+    try {
+      List<SpanQuery> clausesList = new ArrayList<SpanQuery>();
+      TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(value));
+      TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
       BytesRef bytes = termAtt.getBytesRef();
       ts.reset();
-	    while (ts.incrementToken()) {
-	        termAtt.fillBytesRef();
-			    SpanTermQuery stq=new SpanTermQuery(new Term(fieldName, new BytesRef(bytes)));
-			    clausesList.add(stq);
-			}
-	    ts.end();
-	    ts.close();
-			SpanOrQuery soq=new SpanOrQuery(clausesList.toArray(new SpanQuery[clausesList.size()]));
-			soq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-			return soq;
-		}
-		catch(IOException ioe)
-		{
-		    throw new ParserException("IOException parsing value:"+value);
-		}
-	}
+      while (ts.incrementToken()) {
+        termAtt.fillBytesRef();
+        SpanTermQuery stq = new SpanTermQuery(new Term(fieldName, new BytesRef(bytes)));
+        clausesList.add(stq);
+      }
+      ts.end();
+      ts.close();
+      SpanOrQuery soq = new SpanOrQuery(clausesList.toArray(new SpanQuery[clausesList.size()]));
+      soq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+      return soq;
+    }
+    catch (IOException ioe) {
+      throw new ParserException("IOException parsing value:" + value);
+    }
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -20,9 +20,7 @@ import org.apache.lucene.xmlparser.Parse
 import org.apache.lucene.xmlparser.QueryBuilder;
 import org.w3c.dom.Element;
 
-
-public interface SpanQueryBuilder extends QueryBuilder{
+public interface SpanQueryBuilder extends QueryBuilder {
 	
 	public SpanQuery getSpanQuery(Element e) throws ParserException;
-
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java Tue Aug 16 02:11:07 2011
@@ -1,11 +1,12 @@
 package org.apache.lucene.xmlparser.builders;
 
-import java.util.HashMap;
-
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.xmlparser.ParserException;
 import org.w3c.dom.Element;
+
+import java.util.HashMap;
+import java.util.Map;
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -24,27 +25,26 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
 public class SpanQueryBuilderFactory implements SpanQueryBuilder {
 
-	HashMap<String,SpanQueryBuilder> builders=new HashMap<String,SpanQueryBuilder>();
-	
-	public Query getQuery(Element e) throws ParserException {
-		return getSpanQuery(e);
-	}
-	public void addBuilder(String nodeName,SpanQueryBuilder builder)
-	{
-		builders.put(nodeName,builder);
-	}
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
-		SpanQueryBuilder builder= builders.get(e.getNodeName());
-		if(builder==null)
-		{
-			throw new ParserException("No SpanQueryObjectBuilder defined for node "+e.getNodeName()); 
-		}
-		return builder.getSpanQuery(e); 
-	}
+  private final Map<String, SpanQueryBuilder> builders = new HashMap<String, SpanQueryBuilder>();
+
+  public Query getQuery(Element e) throws ParserException {
+    return getSpanQuery(e);
+  }
+
+  public void addBuilder(String nodeName, SpanQueryBuilder builder) {
+    builders.put(nodeName, builder);
+  }
+
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    SpanQueryBuilder builder = builders.get(e.getNodeName());
+    if (builder == null) {
+      throw new ParserException("No SpanQueryObjectBuilder defined for node " + e.getNodeName());
+    }
+    return builder.getSpanQuery(e);
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java Tue Aug 16 02:11:07 2011
@@ -24,20 +24,17 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public class SpanTermBuilder extends SpanBuilderBase
-{
+public class SpanTermBuilder extends SpanBuilderBase {
 
-	public SpanQuery getSpanQuery(Element e) throws ParserException
-	{
- 		String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- 		String value=DOMUtils.getNonBlankTextOrFail(e);
-  		SpanTermQuery stq = new SpanTermQuery(new Term(fieldName,value));
-  		
-  		stq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-		return stq;		
-		
-	}
+  public SpanQuery getSpanQuery(Element e) throws ParserException {
+    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    String value = DOMUtils.getNonBlankTextOrFail(e);
+    SpanTermQuery stq = new SpanTermQuery(new Term(fieldName, value));
+
+    stq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return stq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -25,19 +25,16 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
 public class TermQueryBuilder implements QueryBuilder {
 
-	public Query getQuery(Element e) throws ParserException {
-		
-        String field=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- 		String value=DOMUtils.getNonBlankTextOrFail(e);
-  		TermQuery tq = new TermQuery(new Term(field,value));
-  		tq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
-  		return tq;
-		
-	}
+  public Query getQuery(Element e) throws ParserException {
+    String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    String value = DOMUtils.getNonBlankTextOrFail(e);
+    TermQuery tq = new TermQuery(new Term(field, value));
+    tq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return tq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java Tue Aug 16 02:11:07 2011
@@ -1,8 +1,5 @@
 package org.apache.lucene.xmlparser.builders;
 
-import java.io.IOException;
-import java.io.StringReader;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
@@ -15,6 +12,9 @@ import org.apache.lucene.xmlparser.Filte
 import org.apache.lucene.xmlparser.ParserException;
 import org.w3c.dom.Element;
 
+import java.io.IOException;
+import java.io.StringReader;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -33,51 +33,46 @@ import org.w3c.dom.Element;
  */
 
 /**
- * 
+ *
  */
-public class TermsFilterBuilder implements FilterBuilder
-{
-	Analyzer analyzer;
-	
-	/**
-	 * @param analyzer
-	 */
-	public TermsFilterBuilder(Analyzer analyzer)
-	{
-		this.analyzer = analyzer;
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.apache.lucene.xmlparser.FilterBuilder#process(org.w3c.dom.Element)
-	 */
-	public Filter getFilter(Element e) throws ParserException
-	{
-		TermsFilter tf = new TermsFilter();
-		String text = DOMUtils.getNonBlankTextOrFail(e);
-		String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
-    
-		try
-		{
-	    TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
-	    TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
-			Term term = null;
+public class TermsFilterBuilder implements FilterBuilder {
+
+  private final Analyzer analyzer;
+
+  /**
+   * @param analyzer
+   */
+  public TermsFilterBuilder(Analyzer analyzer) {
+    this.analyzer = analyzer;
+  }
+
+  /*
+    * (non-Javadoc)
+    *
+    * @see org.apache.lucene.xmlparser.FilterBuilder#process(org.w3c.dom.Element)
+    */
+  public Filter getFilter(Element e) throws ParserException {
+    TermsFilter tf = new TermsFilter();
+    String text = DOMUtils.getNonBlankTextOrFail(e);
+    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+
+    try {
+      TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
+      TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
+      Term term = null;
       BytesRef bytes = termAtt.getBytesRef();
       ts.reset();
-	      while (ts.incrementToken()) {
-	        termAtt.fillBytesRef();
-				term = new Term(fieldName, new BytesRef(bytes));
-				tf.addTerm(term);
-			}
-	    ts.end();
-	    ts.close();
-		} 
-		catch (IOException ioe)
-		{
-			throw new RuntimeException("Error constructing terms from index:"
-					+ ioe);
-		}
-		return tf;
-	}
+      while (ts.incrementToken()) {
+        termAtt.fillBytesRef();
+        term = new Term(fieldName, new BytesRef(bytes));
+        tf.addTerm(term);
+      }
+      ts.end();
+      ts.close();
+    }
+    catch (IOException ioe) {
+      throw new RuntimeException("Error constructing terms from index:" + ioe);
+    }
+    return tf;
+  }
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -1,8 +1,5 @@
 package org.apache.lucene.xmlparser.builders;
 
-import java.io.IOException;
-import java.io.StringReader;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
@@ -17,6 +14,9 @@ import org.apache.lucene.xmlparser.Parse
 import org.apache.lucene.xmlparser.QueryBuilder;
 import org.w3c.dom.Element;
 
+import java.io.IOException;
+import java.io.StringReader;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -33,52 +33,44 @@ import org.w3c.dom.Element;
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 /**
  * Builds a BooleanQuery from all of the terms found in the XML element using the choice of analyzer
  */
 public class TermsQueryBuilder implements QueryBuilder {
 
-	Analyzer analyzer;
-
-		
-	public TermsQueryBuilder(Analyzer analyzer)
-	{
-		this.analyzer = analyzer;
-	}
-
-
+  private final Analyzer analyzer;
 
-	public Query getQuery(Element e) throws ParserException {
-		
-        String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- 		String text=DOMUtils.getNonBlankTextOrFail(e);
- 		
-		BooleanQuery bq=new BooleanQuery(DOMUtils.getAttribute(e,"disableCoord",false));
-		bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e,"minimumNumberShouldMatch",0));
-		try
-		{
-	    TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
-		  TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
-			Term term = null;
+  public TermsQueryBuilder(Analyzer analyzer) {
+    this.analyzer = analyzer;
+  }
+
+  public Query getQuery(Element e) throws ParserException {
+    String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+    String text = DOMUtils.getNonBlankTextOrFail(e);
+
+    BooleanQuery bq = new BooleanQuery(DOMUtils.getAttribute(e, "disableCoord", false));
+    bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e, "minimumNumberShouldMatch", 0));
+    try {
+      TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
+      TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
+      Term term = null;
       BytesRef bytes = termAtt.getBytesRef();
       ts.reset();
-			while (ts.incrementToken()) {
+      while (ts.incrementToken()) {
         termAtt.fillBytesRef();
         term = new Term(fieldName, new BytesRef(bytes));
-				bq.add(new BooleanClause(new TermQuery(term),BooleanClause.Occur.SHOULD));
-			}
-			ts.end();
-			ts.close();
-		} 
-		catch (IOException ioe)
-		{
-			throw new RuntimeException("Error constructing terms from index:"
-					+ ioe);
-		}
-  		bq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
-  		return bq;
-		
-	}
+        bq.add(new BooleanClause(new TermQuery(term), BooleanClause.Occur.SHOULD));
+      }
+      ts.end();
+      ts.close();
+    }
+    catch (IOException ioe) {
+      throw new RuntimeException("Error constructing terms from index:" + ioe);
+    }
+
+    bq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+    return bq;
+  }
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java Tue Aug 16 02:11:07 2011
@@ -4,11 +4,11 @@ import org.apache.lucene.analysis.Analyz
 import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.Query;
+import org.apache.lucene.util.Version;
 import org.apache.lucene.xmlparser.DOMUtils;
 import org.apache.lucene.xmlparser.ParserException;
 import org.apache.lucene.xmlparser.QueryBuilder;
 import org.w3c.dom.Element;
-import org.apache.lucene.util.Version;
 
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -35,62 +35,59 @@ import org.apache.lucene.util.Version;
  */
 public class UserInputQueryBuilder implements QueryBuilder {
 
-	QueryParser unSafeParser;
-	private Analyzer analyzer;
-	private String defaultField;
-	
-	/**
-	 * This constructor has the disadvantage of not being able to change choice of default field name
-	 * @param parser thread un-safe query parser
-	 */
-	public UserInputQueryBuilder(QueryParser parser) {
-		this.unSafeParser = parser;
-	}
+  private QueryParser unSafeParser;
+  private Analyzer analyzer;
+  private String defaultField;
 
-	public UserInputQueryBuilder(String defaultField, Analyzer analyzer) {
-		this.analyzer = analyzer;
-		this.defaultField = defaultField;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
-	 */
-	public Query getQuery(Element e) throws ParserException {
-		String text=DOMUtils.getText(e);
-		try {
-			Query q = null;
-			if(unSafeParser!=null)
-			{
-				//synchronize on unsafe parser
-				synchronized (unSafeParser)
-				{
-					q = unSafeParser.parse(text);
-				}
-			}
-			else
-			{
-				String fieldName=DOMUtils.getAttribute(e, "fieldName", defaultField);
-				//Create new parser
-				QueryParser parser=createQueryParser(fieldName, analyzer);
-				q = parser.parse(text);				
-			}
-			// use the boost of the original query here, too and multiply (which may be != 1.0f):
-			q.setBoost(q.getBoost()*DOMUtils.getAttribute(e,"boost",1.0f));
-			return q;
-		} catch (ParseException e1) {
-			throw new ParserException(e1.getMessage());
-		}
-	}
-	
-	/**
-	 * Method to create a QueryParser - designed to be overridden
-	 * @param fieldName
-	 * @param analyzer
-	 * @return QueryParser
-	 */
-	protected QueryParser createQueryParser(String fieldName, Analyzer analyzer)
-	{
-		return new QueryParser(Version.LUCENE_CURRENT, fieldName,analyzer);
+  /**
+   * This constructor has the disadvantage of not being able to change choice of default field name
+   *
+   * @param parser thread un-safe query parser
+   */
+  public UserInputQueryBuilder(QueryParser parser) {
+    this.unSafeParser = parser;
+  }
+
+  public UserInputQueryBuilder(String defaultField, Analyzer analyzer) {
+    this.analyzer = analyzer;
+    this.defaultField = defaultField;
+  }
+
+  /* (non-Javadoc)
+    * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+    */
+
+  public Query getQuery(Element e) throws ParserException {
+    String text = DOMUtils.getText(e);
+    try {
+      Query q = null;
+      if (unSafeParser != null) {
+        //synchronize on unsafe parser
+        synchronized (unSafeParser) {
+          q = unSafeParser.parse(text);
+        }
+      } else {
+        String fieldName = DOMUtils.getAttribute(e, "fieldName", defaultField);
+        //Create new parser
+        QueryParser parser = createQueryParser(fieldName, analyzer);
+        q = parser.parse(text);
+      }
+      q.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+      return q;
+    } catch (ParseException e1) {
+      throw new ParserException(e1.getMessage());
+    }
+  }
+
+  /**
+   * Method to create a QueryParser - designed to be overridden
+   *
+   * @param fieldName
+   * @param analyzer
+   * @return QueryParser
+   */
+  protected QueryParser createQueryParser(String fieldName, Analyzer analyzer) {
+    return new QueryParser(Version.LUCENE_CURRENT, fieldName, analyzer);
 	}
 
 }

Modified: lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java?rev=1158088&r1=1158087&r2=1158088&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java (original)
+++ lucene/dev/trunk/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java Tue Aug 16 02:11:07 2011
@@ -1,10 +1,5 @@
 package org.apache.lucene.xmlparser;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.analysis.MockTokenFilter;
@@ -18,11 +13,17 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Version;
 import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.Version;
 import org.junit.AfterClass;
 import org.junit.Assume;
 import org.junit.BeforeClass;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -30,9 +31,9 @@ import org.junit.BeforeClass;
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -41,201 +42,185 @@ import org.junit.BeforeClass;
  */
 
 public class TestParser extends LuceneTestCase {
-	private static CoreParser builder;
-	private static Directory dir;
-	private static IndexReader reader;
-	private static IndexSearcher searcher;
-
-	@BeforeClass
-	public static void beforeClass() throws Exception {
-	  // TODO: rewrite test (this needs to set QueryParser.enablePositionIncrements, too, for work with CURRENT):
-	  Analyzer analyzer=new MockAnalyzer(random, MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET, false); 
+
+  private static CoreParser builder;
+  private static Directory dir;
+  private static IndexReader reader;
+  private static IndexSearcher searcher;
+
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    // TODO: rewrite test (this needs to set QueryParser.enablePositionIncrements, too, for work with CURRENT):
+    Analyzer analyzer = new MockAnalyzer(random, MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET, false);
     //initialize the parser
-	  builder=new CorePlusExtensionsParser("contents",analyzer);
-		
-			BufferedReader d = new BufferedReader(new InputStreamReader(TestParser.class.getResourceAsStream("reuters21578.txt"))); 
-			dir=newDirectory();
-			IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(Version.LUCENE_40, analyzer));
-			String line = d.readLine();		
-			while(line!=null)
-			{
-				int endOfDate=line.indexOf('\t');
-				String date=line.substring(0,endOfDate).trim();
-				String content=line.substring(endOfDate).trim();
-				org.apache.lucene.document.Document doc =new org.apache.lucene.document.Document();
-				doc.add(newField("date",date,Field.Store.YES,Field.Index.ANALYZED));
-				doc.add(newField("contents",content,Field.Store.YES,Field.Index.ANALYZED));
-				NumericField numericField = new NumericField("date2");
-				numericField.setIntValue(Integer.valueOf(date));
-				doc.add(numericField);
-				writer.addDocument(doc);
-				line=d.readLine();
-			}			
-			d.close();
-      writer.close();
-		reader=IndexReader.open(dir, true);
-		searcher=newSearcher(reader);
-		
-	}
-	
-	
-	
-	
-	@AfterClass
-	public static void afterClass() throws Exception {
-		reader.close();
-		searcher.close();
-		dir.close();
-		reader = null;
-		searcher = null;
-		dir = null;
-		builder = null;
-	}
-	
-	public void testSimpleXML() throws ParserException, IOException
-	{
-			Query q=parse("TermQuery.xml");
-			dumpResults("TermQuery", q, 5);
-	}
-	public void testSimpleTermsQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("TermsQuery.xml");
-			dumpResults("TermsQuery", q, 5);
-	}
-	public void testBooleanQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("BooleanQuery.xml");
-			dumpResults("BooleanQuery", q, 5);
-	}
-	public void testRangeFilterQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("RangeFilterQuery.xml");
-			dumpResults("RangeFilter", q, 5);
-	}
-	public void testUserQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("UserInputQuery.xml");
-			dumpResults("UserInput with Filter", q, 5);
-	}
-	
-	public void testCustomFieldUserQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("UserInputQueryCustomField.xml");
-			assertEquals(20.0f, q.getBoost());
-			int h = searcher.search(q, null, 1000).totalHits;
-			assertEquals("UserInputQueryCustomField should produce 0 result ", 0,h);
-	}
-	
-	public void testLikeThisQueryXML() throws Exception
-	{
-			Query q=parse("LikeThisQuery.xml");
-			dumpResults("like this", q, 5);
-	}
-	public void testBoostingQueryXML() throws Exception
-	{
-			Query q=parse("BoostingQuery.xml");
-			dumpResults("boosting ",q, 5);
-	}
-	public void testFuzzyLikeThisQueryXML() throws Exception
-	{
-			Query q=parse("FuzzyLikeThisQuery.xml");
-			//show rewritten fuzzyLikeThisQuery - see what is being matched on
-			if(VERBOSE)
-			{
-				System.out.println(q.rewrite(reader));
-			}
-			dumpResults("FuzzyLikeThis", q, 5);
-	}
-	public void testTermsFilterXML() throws Exception
-	{
-			Query q=parse("TermsFilterQuery.xml");
-			dumpResults("Terms Filter",q, 5);
-	}
-  public void testBoostingTermQueryXML() throws Exception
-	{
-			Query q=parse("BoostingTermQuery.xml");
-			dumpResults("BoostingTermQuery",q, 5);
-	}
-  public void testSpanTermXML() throws Exception
-	{
-			Query q=parse("SpanQuery.xml");
-			dumpResults("Span Query",q, 5);
-	}
-	public void testConstantScoreQueryXML() throws Exception
-	{
-			Query q=parse("ConstantScoreQuery.xml");
-			dumpResults("ConstantScoreQuery",q, 5);
-	}
-	public void testMatchAllDocsPlusFilterXML() throws ParserException, IOException
-	{
-			Query q=parse("MatchAllDocsQuery.xml");
-			dumpResults("MatchAllDocsQuery with range filter", q, 5);
-	}
-	public void testBooleanFilterXML() throws ParserException, IOException
-	{
-			Query q=parse("BooleanFilter.xml");
-			dumpResults("Boolean filter", q, 5);
-	}
-	public void testNestedBooleanQuery() throws ParserException, IOException
-	{
-			Query q=parse("NestedBooleanQuery.xml");
-			dumpResults("Nested Boolean query", q, 5);
-	}
-	public void testCachedFilterXML() throws ParserException, IOException
-	{
-			Query q=parse("CachedFilter.xml");
-			dumpResults("Cached filter", q, 5);
-	}
-	public void testDuplicateFilterQueryXML() throws ParserException, IOException
-	{
-      Assume.assumeTrue(searcher.getIndexReader().getSequentialSubReaders() == null || 
-                        searcher.getIndexReader().getSequentialSubReaders().length == 1);
-			Query q=parse("DuplicateFilterQuery.xml");
-			int h = searcher.search(q, null, 1000).totalHits;
-			assertEquals("DuplicateFilterQuery should produce 1 result ", 1,h);
-	}
-	
-	public void testNumericRangeFilterQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("NumericRangeFilterQuery.xml");
-			dumpResults("NumericRangeFilter", q, 5);
-	}
-	
-	public void testNumericRangeQueryQueryXML() throws ParserException, IOException
-	{
-			Query q=parse("NumericRangeQueryQuery.xml");
-			dumpResults("NumericRangeQuery", q, 5);
-	}
-	
-
-
-	//================= Helper methods ===================================
-	private Query parse(String xmlFileName) throws ParserException, IOException
-	{
-		InputStream xmlStream=TestParser.class.getResourceAsStream(xmlFileName);
-		Query result=builder.parse(xmlStream);
-		xmlStream.close();
-		return result;
-	}
-	private void dumpResults(String qType,Query q, int numDocs) throws IOException
-	{
-                if (VERBOSE) {
-                  System.out.println("TEST: query=" + q);
-                }
-                TopDocs hits = searcher.search(q, null, numDocs);
-		assertTrue(qType +" should produce results ", hits.totalHits>0);
-		if(VERBOSE)
-		{
-			System.out.println("========="+qType+"============");
-			ScoreDoc[] scoreDocs = hits.scoreDocs;
-			for(int i=0;i<Math.min(numDocs,hits.totalHits);i++)
-			{
-				org.apache.lucene.document.Document ldoc=searcher.doc(scoreDocs[i].doc);
-				System.out.println("["+ldoc.get("date")+"]"+ldoc.get("contents"));
-			}
-			System.out.println();
-		}
-	}
-	
+    builder = new CorePlusExtensionsParser("contents", analyzer);
 
+    BufferedReader d = new BufferedReader(new InputStreamReader(TestParser.class.getResourceAsStream("reuters21578.txt")));
+    dir = newDirectory();
+    IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(Version.LUCENE_40, analyzer));
+    String line = d.readLine();
+    while (line != null) {
+      int endOfDate = line.indexOf('\t');
+      String date = line.substring(0, endOfDate).trim();
+      String content = line.substring(endOfDate).trim();
+      org.apache.lucene.document.Document doc = new org.apache.lucene.document.Document();
+      doc.add(newField("date", date, Field.Store.YES, Field.Index.ANALYZED));
+      doc.add(newField("contents", content, Field.Store.YES, Field.Index.ANALYZED));
+      NumericField numericField = new NumericField("date2");
+      numericField.setIntValue(Integer.valueOf(date));
+      doc.add(numericField);
+      writer.addDocument(doc);
+      line = d.readLine();
+    }
+    d.close();
+    writer.close();
+    reader = IndexReader.open(dir, true);
+    searcher = newSearcher(reader);
+
+  }
+
+  @AfterClass
+  public static void afterClass() throws Exception {
+    reader.close();
+    searcher.close();
+    dir.close();
+    reader = null;
+    searcher = null;
+    dir = null;
+    builder = null;
+  }
+
+  public void testSimpleXML() throws ParserException, IOException {
+    Query q = parse("TermQuery.xml");
+    dumpResults("TermQuery", q, 5);
+  }
+
+  public void testSimpleTermsQueryXML() throws ParserException, IOException {
+    Query q = parse("TermsQuery.xml");
+    dumpResults("TermsQuery", q, 5);
+  }
+
+  public void testBooleanQueryXML() throws ParserException, IOException {
+    Query q = parse("BooleanQuery.xml");
+    dumpResults("BooleanQuery", q, 5);
+  }
+
+  public void testRangeFilterQueryXML() throws ParserException, IOException {
+    Query q = parse("RangeFilterQuery.xml");
+    dumpResults("RangeFilter", q, 5);
+  }
+
+  public void testUserQueryXML() throws ParserException, IOException {
+    Query q = parse("UserInputQuery.xml");
+    dumpResults("UserInput with Filter", q, 5);
+  }
+
+  public void testCustomFieldUserQueryXML() throws ParserException, IOException {
+    Query q = parse("UserInputQueryCustomField.xml");
+    int h = searcher.search(q, null, 1000).totalHits;
+    assertEquals("UserInputQueryCustomField should produce 0 result ", 0, h);
+  }
+
+  public void testLikeThisQueryXML() throws Exception {
+    Query q = parse("LikeThisQuery.xml");
+    dumpResults("like this", q, 5);
+  }
+
+  public void testBoostingQueryXML() throws Exception {
+    Query q = parse("BoostingQuery.xml");
+    dumpResults("boosting ", q, 5);
+  }
+
+  public void testFuzzyLikeThisQueryXML() throws Exception {
+    Query q = parse("FuzzyLikeThisQuery.xml");
+    //show rewritten fuzzyLikeThisQuery - see what is being matched on
+    if (VERBOSE) {
+      System.out.println(q.rewrite(reader));
+    }
+    dumpResults("FuzzyLikeThis", q, 5);
+  }
+
+  public void testTermsFilterXML() throws Exception {
+    Query q = parse("TermsFilterQuery.xml");
+    dumpResults("Terms Filter", q, 5);
+  }
+
+  public void testBoostingTermQueryXML() throws Exception {
+    Query q = parse("BoostingTermQuery.xml");
+    dumpResults("BoostingTermQuery", q, 5);
+  }
+
+  public void testSpanTermXML() throws Exception {
+    Query q = parse("SpanQuery.xml");
+    dumpResults("Span Query", q, 5);
+  }
+
+  public void testConstantScoreQueryXML() throws Exception {
+    Query q = parse("ConstantScoreQuery.xml");
+    dumpResults("ConstantScoreQuery", q, 5);
+  }
+
+  public void testMatchAllDocsPlusFilterXML() throws ParserException, IOException {
+    Query q = parse("MatchAllDocsQuery.xml");
+    dumpResults("MatchAllDocsQuery with range filter", q, 5);
+  }
+
+  public void testBooleanFilterXML() throws ParserException, IOException {
+    Query q = parse("BooleanFilter.xml");
+    dumpResults("Boolean filter", q, 5);
+  }
+
+  public void testNestedBooleanQuery() throws ParserException, IOException {
+    Query q = parse("NestedBooleanQuery.xml");
+    dumpResults("Nested Boolean query", q, 5);
+  }
+
+  public void testCachedFilterXML() throws ParserException, IOException {
+    Query q = parse("CachedFilter.xml");
+    dumpResults("Cached filter", q, 5);
+  }
+
+  public void testDuplicateFilterQueryXML() throws ParserException, IOException {
+    Assume.assumeTrue(searcher.getIndexReader().getSequentialSubReaders() == null ||
+        searcher.getIndexReader().getSequentialSubReaders().length == 1);
+    Query q = parse("DuplicateFilterQuery.xml");
+    int h = searcher.search(q, null, 1000).totalHits;
+    assertEquals("DuplicateFilterQuery should produce 1 result ", 1, h);
+  }
+
+  public void testNumericRangeFilterQueryXML() throws ParserException, IOException {
+    Query q = parse("NumericRangeFilterQuery.xml");
+    dumpResults("NumericRangeFilter", q, 5);
+  }
+
+  public void testNumericRangeQueryQueryXML() throws ParserException, IOException {
+    Query q = parse("NumericRangeQueryQuery.xml");
+    dumpResults("NumericRangeQuery", q, 5);
+  }
+
+  //================= Helper methods ===================================
+
+  private Query parse(String xmlFileName) throws ParserException, IOException {
+    InputStream xmlStream = TestParser.class.getResourceAsStream(xmlFileName);
+    Query result = builder.parse(xmlStream);
+    xmlStream.close();
+    return result;
+  }
+
+  private void dumpResults(String qType, Query q, int numDocs) throws IOException {
+    if (VERBOSE) {
+      System.out.println("TEST: query=" + q);
+    }
+    TopDocs hits = searcher.search(q, null, numDocs);
+    assertTrue(qType + " should produce results ", hits.totalHits > 0);
+    if (VERBOSE) {
+      System.out.println("=========" + qType + "============");
+      ScoreDoc[] scoreDocs = hits.scoreDocs;
+      for (int i = 0; i < Math.min(numDocs, hits.totalHits); i++) {
+        org.apache.lucene.document.Document ldoc = searcher.doc(scoreDocs[i].doc);
+        System.out.println("[" + ldoc.get("date") + "]" + ldoc.get("contents"));
+      }
+      System.out.println();
+    }
+  }
 }