You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/01/05 21:25:44 UTC

svn commit: r1055622 [12/14] - in /lucene/dev/branches/docvalues: ./ dev-tools/ dev-tools/eclipse/ dev-tools/idea/ dev-tools/idea/.idea/ dev-tools/idea/.idea/libraries/ dev-tools/idea/lucene/ dev-tools/idea/lucene/contrib/ dev-tools/idea/lucene/contrib...

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/DocumentBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/DocumentBuilder.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/DocumentBuilder.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/DocumentBuilder.java Wed Jan  5 20:25:17 2011
@@ -73,7 +73,7 @@ public class DocumentBuilder {
         }
       }
     } else {
-      Field field = sfield.createField(val, boost);
+      Fieldable field = sfield.createField(val, boost);
       if (field != null) {
         if (!sfield.multiValued()) {
           String oldValue = map.put(sfield.getName(), val);
@@ -201,7 +201,7 @@ public class DocumentBuilder {
         if (f != null) doc.add(f); // null fields are not added
       }
     } else {
-      Field f = field.createField(val, boost);
+      Fieldable f = field.createField(val, boost);
       if (f != null) doc.add(f);  // null fields are not added
     }
   }
@@ -258,7 +258,7 @@ public class DocumentBuilder {
         if (sfield != null && sfield.getType() instanceof BinaryField) {
           isBinaryField = true;
           BinaryField binaryField = (BinaryField) sfield.getType();
-          Field f = binaryField.createField(sfield,v,boost);
+          Fieldable f = binaryField.createField(sfield,v,boost);
           if(f != null){
             out.add(f);
           }
@@ -297,7 +297,7 @@ public class DocumentBuilder {
             if (destinationField.getType() instanceof BinaryField) {
               BinaryField binaryField = (BinaryField) destinationField.getType();
               //TODO: safe to assume that binary fields only create one?
-              fields = new Field[]{binaryField.createField(destinationField, v, boost)};
+              fields = new Fieldable[]{binaryField.createField(destinationField, v, boost)};
             }
           } else {
             fields = destinationField.createFields(cf.getLimitedValue(val), boost);

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/MergeIndexesCommand.java Wed Jan  5 20:25:17 2011
@@ -18,6 +18,7 @@
 package org.apache.solr.update;
 
 import org.apache.lucene.store.Directory;
+import org.apache.solr.request.SolrQueryRequest;
 
 /**
  * A merge indexes command encapsulated in an object.
@@ -28,12 +29,12 @@ import org.apache.lucene.store.Directory
 public class MergeIndexesCommand extends UpdateCommand {
   public Directory[] dirs;
 
-  public MergeIndexesCommand() {
-    this(null);
+  public MergeIndexesCommand(SolrQueryRequest req) {
+    this(null, req);
   }
 
-  public MergeIndexesCommand(Directory[] dirs) {
-    super("mergeIndexes");
+  public MergeIndexesCommand(Directory[] dirs, SolrQueryRequest req) {
+    super("mergeIndexes", req);
     this.dirs = dirs;
   }
 

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/RollbackUpdateCommand.java Wed Jan  5 20:25:17 2011
@@ -17,14 +17,16 @@
 
 package org.apache.solr.update;
 
+import org.apache.solr.request.SolrQueryRequest;
+
 /**
  * @version $Id$
  * @since Solr 1.4
  */
 public class RollbackUpdateCommand extends UpdateCommand {
 
-  public RollbackUpdateCommand() {
-    super("rollback");
+  public RollbackUpdateCommand(SolrQueryRequest req) {
+    super("rollback", req);
   }
 
 }

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/UpdateCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/UpdateCommand.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/UpdateCommand.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/UpdateCommand.java Wed Jan  5 20:25:17 2011
@@ -17,15 +17,19 @@
 
 package org.apache.solr.update;
 
+import org.apache.solr.request.SolrQueryRequest;
+
 
 /** An index update command encapsulated in an object (Command pattern)
  *
  * @version $Id$
  */
   public class UpdateCommand {
-    protected String commandName;
+    protected final SolrQueryRequest req;
+    protected final String commandName;
 
-    public UpdateCommand(String commandName) {
+    public UpdateCommand(String commandName, SolrQueryRequest req) {
+      this.req = req;
       this.commandName = commandName;
     }
 

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java Wed Jan  5 20:25:17 2011
@@ -16,12 +16,6 @@ package org.apache.solr.update.processor
  * limitations under the License.
  */
 
-import java.io.UnsupportedEncodingException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.solr.common.util.Hash;
 
 public class Lookup3Signature extends Signature {

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/SignatureUpdateProcessorFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/SignatureUpdateProcessorFactory.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/SignatureUpdateProcessorFactory.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/update/processor/SignatureUpdateProcessorFactory.java Wed Jan  5 20:25:17 2011
@@ -33,11 +33,7 @@ import org.apache.solr.common.util.StrUt
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.update.AddUpdateCommand;
-import org.apache.solr.update.CommitUpdateCommand;
-import org.apache.solr.update.DeleteUpdateCommand;
-import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.util.plugin.SolrCoreAware;
 

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/DateMathParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/DateMathParser.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/DateMathParser.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/DateMathParser.java Wed Jan  5 20:25:17 2011
@@ -17,7 +17,6 @@
 
 package org.apache.solr.util;
 
-import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
 
 import java.util.Date;

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/SolrPluginUtils.java Wed Jan  5 20:25:17 2011
@@ -33,6 +33,7 @@ import org.apache.solr.common.util.Named
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
 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.request.SolrQueryRequest;
@@ -41,9 +42,6 @@ import org.apache.solr.schema.IndexSchem
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.*;
 import org.apache.solr.update.DocumentBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.io.IOException;
 import java.util.*;
 import java.util.regex.Pattern;
@@ -64,17 +62,6 @@ import java.lang.reflect.InvocationTarge
  * default parameter settings.
  */
 public class SolrPluginUtils {
-  final static Logger log = LoggerFactory.getLogger( SolrPluginUtils.class );
-
-  /**
-   * Set defaults on a SolrQueryRequest.
-   *
-   * RequestHandlers can use this method to ensure their defaults are
-   * visible to other components such as the response writer
-   */
-  public static void setDefaults(SolrQueryRequest req, SolrParams defaults) {
-    setDefaults(req, defaults, null, null);
-  }
 
   /**
    * Set default-ish params on a SolrQueryRequest.
@@ -104,13 +91,6 @@ public class SolrPluginUtils {
   }
 
 
-  /**
-   * standard param for field list
-   *
-   * @deprecated Use org.apache.solr.common.params.CommonParams.FL.
-   */
-  @Deprecated
-  public static String FL = CommonParams.FL;
 
   /**
    * SolrIndexSearch.numDocs(Query,Query) freaks out if the filtering
@@ -123,59 +103,10 @@ public class SolrPluginUtils {
 
   }
 
-  /**
-   * Returns the param, or the default if it's empty or not specified.
-   * @deprecated use SolrParam.get(String,String)
-   */
-  @Deprecated
-  public static String getParam(SolrQueryRequest req,
-                                String param, String def) {
 
-    String v = req.getParam(param);
-    // Note: parameters passed but given only white-space value are
-    // considered equivalent to passing nothing for that parameter.
-    if (null == v || "".equals(v.trim())) {
-      return def;
-    }
-    return v;
-  }
 
-  /**
-   * Treats the param value as a Number, returns the default if nothing is
-   * there or if it's not a number.
-   * @deprecated use SolrParam.getFloat(String,float)
-   */
-  @Deprecated
-  public static Number getNumberParam(SolrQueryRequest req,
-                                      String param, Number def) {
 
-    Number r = def;
-    String v = req.getParam(param);
-    if (null == v || "".equals(v.trim())) {
-      return r;
-    }
-    try {
-      r = new Float(v);
-    } catch (NumberFormatException e) {
-      /* :NOOP" */
-    }
-    return r;
-  }
 
-  /**
-   * Treats parameter value as a boolean.  The string 'false' is false;
-   * any other non-empty string is true.
-   * @deprecated use SolrParam.getBool(String,boolean)
-   */
-  @Deprecated
-  public static boolean getBooleanParam(SolrQueryRequest req,
-                                       String param, boolean def) {
-    String v = req.getParam(param);
-    if (null == v || "".equals(v.trim())) {
-      return def;
-    }
-    return !"false".equals(v.trim());
-  }
 
   private final static Pattern splitList=Pattern.compile(",| ");
 
@@ -238,7 +169,8 @@ public class SolrPluginUtils {
    *
    * If lazy field loading is disabled, this method does nothing.
    */
-  public static void optimizePreFetchDocs(DocList docs,
+  public static void optimizePreFetchDocs(ResponseBuilder rb,
+                                          DocList docs,
                                           Query query,
                                           SolrQueryRequest req,
                                           SolrQueryResponse res) throws IOException {
@@ -248,28 +180,34 @@ public class SolrPluginUtils {
       return;
     }
 
-    Set<String> fieldFilter = null;
     Set<String> returnFields = res.getReturnFields();
+    Set<String> fieldFilter = returnFields;
+
     if(returnFields != null) {
-      // copy return fields list
-      fieldFilter = new HashSet<String>(returnFields);
-      // add highlight fields
-      SolrHighlighter highligher = req.getCore().getHighlighter();
-      if(highligher.isHighlightingEnabled(req.getParams())) {
-        for(String field: highligher.getHighlightFields(query, req, null))
+
+      if (rb.doHighlights) {
+        // copy return fields list
+        fieldFilter = new HashSet<String>(returnFields);
+        // add highlight fields
+
+        SolrHighlighter highlighter = HighlightComponent.getHighlighter(req.getCore());
+        for (String field: highlighter.getHighlightFields(query, req, null))
           fieldFilter.add(field);
-      }
-      // fetch unique key if one exists.
-      SchemaField keyField = req.getSearcher().getSchema().getUniqueKeyField();
-      if(null != keyField)
+
+        // fetch unique key if one exists.
+        SchemaField keyField = req.getSearcher().getSchema().getUniqueKeyField();
+        if(null != keyField)
           fieldFilter.add(keyField.getName());
-    }
+      }
+
+      // get documents
+      DocIterator iter = docs.iterator();
+      for (int i=0; i<docs.size(); i++) {
+        searcher.doc(iter.nextDoc(), fieldFilter);
+      }
 
-    // get documents
-    DocIterator iter = docs.iterator();
-    for (int i=0; i<docs.size(); i++) {
-      searcher.doc(iter.nextDoc(), fieldFilter);
     }
+
   }
 
 
@@ -451,23 +389,6 @@ public class SolrPluginUtils {
     return out;
   }
 
-  /**
-   * Generates an list of Explanations for each item in a list of docs.
-   *
-   * @param query The Query you want explanations in the context of
-   * @param docs The Documents you want explained relative that query
-   * @deprecated this returns the explanations as Strings, instead it
-   *    is recommeded to use getExplanations and call toString()
-   *    yourself, or use explanationsToNamedLists
-   */
-  @Deprecated
-  public static NamedList getExplainList(Query query, DocList docs,
-                                         SolrIndexSearcher searcher,
-                                         IndexSchema schema)
-    throws IOException {
-
-    return explanationsToStrings(getExplanations(query,docs,searcher,schema));
-  }
 
   /**
    * Executes a basic query
@@ -536,33 +457,6 @@ public class SolrPluginUtils {
     }
     return out;
   }
-  /**
-   * Given a string containing functions with optional boosts, returns
-   * an array of Queries representing those functions with the specified
-   * boosts.
-   * <p>
-   * NOTE: intra-function whitespace is not allowed.
-   * </p>
-   * @see #parseFieldBoosts
-   * @deprecated
-   */
-  @Deprecated
-  public static List<Query> parseFuncs(IndexSchema s, String in)
-    throws ParseException {
-
-    Map<String,Float> ff = parseFieldBoosts(in);
-    List<Query> funcs = new ArrayList<Query>(ff.keySet().size());
-    for (String f : ff.keySet()) {
-      Query fq = QueryParsing.parseFunction(f, s);
-      Float b = ff.get(f);
-      if (null != b) {
-        fq.setBoost(b);
-      }
-      funcs.add(fq);
-    }
-    return funcs;
-  }
-
 
   /**
    * Checks the number of optional clauses in the query, and compares it
@@ -608,6 +502,11 @@ public class SolrPluginUtils {
     }
   }
 
+  // private static Pattern spaceAroundLessThanPattern = Pattern.compile("\\s*<\\s*");
+  private static Pattern spaceAroundLessThanPattern = Pattern.compile("(\\s+<\\s*)|(\\s*<\\s+)");
+  private static Pattern spacePattern = Pattern.compile(" ");
+  private static Pattern lessThanPattern = Pattern.compile("<");
+
   /**
    * helper exposed for UnitTests
    * @see #setMinShouldMatch
@@ -615,14 +514,14 @@ public class SolrPluginUtils {
   static int calculateMinShouldMatch(int optionalClauseCount, String spec) {
 
     int result = optionalClauseCount;
-
+    spec = spec.trim();
 
     if (-1 < spec.indexOf("<")) {
       /* we have conditional spec(s) */
-
-      for (String s : spec.trim().split(" ")) {
-        String[] parts = s.split("<");
-        int upperBound = (new Integer(parts[0])).intValue();
+      spec = spaceAroundLessThanPattern.matcher(spec).replaceAll("<");
+      for (String s : spacePattern.split(spec)) {
+        String[] parts = lessThanPattern.split(s,0);
+        int upperBound = Integer.parseInt(parts[0]);
         if (optionalClauseCount <= upperBound) {
           return result;
         } else {
@@ -635,13 +534,14 @@ public class SolrPluginUtils {
 
     /* otherwise, simple expresion */
 
-    if (-1 < spec.indexOf("%")) {
-      /* percentage */
-      int percent = new Integer(spec.replace("%","")).intValue();
-      float calc = (result * percent) / 100f;
+    if (-1 < spec.indexOf('%')) {
+      /* percentage - assume the % was the last char.  If not, let Integer.parseInt fail. */
+      spec = spec.substring(0,spec.length()-1);
+      int percent = Integer.parseInt(spec);
+      float calc = (result * percent) * (1/100f);
       result = calc < 0 ? result + (int)calc : (int)calc;
     } else {
-      int calc = (new Integer(spec)).intValue();
+      int calc = Integer.parseInt(spec);
       result = calc < 0 ? result + calc : calc;
     }
 
@@ -775,14 +675,6 @@ public class SolrPluginUtils {
       // don't trust that our parent class won't ever change it's default
       setDefaultOperator(QueryParser.Operator.OR);
     }
-    public DisjunctionMaxQueryParser(IndexSchema s, String defaultField) {
-      super(s,defaultField);
-      // don't trust that our parent class won't ever change it's default
-      setDefaultOperator(QueryParser.Operator.OR);
-    }
-    public DisjunctionMaxQueryParser(IndexSchema s) {
-      this(s,null);
-    }
 
     /**
      * Add an alias to this query parser.
@@ -879,15 +771,6 @@ public class SolrPluginUtils {
     return ss;
   }
 
-  /**
-   * Builds a list of Query objects that should be used to filter results
-   * @see CommonParams#FQ
-   * @return null if no filter queries
-   */
-  public static List<Query> parseFilterQueries(SolrQueryRequest req) throws ParseException {
-    return parseQueryStrings(req, req.getParams().getParams(CommonParams.FQ));
-  }
-
   /** Turns an array of query strings into a List of Query objects.
    *
    * @return null if no queries are generated
@@ -978,27 +861,6 @@ public class SolrPluginUtils {
   }
 
 
-
-  /**
-   * Given a SolrQueryResponse replace the DocList if it is in the result.
-   * Otherwise add it to the response
-   *
-   * @since solr 1.4
-   */
-  public static void addOrReplaceResults(SolrQueryResponse rsp, SolrDocumentList docs)
-  {
-    NamedList vals = rsp.getValues();
-    int idx = vals.indexOf( "response", 0 );
-    if( idx >= 0 ) {
-      log.debug("Replacing DocList with SolrDocumentList " + docs.size());
-      vals.setVal( idx, docs );
-    }
-    else {
-      log.debug("Adding SolrDocumentList response" + docs.size());
-      vals.add( "response", docs );
-    }
-  }
-
   public static void invokeSetters(Object bean, NamedList initArgs) {
     if (initArgs == null) return;
     Class clazz = bean.getClass();

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/TestHarness.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/TestHarness.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/TestHarness.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/TestHarness.java Wed Jan  5 20:25:17 2011
@@ -17,6 +17,7 @@
 
 package org.apache.solr.util;
 
+import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.XML;
@@ -25,20 +26,22 @@ import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.CoreDescriptor;
 import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.handler.JsonUpdateRequestHandler;
 import org.apache.solr.handler.XmlUpdateRequestHandler;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.servlet.DirectSolrConnection;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 import org.apache.solr.common.util.NamedList.NamedListEntry;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpressionException;
@@ -49,10 +52,7 @@ import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 
@@ -206,20 +206,25 @@ public class TestHarness {
   /**
    * Processes an "update" (add, commit or optimize) and
    * returns the response as a String.
-   * 
-   * @deprecated The better approach is to instantiate an Updatehandler directly
    *
    * @param xml The XML of the update
    * @return The XML response to the update
    */
-  @Deprecated
   public String update(String xml) {
-                
-    StringReader req = new StringReader(xml);
-    StringWriter writer = new StringWriter(32000);
-
-    updater.doLegacyUpdate(req, writer);
-    return writer.toString();
+    DirectSolrConnection connection = new DirectSolrConnection(core);
+    SolrRequestHandler handler = core.getRequestHandler("/update");
+    // prefer the handler mapped to /update, but use our generic backup handler
+    // if that lookup fails
+    if (handler == null) {
+      handler = updater;
+    }
+    try {
+      return connection.request(handler, null, xml);
+    } catch (SolrException e) {
+      throw (SolrException)e;
+    } catch (Exception e) {
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
+    }
   }
   
         
@@ -244,7 +249,12 @@ public class TestHarness {
    * @return null if successful, otherwise the XML response to the update
    */
   public String validateErrorUpdate(String xml) throws SAXException {
-    return checkUpdateStatus(xml, "1");
+    try {
+      return checkUpdateStatus(xml, "1");
+    } catch (SolrException e) {
+      // return ((SolrException)e).getMessage();
+      return null;  // success
+    }
   }
 
   /**
@@ -258,7 +268,7 @@ public class TestHarness {
   public String checkUpdateStatus(String xml, String code) throws SAXException {
     try {
       String res = update(xml);
-      String valid = validateXPath(res, "//result[@status="+code+"]" );
+      String valid = validateXPath(res, "//int[@name='status']="+code );
       return (null == valid) ? null : res;
     } catch (XPathExpressionException e) {
       throw new RuntimeException
@@ -266,27 +276,6 @@ public class TestHarness {
     }
   }
 
-  /**
-   * Validates that an add of a single document results in success.
-   *
-   * @param fieldsAndValues Odds are field names, Evens are values
-   * @return null if successful, otherwise the XML response to the update
-   * @see #appendSimpleDoc
-   */
-  public String validateAddDoc(String... fieldsAndValues)
-    throws XPathExpressionException, SAXException, IOException {
-
-    StringBuilder buf = new StringBuilder();
-    buf.append("<add>");
-    appendSimpleDoc(buf, fieldsAndValues);
-    buf.append("</add>");
-        
-    String res = update(buf.toString());
-    String valid = validateXPath(res, "//result[@status=0]" );
-    return (null == valid) ? null : res;
-  }
-
-
     
   /**
    * Validates a "query" response against an array of XPath test strings
@@ -414,29 +403,6 @@ public class TestHarness {
   }
 
   /**
-   * A helper that adds an xml &lt;doc&gt; containing all of the
-   * fields and values specified (odds are fields, evens are values)
-   * to a StringBuilder
-   */
-  public void appendSimpleDoc(StringBuilder buf, String... fieldsAndValues)
-    throws IOException {
-
-    buf.append(makeSimpleDoc(fieldsAndValues));
-  }
-
-  /**
-   * A helper that adds an xml &lt;doc&gt; containing all of the
-   * fields and values specified (odds are fields, evens are values)
-   * to a StringBuffer.
-   * @deprecated see {@link #appendSimpleDoc(StringBuilder, String...)}
-   */
-  @Deprecated
-  public void appendSimpleDoc(StringBuffer buf, String... fieldsAndValues)
-    throws IOException {
-
-    buf.append(makeSimpleDoc(fieldsAndValues));
-  }
-  /**
    * A helper that creates an xml &lt;doc&gt; containing all of the
    * fields and values specified
    *

Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java Wed Jan  5 20:25:17 2011
@@ -27,7 +27,6 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.DOMUtil;
 import org.apache.solr.core.SolrConfig;
-import org.apache.solr.core.SolrResourceLoader;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 

Modified: lucene/dev/branches/docvalues/solr/src/maven/solr-core-pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/maven/solr-core-pom.xml.template?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/maven/solr-core-pom.xml.template (original)
+++ lucene/dev/branches/docvalues/solr/src/maven/solr-core-pom.xml.template Wed Jan  5 20:25:17 2011
@@ -91,6 +91,13 @@
       <artifactId>lucene-spellchecker</artifactId>
       <version>@version@</version>
     </dependency>
+    
+    <!-- Apache Zookeeper -->
+    <dependency>
+      <groupId>org.apache.zookeeper</groupId>
+      <artifactId>zookeeper</artifactId>
+      <version>3.3.1</version>
+    </dependency>
 
     <!-- Apache Commons -->
     <dependency>

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/LBHttpSolrServer.java Wed Jan  5 20:25:17 2011
@@ -18,7 +18,6 @@ package org.apache.solr.client.solrj.imp
 
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.DefaultMethodRetryHandler;
 import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
 import org.apache.commons.httpclient.params.HttpMethodParams;
 import org.apache.solr.client.solrj.*;
@@ -32,7 +31,6 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.locks.ReentrantLock;
 import java.util.*;
 
 /**

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/ContentStreamUpdateRequest.java Wed Jan  5 20:25:17 2011
@@ -17,12 +17,6 @@ package org.apache.solr.client.solrj.req
  */
 
 
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrServer;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.ContentStreamBase;
 

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java Wed Jan  5 20:25:17 2011
@@ -96,8 +96,8 @@ public class FieldAnalysisRequest extend
    */
   @Override
   public FieldAnalysisResponse process(SolrServer server) throws SolrServerException, IOException {
-    if (fieldTypes == null || fieldNames == null) {
-      throw new IllegalStateException("A list one field type or field name need to be specified");
+    if (fieldTypes == null && fieldNames == null) {
+      throw new IllegalStateException("At least one field type or field name need to be specified");
     }
     if (fieldValue == null) {
       throw new IllegalStateException("The field value must be set");

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java Wed Jan  5 20:25:17 2011
@@ -128,7 +128,7 @@ public class JavaBinUpdateRequestCodec {
 
       private List readOuterMostDocIterator(FastInputStream fis) throws IOException {
         NamedList params = (NamedList) namedList[0].getVal(0);
-        updateRequest.setParams(namedListToSolrParams(params));
+        updateRequest.setParams(new ModifiableSolrParams(SolrParams.toSolrParams(params)));
         if (handler == null) return super.readIterator(fis);
         while (true) {
           Object o = readVal(fis);
@@ -207,17 +207,6 @@ public class JavaBinUpdateRequestCodec {
     return nl;
   }
 
-  private ModifiableSolrParams namedListToSolrParams(NamedList nl) {
-    ModifiableSolrParams solrParams = new ModifiableSolrParams();
-    for (int i = 0; i < nl.size(); i++) {
-      List<String> l = (List) nl.getVal(i);
-      if (l != null)
-        solrParams.add(nl.getName(i),
-                l.toArray(new String[l.size()]));
-    }
-    return solrParams;
-  }
-
   public static interface StreamingDocumentHandler {
     public void document(SolrInputDocument document, UpdateRequest req);
   }

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java Wed Jan  5 20:25:17 2011
@@ -25,10 +25,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Iterator;
 
-import org.apache.solr.client.solrj.SolrServer;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.ModifiableSolrParams;

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/PivotField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/PivotField.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/PivotField.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/PivotField.java Wed Jan  5 20:25:17 2011
@@ -18,7 +18,6 @@
 package org.apache.solr.client.solrj.response;
 
 import java.io.PrintStream;
-import java.io.PrintWriter;
 import java.io.Serializable;
 import java.util.List;
 

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SolrPingResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SolrPingResponse.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SolrPingResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SolrPingResponse.java Wed Jan  5 20:25:17 2011
@@ -17,8 +17,6 @@
 
 package org.apache.solr.client.solrj.response;
 
-import org.apache.solr.common.util.NamedList;
-
 /**
  * 
  * @version $Id$

Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/UpdateResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/UpdateResponse.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/UpdateResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/UpdateResponse.java Wed Jan  5 20:25:17 2011
@@ -17,8 +17,6 @@
 
 package org.apache.solr.client.solrj.response;
 
-import org.apache.solr.common.util.NamedList;
-
 
 /**
  * TODO -- mostly a stub until we have a defined output format

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java Wed Jan  5 20:25:17 2011
@@ -17,10 +17,6 @@
 
 package org.apache.solr;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.StringWriter;
@@ -31,9 +27,8 @@ import javax.xml.parsers.DocumentBuilder
 import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
 import org.apache.lucene.index.LogMergePolicy;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.AppendedSolrParams;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.DefaultSolrParams;
@@ -51,7 +46,6 @@ import org.apache.solr.schema.IndexSchem
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocList;
-import org.apache.solr.search.QueryParsing;
 import org.apache.solr.update.SolrIndexWriter;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -162,7 +156,7 @@ public class BasicFunctionalityTest exte
             ,"//*[@numFound='0']"
             );
 
-    // test allowDups default of false
+    // test overwrite default of true
 
     assertU(adoc("id", "42", "val_s", "AAA"));
     assertU(adoc("id", "42", "val_s", "BBB"));
@@ -181,12 +175,12 @@ public class BasicFunctionalityTest exte
 
     // test deletes
     String [] adds = new String[] {
-      add( doc("id","101"), "allowDups", "false" ),
-      add( doc("id","101"), "allowDups", "false" ),
-      add( doc("id","105"), "allowDups", "true"  ),
-      add( doc("id","102"), "allowDups", "false" ),
-      add( doc("id","103"), "allowDups", "true"  ),
-      add( doc("id","101"), "allowDups", "false" ),
+      add( doc("id","101"), "overwrite", "true" ),
+      add( doc("id","101"), "overwrite", "true" ),
+      add( doc("id","105"), "overwrite", "false"  ),
+      add( doc("id","102"), "overwrite", "true" ),
+      add( doc("id","103"), "overwrite", "false"  ),
+      add( doc("id","101"), "overwrite", "true" ),
     };
     for (String a : adds) {
       assertU(a, a);
@@ -251,7 +245,7 @@ public class BasicFunctionalityTest exte
     clearIndex();
     // big freaking kludge since the response is currently not well formed.
     String res = h.update("<add><doc><field name=\"id\">1</field></doc><doc><field name=\"id\">2</field></doc></add>");
-    assertEquals("<result status=\"0\"></result>", res);
+    // assertEquals("<result status=\"0\"></result>", res);
     assertU("<commit/>");
     assertQ(req("id:[0 TO 99]")
             ,"//*[@numFound='2']"
@@ -267,7 +261,7 @@ public class BasicFunctionalityTest exte
                                           "<field name=\"text\">hello</field></doc>" + 
                           "</add>");
 
-    assertEquals("<result status=\"0\"></result>", res);
+    // assertEquals("<result status=\"0\"></result>", res);
     assertU("<commit/>");
     assertQ(req("text:hello")
             ,"//*[@numFound='2']"
@@ -286,7 +280,7 @@ public class BasicFunctionalityTest exte
                                       "<field boost=\"2.0\" name=\"text\">hello</field></doc>" + 
                           "</add>");
 
-    assertEquals("<result status=\"0\"></result>", res);
+    // assertEquals("<result status=\"0\"></result>", res);
     assertU("<commit/>");
     assertQ(req("text:hello"),
             "//*[@numFound='2']"
@@ -349,22 +343,12 @@ public class BasicFunctionalityTest exte
             );
   }
 
-  /** @see org.apache.solr.analysis.TestRemoveDuplicatesTokenFilter */
-  @Test
-  public void testRemoveDuplicatesTokenFilter() {
-    Query q = QueryParsing.parseQuery("TV", "dedup",
-                                      h.getCore().getSchema());
-    assertTrue("not boolean?", q instanceof BooleanQuery);
-    assertEquals("unexpected number of stemmed synonym tokens",
-                 2, ((BooleanQuery) q).clauses().size());
-  }
-
   @Test
   public void testTermVectorFields() {
     
     IndexSchema ischema = new IndexSchema(solrConfig, getSchemaFile(), null);
     SchemaField f; // Solr field type
-    Field luf; // Lucene field
+    Fieldable luf; // Lucene field
 
     f = ischema.getField("test_basictv");
     luf = f.createField("test", 0f);

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java Wed Jan  5 20:25:17 2011
@@ -18,7 +18,6 @@
 package org.apache.solr;
 
 import org.apache.solr.request.*;
-import org.apache.solr.util.*;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -95,12 +94,12 @@ public class ConvertedLegacyTest extends
     // test deletes
 
     assertU("<delete><query>id:[100 TO 110]</query></delete>");
-    assertU("<add allowDups=\"false\"><doc><field name=\"id\">101</field></doc></add>");
-    assertU("<add allowDups=\"false\"><doc><field name=\"id\">101</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">105</field></doc></add>");
-    assertU("<add allowDups=\"false\"><doc><field name=\"id\">102</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">103</field></doc></add>");
-    assertU("<add allowDups=\"false\"><doc><field name=\"id\">101</field></doc></add>");
+    assertU("<add overwrite=\"true\"><doc><field name=\"id\">101</field></doc></add>");
+    assertU("<add overwrite=\"true\"><doc><field name=\"id\">101</field></doc></add>");
+    assertU("<add  overwrite=\"false\"><doc><field name=\"id\">105</field></doc></add>");
+    assertU("<add overwrite=\"true\"><doc><field name=\"id\">102</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">103</field></doc></add>");
+    assertU("<add overwrite=\"true\"><doc><field name=\"id\">101</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:[100 TO 110]")
             ,"//*[@numFound='4']"
@@ -124,9 +123,9 @@ public class ConvertedLegacyTest extends
     // test range
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"val_s\">banana</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"val_s\">pear</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">banana</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">pear</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("val_s:[a TO z]")
             ,"//*[@numFound='3'] "
@@ -318,7 +317,7 @@ public class ConvertedLegacyTest extends
 
     // check for docs that appear more than once in a range
 
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s\">banana</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s\">banana</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("val_s:[* TO *] OR  val_s:[* TO *]")
             ,"//*[@numFound='4']"
@@ -333,7 +332,7 @@ public class ConvertedLegacyTest extends
 
     // <delete><id>44</id></delete>
 
-    assertU("<add overwritePending=\"true\" overwriteCommitted=\"true\"><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
+    assertU("<add><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44 AND red")
             ,"//@numFound[.='1'] "
@@ -349,8 +348,8 @@ public class ConvertedLegacyTest extends
     // allow duplicates
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\" overwriteCommitted=\"false\" overwritePending=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
-    assertU("<add allowDups=\"true\" overwriteCommitted=\"false\" overwritePending=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">big bad wolf</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">big bad wolf</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44")
             ,"//@numFound[.='2']"
@@ -510,16 +509,16 @@ public class ConvertedLegacyTest extends
     // test integer ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">1234567890</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">10</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">2</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">15</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">-1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">-987654321</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">2147483647</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">-2147483648</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_i\">0</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">1234567890</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">10</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">2</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">15</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">-1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">-987654321</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">2147483647</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">-2147483648</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">0</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44")
             ,"*[count(//doc)=10]"
@@ -553,16 +552,16 @@ public class ConvertedLegacyTest extends
     // test long ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">1234567890</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">10</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">2</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">15</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">-1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">-987654321</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">9223372036854775807</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">-9223372036854775808</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_l\">0</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">1234567890</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">10</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">2</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">15</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">-1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">-987654321</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">9223372036854775807</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">-9223372036854775808</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">0</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44")
             ,"*[count(//doc)=10]"
@@ -596,16 +595,16 @@ public class ConvertedLegacyTest extends
     // test binary float ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">1.4142135</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">Infinity</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-Infinity</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">NaN</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">2</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-987654321</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-999999.99</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-1e20</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sf\">0</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">1.4142135</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">Infinity</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-Infinity</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">NaN</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">2</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-987654321</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-999999.99</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-1e20</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">0</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44")
             ,"*[count(//doc)=10]"
@@ -645,16 +644,16 @@ public class ConvertedLegacyTest extends
     // test binary double ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">1.4142135</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">Infinity</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-Infinity</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">NaN</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">2</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">1e-100</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-999999.99</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-1e100</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"num_sd\">0</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">1.4142135</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">Infinity</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-Infinity</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">NaN</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">2</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">1e-100</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-999999.99</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-1e100</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">0</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44")
             ,"*[count(//doc)=10]"
@@ -696,12 +695,12 @@ public class ConvertedLegacyTest extends
     // test sorting on multiple fields
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"a_i\">10</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"a_i\">1</field><field name=\"b_i\">100</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"a_i\">-1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"a_i\">15</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"a_i\">1</field><field name=\"b_i\">50</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id\">44</field><field name=\"a_i\">0</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">10</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">1</field><field name=\"b_i\">100</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">-1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">15</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">1</field><field name=\"b_i\">50</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">0</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id:44")
             ,"*[count(//doc)=6]"
@@ -739,13 +738,13 @@ public class ConvertedLegacyTest extends
     // test sorting  with some docs missing the sort field
 
     assertU("<delete><query>id_i:[1000 TO 1010]</query></delete>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1000</field><field name=\"a_i\">1</field><field name=\"nullfirst\">Z</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1001</field><field name=\"a_i\">10</field><field name=\"nullfirst\">A</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1002</field><field name=\"a_i\">1</field><field name=\"b_si\">100</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1003</field><field name=\"a_i\">-1</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1004</field><field name=\"a_i\">15</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1005</field><field name=\"a_i\">1</field><field name=\"b_si\">50</field></doc></add>");
-    assertU("<add allowDups=\"true\"><doc><field name=\"id_i\">1006</field><field name=\"a_i\">0</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1000</field><field name=\"a_i\">1</field><field name=\"nullfirst\">Z</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1001</field><field name=\"a_i\">10</field><field name=\"nullfirst\">A</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1002</field><field name=\"a_i\">1</field><field name=\"b_si\">100</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1003</field><field name=\"a_i\">-1</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1004</field><field name=\"a_i\">15</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1005</field><field name=\"a_i\">1</field><field name=\"b_si\">50</field></doc></add>");
+    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1006</field><field name=\"a_i\">0</field></doc></add>");
     assertU("<commit/>");
     assertQ(req("id_i:[1000 TO 1010]")
             ,"*[count(//doc)=7]"
@@ -1349,16 +1348,5 @@ public class ConvertedLegacyTest extends
     assertQ(req("+id:45 +text:\"cc dd\"")
             ,"//*[@numFound='1']"
             );
-
-
-    // trigger output of custom value test
-
-    args = new HashMap<String,String>();
-    args.put("version","2.0");
-    req = new LocalSolrQueryRequest(h.getCore(), "values",
-                                    "test", 0, 10, args);
-    assertQ(req
-            );
-
   }
 }

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/DisMaxRequestHandlerTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/DisMaxRequestHandlerTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/DisMaxRequestHandlerTest.java Wed Jan  5 20:25:17 2011
@@ -23,8 +23,6 @@ import org.junit.Test;
 
 import java.util.regex.Pattern;
 
-import static org.junit.Assert.*;
-
 /**
  * Tests some basic functionality of the DisMaxRequestHandler
  */
@@ -198,18 +196,6 @@ public class DisMaxRequestHandlerTest ex
   }
 
   @Test
-  public void testOldStyleDefaults() throws Exception {
-
-    lrf = h.getRequestFactory
-      ("dismaxOldStyleDefaults", 0, 20,
-       "version","2.0",
-       "facet", "true",
-       "facet.field","t_s"
-       );
-    doTestSomeStuff("dismaxOldStyleDefaults");
-  }
-
-  @Test
   public void testSimplestParams() throws Exception {
 
     assertQ("match w/o only q param",

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java Wed Jan  5 20:25:17 2011
@@ -17,14 +17,10 @@
 
 package org.apache.solr;
 
-import org.apache.noggit.JSONParser;
 import org.apache.noggit.ObjectBuilder;
 import org.apache.solr.common.util.StrUtils;
 
-import java.io.StringReader;
 import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 
 public class JSONTestUtil {

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/MinimalSchemaTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/MinimalSchemaTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/MinimalSchemaTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/MinimalSchemaTest.java Wed Jan  5 20:25:17 2011
@@ -20,8 +20,6 @@ package org.apache.solr;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 import java.util.Set;
 
 /**

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/OutputWriterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/OutputWriterTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/OutputWriterTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/OutputWriterTest.java Wed Jan  5 20:25:17 2011
@@ -27,8 +27,6 @@ import org.apache.solr.response.SolrQuer
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /** Tests the ability to configure multiple query output writers, and select those
  * at query time.
  *

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SampleTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SampleTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SampleTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SampleTest.java Wed Jan  5 20:25:17 2011
@@ -22,8 +22,6 @@ import org.apache.solr.util.*;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /**
  * This is an example of how to write a JUnit tests for Solr using the
  * SolrTestCaseJ4
@@ -76,10 +74,10 @@ public class SampleTest extends SolrTest
     assertU("less common case, a complex addition with options",
             add(doc("id", "4059",
                     "subject", "Who Me?"),
-                "allowDups", "true"));
+                "overwrite", "false"));
 
     assertU("or just make the raw XML yourself",
-            "<add allowDups=\"true\">" +
+            "<add overwrite=\"false\">" +
             doc("id", "4059",
                 "subject", "Who Me Again?") + "</add>");
 

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrInfoMBeanTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrInfoMBeanTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrInfoMBeanTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrInfoMBeanTest.java Wed Jan  5 20:25:17 2011
@@ -16,7 +16,6 @@
  */
 package org.apache.solr;
 
-import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.handler.StandardRequestHandler;
 import org.apache.solr.handler.admin.LukeRequestHandler;
@@ -26,7 +25,6 @@ import org.apache.solr.highlight.Default
 import org.apache.solr.search.LRUCache;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
-
 import java.io.File;
 import java.net.URL;
 import java.util.ArrayList;
@@ -92,8 +90,6 @@ public class SolrInfoMBeanTest extends S
     assertTrue( "there are at least 10 SolrInfoMBean that should be found in the classpath, found " + checked, checked > 10 );
  }
   
-  static final String FOLDER = File.separator + "build" + File.separator + "solr" + File.separator + "org" + File.separator + "apache" + File.separator + "solr" + File.separator;
-
   private static List<Class> getClassesForPackage(String pckgname) throws Exception {
     ArrayList<File> directories = new ArrayList<File>();
     ClassLoader cld = h.getCore().getResourceLoader().getClassLoader();
@@ -101,9 +97,6 @@ public class SolrInfoMBeanTest extends S
     Enumeration<URL> resources = cld.getResources(path);
     while (resources.hasMoreElements()) {
       final File f = new File(resources.nextElement().toURI());
-      // only iterate classes from the core, not the tests (must be in dir "/build/solr/org"
-      if (!f.toString().contains(FOLDER))
-        continue;
       directories.add(f);
     }
       
@@ -113,7 +106,12 @@ public class SolrInfoMBeanTest extends S
         String[] files = directory.list();
         for (String file : files) {
           if (file.endsWith(".class")) {
-             classes.add(Class.forName(pckgname + '.' + file.substring(0, file.length() - 6)));
+             String clazzName = file.substring(0, file.length() - 6);
+             // exclude Test classes that happen to be in these packages.
+             // class.ForName'ing some of them can cause trouble.
+             if (!clazzName.endsWith("Test") && !clazzName.startsWith("Test")) {
+               classes.add(Class.forName(pckgname + '.' + clazzName));
+             }
           }
         }
       }

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java Wed Jan  5 20:25:17 2011
@@ -20,10 +20,8 @@ package org.apache.solr;
 
 
 import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util._TestUtil;
 import org.apache.noggit.CharArr;
 import org.apache.noggit.JSONUtil;
-import org.apache.noggit.JSONWriter;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
@@ -33,18 +31,13 @@ import org.apache.solr.common.util.XML;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.JsonUpdateRequestHandler;
-import org.apache.solr.handler.RequestHandlerBase;
-import org.apache.solr.request.BinaryQueryResponseWriter;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
-import org.apache.solr.response.QueryResponseWriter;
-import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.servlet.DirectSolrConnection;
-import org.apache.solr.servlet.SolrRequestParsers;
 import org.apache.solr.util.TestHarness;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -55,13 +48,9 @@ import org.xml.sax.SAXException;
 import javax.xml.xpath.XPathExpressionException;
 import java.io.File;
 import java.io.IOException;
-import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.*;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
 /**
  * A junit4 Solr test harness that extends LuceneTestCaseJ4.
  * Unlike AbstractSolrTestCase, a new core is not created for each test method.
@@ -95,7 +84,7 @@ public abstract class SolrTestCaseJ4 ext
   /** Call initCore in @BeforeClass to instantiate a solr core in your test class.
    * deleteCore will be called for you via SolrTestCaseJ4 @AfterClass */
   public static void initCore(String config, String schema) throws Exception {
-    initCore(config, schema, null);
+    initCore(config, schema, TEST_HOME);
   }
 
   /** Call initCore in @BeforeClass to instantiate a solr core in your test class.
@@ -1035,6 +1024,38 @@ public abstract class SolrTestCaseJ4 ext
     return out.toString();
   }
 
-
-
+  /** Gets a resource from the context classloader as {@link File}. This method should only be used,
+   * if a real file is needed. To get a stream, code should prefer
+   * {@link Class#getResourceAsStream} using {@code this.getClass()}.
+   */
+  public static File getFile(String name) {
+    try {
+      File file = new File(name);
+      if (!file.exists()) {
+        file = new File(Thread.currentThread().getContextClassLoader().getResource(name).toURI());
+      }
+      return file;
+    } catch (Exception e) {
+      /* more friendly than NPE */
+      throw new RuntimeException("Cannot find resource: " + name);
+    }
+  }
+  
+  private static final String SOURCE_HOME = determineSourceHome();
+  public static String TEST_HOME = getFile("solr/conf").getParent();
+  public static String WEBAPP_HOME = new File(SOURCE_HOME, "src/webapp/web").getAbsolutePath();
+  public static String EXAMPLE_HOME = new File(SOURCE_HOME, "example/solr").getAbsolutePath();
+  public static String EXAMPLE_MULTICORE_HOME = new File(SOURCE_HOME, "example/multicore").getAbsolutePath();
+  public static String EXAMPLE_SCHEMA=EXAMPLE_HOME+"/conf/schema.xml";
+  public static String EXAMPLE_CONFIG=EXAMPLE_HOME+"/conf/solrconfig.xml";
+  
+  static String determineSourceHome() {
+    // ugly, ugly hack to determine the example home without depending on the CWD
+    // this is needed for example/multicore tests which reside outside the classpath
+    File base = getFile("solr/conf/");
+    while (!new File(base, "solr/CHANGES.txt").exists()) {
+      base = base.getParentFile();
+    }
+    return new File(base, "solr/").getAbsolutePath();
+  }
 }

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java Wed Jan  5 20:25:17 2011
@@ -17,9 +17,6 @@
 
 package org.apache.solr;
 
-import junit.framework.TestCase;
-
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.common.params.CommonParams;
 
 /**

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java Wed Jan  5 20:25:17 2011
@@ -22,7 +22,6 @@ import org.apache.noggit.JSONUtil;
 import org.apache.noggit.ObjectBuilder;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.SchemaField;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestSolrCoreProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestSolrCoreProperties.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestSolrCoreProperties.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestSolrCoreProperties.java Wed Jan  5 20:25:17 2011
@@ -116,10 +116,10 @@ public class TestSolrCoreProperties exte
     confDir.mkdirs();
 
     File f = new File(confDir, "solrconfig.xml");
-    copyFile(new File(getSolrConfigFile()), f);
+    copyFile(SolrTestCaseJ4.getFile(getSolrConfigFile()), f);
 
     f = new File(confDir, "schema.xml");
-    copyFile(new File(getSchemaFile()), f);
+    copyFile(SolrTestCaseJ4.getFile(getSchemaFile()), f);
     Properties p = new Properties();
     p.setProperty("foo.foo1", "f1");
     p.setProperty("foo.foo2", "f2");

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java Wed Jan  5 20:25:17 2011
@@ -22,12 +22,9 @@ import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.TrieField;
 import org.apache.solr.util.DateMathParser;
 import org.junit.After;
-import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 import java.text.SimpleDateFormat;
 import java.util.Locale;
 import java.util.TimeZone;

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java Wed Jan  5 20:25:17 2011
@@ -32,7 +32,9 @@ import org.apache.lucene.search.Query;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.SpecialOperations;
 import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.search.QParser;
 import org.apache.solr.search.SolrQueryParser;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -112,15 +114,6 @@ public class TestReversedWildcardFilterF
   @Test
   public void testQueryParsing() throws Exception {
 
-    SolrQueryParser parserOne = new SolrQueryParser(schema, "one");
-    assertTrue(parserOne.getAllowLeadingWildcard());
-    SolrQueryParser parserTwo = new SolrQueryParser(schema, "two");
-    assertTrue(parserTwo.getAllowLeadingWildcard());
-    SolrQueryParser parserThree = new SolrQueryParser(schema, "three");
-    // XXX note: this should be false, but for now we return true for any field,
-    // XXX if at least one field uses the reversing
-    assertTrue(parserThree.getAllowLeadingWildcard());
-    
     // add some docs
     assertU(adoc("id", "1", "one", "one"));
     assertU(adoc("id", "2", "two", "two"));
@@ -141,7 +134,13 @@ public class TestReversedWildcardFilterF
     assertQ("should have matched",
         req("+id:6 +three:*si\uD834\uDD1Ex"),
         "//result[@numFound=1]");
-    
+
+    SolrQueryRequest req = req();
+    QParser qparser = QParser.getParser("id:1", "lucene", req);
+
+    SolrQueryParser parserTwo = new SolrQueryParser(qparser, "two");
+    assertTrue(parserTwo.getAllowLeadingWildcard());
+
     // test conditional reversal
     assertTrue(wasReversed(parserTwo, "*hree"));
     assertTrue(wasReversed(parserTwo, "t*ree"));
@@ -153,6 +152,8 @@ public class TestReversedWildcardFilterF
     assertFalse(wasReversed(parserTwo, "th?*ee"));
     assertFalse(wasReversed(parserTwo, "short*token"));
     assertTrue(wasReversed(parserTwo, "ver*longtoken"));
+
+    req.close();
   }
   
   /** fragile assert: depends on our implementation, but cleanest way to check for now */ 

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRussianFilters.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRussianFilters.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRussianFilters.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRussianFilters.java Wed Jan  5 20:25:17 2011
@@ -20,7 +20,6 @@ package org.apache.solr.analysis;
 import java.io.Reader;
 import java.io.StringReader;
 
-import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
 
 /**

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestTrimFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestTrimFilterFactory.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestTrimFilterFactory.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestTrimFilterFactory.java Wed Jan  5 20:25:17 2011
@@ -17,21 +17,12 @@
 
 package org.apache.solr.analysis;
 
-import java.io.IOException;
 import java.io.StringReader;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.lucene.analysis.Token;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.core.KeywordTokenizer;
-import org.apache.lucene.analysis.tokenattributes.FlagsAttribute;
-import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
-import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
-import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
 
 /**
  * Simple tests to ensure this factory is working

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java Wed Jan  5 20:25:17 2011
@@ -26,8 +26,6 @@ import org.apache.solr.client.solrj.resp
 import org.apache.solr.common.SolrInputDocument;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /**
  * @version $Id$
  * @since solr 1.3

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java Wed Jan  5 20:25:17 2011
@@ -37,17 +37,17 @@ public abstract class MergeIndexesExampl
 
   @Override
   public String getSolrHome() {
-    return "../../../example/multicore/";
+    return SolrJettyTestBase.EXAMPLE_MULTICORE_HOME;
   }
 
   @Override
   public String getSchemaFile() {
-    return getSolrHome() + "core0/conf/schema.xml";
+    return getSolrHome() + "/core0/conf/schema.xml";
   }
 
   @Override
   public String getSolrConfigFile() {
-    return getSolrHome() + "core0/conf/solrconfig.xml";
+    return getSolrHome() + "/core0/conf/solrconfig.xml";
   }
 
   @Override

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java Wed Jan  5 20:25:17 2011
@@ -36,10 +36,10 @@ public abstract class MultiCoreExampleTe
   // protected static final CoreContainer cores = new CoreContainer();
   protected static CoreContainer cores;
 
-  @Override public String getSolrHome() { return "../../../example/multicore/"; }
+  @Override public String getSolrHome() { return SolrJettyTestBase.EXAMPLE_MULTICORE_HOME; }
   
-  @Override public String getSchemaFile()     { return getSolrHome()+"core0/conf/schema.xml";     }
-  @Override public String getSolrConfigFile() { return getSolrHome()+"core0/conf/solrconfig.xml"; }
+  @Override public String getSchemaFile()     { return getSolrHome()+"/core0/conf/schema.xml";     }
+  @Override public String getSolrConfigFile() { return getSolrHome()+"/core0/conf/solrconfig.xml"; }
   
   @Override public void setUp() throws Exception {
     super.setUp();

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Wed Jan  5 20:25:17 2011
@@ -48,8 +48,6 @@ import org.apache.solr.common.util.Named
 import org.apache.solr.common.params.FacetParams;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /**
  * This should include tests against the example solr config
  * 
@@ -268,7 +266,7 @@ abstract public class SolrExampleTests e
     Assert.assertEquals( 0, rsp.getResults().getNumFound() );
 
     ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/csv");
-    up.addFile(new File("books.csv"));
+    up.addFile(getFile("books.csv"));
     up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
     NamedList<Object> result = server.request(up);
     assertNotNull("Couldn't upload books.csv", result);

Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java?rev=1055622&r1=1055621&r2=1055622&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java Wed Jan  5 20:25:17 2011
@@ -17,15 +17,11 @@
 
 package org.apache.solr.client.solrj;
 
-import java.net.UnknownHostException;
-
 import org.apache.lucene.util.LuceneTestCase;
 
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrException;
 
 /**
  *