You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/01/13 03:09:56 UTC

svn commit: r1058390 [13/16] - in /lucene/dev/branches/bulkpostings: ./ 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/cont...

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/Config.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/Config.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/Config.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/Config.java Thu Jan 13 02:09:33 2011
@@ -52,15 +52,6 @@ public class Config {
   private final SolrResourceLoader loader;
 
   /**
-   * @deprecated Use {@link #Config(SolrResourceLoader, String, InputStream, String)} instead. 
-   */
-  @Deprecated
-  public Config(String name, InputStream is, String prefix) throws ParserConfigurationException, IOException, SAXException 
-  {
-    this( null, name, is, prefix );
-  }
-
-  /**
    * Builds a config from a resource name with no xpath prefix.
    * @param loader
    * @param name
@@ -310,55 +301,4 @@ public class Config {
     
     return version;
   }
-
-  // The following functions were moved to ResourceLoader
-  //-----------------------------------------------------------------------------
-  
-   /**
-    * @deprecated Use {@link SolrResourceLoader#getConfigDir()} instead.
-    */
-  @Deprecated
-  public String getConfigDir() {
-    return loader.getConfigDir();
-  }
-
-  /**
-   * @deprecated Use {@link SolrResourceLoader#openResource(String)} instead.
-   */
-  @Deprecated
-  public InputStream openResource(String resource) {
-    return loader.openResource(resource);
-  }
-
-  /**
-   * @deprecated Use {@link SolrResourceLoader#getLines(String)} instead.
-   */
-  @Deprecated
-  public List<String> getLines(String resource) throws IOException {
-    return loader.getLines(resource);
-  }
-
-  /**
-   * @deprecated Use {@link SolrResourceLoader#findClass(String, String[])} instead.
-   */
-  @Deprecated
-  public Class findClass(String cname, String... subpackages) {
-    return loader.findClass(cname, subpackages);
-  }
-
-  /**
-   * @deprecated Use {@link SolrResourceLoader#newInstance(String, String[])} instead.
-   */
-  @Deprecated
-  public Object newInstance(String cname, String ... subpackages) {
-    return loader.newInstance(cname, subpackages);
-  }
-  
-  /**
-   * @deprecated Use {@link SolrResourceLoader#getInstanceDir()} instead.
-   */
-  @Deprecated
-  public String getInstanceDir() {
-    return loader.getInstanceDir();
-  }
 }

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/CoreContainer.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/CoreContainer.java Thu Jan 13 02:09:33 2011
@@ -78,8 +78,6 @@ public class CoreContainer 
   protected String adminHandler;
   protected boolean shareSchema;
   protected String solrHome;
-  @Deprecated
-  protected String solrConfigFilenameOverride;
   protected String defaultCoreName = "";
   private ZkController zkController;
   private SolrZkServer zkServer;
@@ -219,15 +217,6 @@ public class CoreContainer 
            "Setting abortOnConfigurationError==false is no longer supported");
     }
 
-    public String getSolrConfigFilename() {
-      return solrConfigFilename;
-    }
-
-    @Deprecated
-    public void setSolrConfigFilename(String solrConfigFilename) {
-      this.solrConfigFilename = solrConfigFilename;
-    }
-
     // core container instantiation
     public CoreContainer initialize() throws IOException,
         ParserConfigurationException, SAXException {
@@ -379,9 +368,7 @@ public class CoreContainer 
           // deal with optional settings
           String opt = DOMUtil.getAttr(node, "config", null);
 
-          if(solrConfigFilenameOverride != null) {
-            p.setConfigName(solrConfigFilenameOverride);
-          } else if (opt != null) {
+          if (opt != null) {
             p.setConfigName(opt);
           }
           opt = DOMUtil.getAttr(node, "schema", null);

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrConfig.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrConfig.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrConfig.java Thu Jan 13 02:09:33 2011
@@ -71,12 +71,6 @@ public class SolrConfig extends Config {
   
   public static final String DEFAULT_CONF_FILE = "solrconfig.xml";
 
-  /**
-   * Compatibility feature for single-core (pre-solr{215,350} patch); should go away at solr-2.0
-   * @deprecated Use {@link SolrCore#getSolrConfig()} instead.
-   */
-  @Deprecated
-  public static SolrConfig config = null; 
 
   /**
    * Singleton keeping track of configuration errors
@@ -176,8 +170,6 @@ public class SolrConfig extends Config {
 
     hashSetInverseLoadFactor = 1.0f / getFloat("//HashDocSet/@loadFactor",0.75f);
     hashDocSetMaxSize= getInt("//HashDocSet/@maxSize",3000);
-    
-    pingQueryParams = readPingQueryParams(this);
 
     httpCachingConfig = new HttpCachingConfig(this);
     
@@ -211,17 +203,9 @@ public class SolrConfig extends Config {
      loadPluginInfo(IndexReaderFactory.class,"indexReaderFactory",false, true);
      loadPluginInfo(UpdateRequestProcessorChain.class,"updateRequestProcessorChain",false, false);
 
-     //TODO deprecated remove it later
-     loadPluginInfo(SolrHighlighter.class,"highlighting",false, false);
-     if( pluginStore.containsKey( SolrHighlighter.class.getName() ) )
-       log.warn( "Deprecated syntax found. <highlighting/> should move to <searchComponent/>" );
-
      updateHandlerInfo = loadUpdatehandlerInfo();
 
     Config.log.info("Loaded SolrConfig: " + name);
-    
-    // TODO -- at solr 2.0. this should go away
-    config = this;
   }
 
   protected UpdateHandlerInfo loadUpdatehandlerInfo() {
@@ -288,47 +272,6 @@ public class SolrConfig extends Config {
   public HttpCachingConfig getHttpCachingConfig() {
     return httpCachingConfig;
   }
-  
-  /**
-   * ping query request parameters
-   * @deprecated Use {@link PingRequestHandler} instead.
-   */
-  @Deprecated
-  private final NamedList pingQueryParams;
-
-  static private NamedList readPingQueryParams(SolrConfig config) {  
-    String urlSnippet = config.get("admin/pingQuery", "").trim();
-    
-    StringTokenizer qtokens = new StringTokenizer(urlSnippet,"&");
-    String tok;
-    NamedList params = new NamedList();
-    while (qtokens.hasMoreTokens()) {
-      tok = qtokens.nextToken();
-      String[] split = tok.split("=", 2);
-      params.add(split[0], split[1]);
-    }
-    if (0 < params.size()) {
-      log.warn("The <pingQuery> syntax is deprecated, " +
-               "please use PingRequestHandler instead");
-    }
-    return params;
-  }
-  
-  /**
-   * Returns a Request object based on the admin/pingQuery section
-   * of the Solr config file.
-   * 
-   * @deprecated use {@link PingRequestHandler} instead 
-   */
-  @Deprecated
-  public SolrQueryRequest getPingQueryRequest(SolrCore core) {
-    if(pingQueryParams.size() == 0) {
-      throw new IllegalStateException
-        ("<pingQuery> not configured (consider registering " +
-         "PingRequestHandler with the name '/admin/ping' instead)");
-    }
-    return new LocalSolrQueryRequest(core, pingQueryParams);
-  }
 
   public static class JmxConfiguration {
     public boolean enabled = false;
@@ -336,12 +279,6 @@ public class SolrConfig extends Config {
     public String serviceUrl;
     public String rootName;
 
-    @Deprecated
-    public JmxConfiguration(boolean enabled, 
-                            String agentId, 
-                            String serviceUrl) {
-      this(enabled,agentId,serviceUrl,null);
-    }
     public JmxConfiguration(boolean enabled, 
                             String agentId, 
                             String serviceUrl,

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrCore.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrCore.java Thu Jan 13 02:09:33 2011
@@ -105,12 +105,6 @@ public final class SolrCore implements S
 
   public long getStartTime() { return startTime; }
 
-  /**
-   * @deprecated Use {@link CoreContainer#getCore(String)} instead.
-   */
-  @Deprecated
-  private static SolrCore instance;
-
   static int boolean_query_max_clause_count = Integer.MIN_VALUE;
   // only change the BooleanQuery maxClauseCount once for ALL cores...
   void booleanQueryMaxClauseCount()  {
@@ -140,15 +134,7 @@ public final class SolrCore implements S
   public String getConfigResource() {
     return solrConfig.getResourceName();
   }
-  
-  /**
-   * Gets the configuration resource name used by this core instance.
-   * @deprecated Use {@link #getConfigResource()} instead.
-   */
-  @Deprecated
-  public String getConfigFile() {
-    return solrConfig.getResourceName();
-  }
+
   /**
    * Gets the configuration object used by this core instance.
    */
@@ -165,15 +151,6 @@ public final class SolrCore implements S
   }
 
   /**
-   * Gets the schema resource name used by this core instance.
-   * @deprecated Use {@link #getSchemaResource()} instead.
-   */
-  @Deprecated
-  public String getSchemaFile() {
-    return schema.getResourceName();
-  }
-  
-  /**
    * Gets the schema object used by this core instance.
    */
   public IndexSchema getSchema() { 
@@ -463,30 +440,6 @@ public final class SolrCore implements S
     return createInstance(className, UpdateHandler.class, "Update Handler");
   }
   
-
-  /** 
-   * @return the last core initialized.  If you are using multiple cores, 
-   * this is not a function to use.
-   * 
-   * @deprecated Use {@link CoreContainer#getCore(String)} instead.
-   */
-  @Deprecated
-  public static SolrCore getSolrCore() {
-    synchronized( SolrCore.class ) {
-      if( instance == null ) {
-        try {
-          // sets 'instance' to the latest solr core          
-          CoreContainer.Initializer init = new CoreContainer.Initializer();
-          instance = init.initialize().getCore("");
-        } catch(Exception xany) {
-          throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,
-              "error creating core", xany );
-        }
-      }
-    }
-    return instance;
-  }
-  
   /**
    * 
    * @param dataDir
@@ -555,7 +508,7 @@ public final class SolrCore implements S
     initQParsers();
     initValueSourceParsers();
 
-    this.searchComponents = loadSearchComponents();
+    this.searchComponents = Collections.unmodifiableMap(loadSearchComponents());
 
     // Processors initialized before the handlers
     updateProcessorChains = loadUpdateProcessorChains();
@@ -592,7 +545,6 @@ public final class SolrCore implements S
       // Finally tell anyone who wants to know
       resourceLoader.inform( resourceLoader );
       resourceLoader.inform( this );  // last call before the latch is released.
-      instance = this;   // set singleton for backwards compatibility
     } catch (IOException e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, null, e, false);
     } finally {
@@ -768,16 +720,7 @@ public final class SolrCore implements S
      closeHooks.add( hook );
    }
 
-  /**
-   * Returns a Request object based on the admin/pingQuery section
-   * of the Solr config file.
-   * 
-   * @deprecated use {@link org.apache.solr.handler.PingRequestHandler} instead
-   */
-  @Deprecated
-  public SolrQueryRequest getPingQueryRequest() {
-    return solrConfig.getPingQueryRequest(this);
-  }
+
   ////////////////////////////////////////////////////////////////////////////////
   // Request Handler
   ////////////////////////////////////////////////////////////////////////////////
@@ -805,14 +748,6 @@ public final class SolrCore implements S
     return reqHandlers.getRequestHandlers();
   }
 
-  /**
-   * Get the SolrHighlighter
-   */
-  @Deprecated
-  public SolrHighlighter getHighlighter() {
-    HighlightComponent hl = (HighlightComponent) searchComponents.get(HighlightComponent.COMPONENT_NAME);
-    return hl==null? null: hl.getHighlighter();
-  }
 
   /**
    * Registers a handler at the specified location.  If one exists there, it will be replaced.
@@ -892,7 +827,7 @@ public final class SolrCore implements S
    * @return An unmodifiable Map of Search Components
    */
   public Map<String, SearchComponent> getSearchComponents() {
-    return Collections.unmodifiableMap(searchComponents);
+    return searchComponents;
   }
 
   ////////////////////////////////////////////////////////////////////////////////
@@ -1351,7 +1286,7 @@ public final class SolrCore implements S
     rsp.add("responseHeader", responseHeader);
 
     // toLog is a local ref to the same NamedList used by the request
-    NamedList toLog = rsp.getToLog();
+    NamedList<Object> toLog = rsp.getToLog();
     // for back compat, we set these now just in case other code
     // are expecting them during handleRequest
     toLog.add("webapp", req.getContext().get("webapp"));
@@ -1377,7 +1312,7 @@ public final class SolrCore implements S
   
   public static void setResponseHeaderValues(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp) {
     // TODO should check that responseHeader has not been replaced by handler
-	NamedList responseHeader = rsp.getResponseHeader();
+    NamedList<Object> responseHeader = rsp.getResponseHeader();
     final int qtime=(int)(rsp.getEndTime() - req.getStartTime());
     int status = 0;
     Exception exception = rsp.getException();
@@ -1651,7 +1586,7 @@ public final class SolrCore implements S
   }
 
   public NamedList getStatistics() {
-    NamedList lst = new SimpleOrderedMap();
+    NamedList<Object> lst = new SimpleOrderedMap<Object>();
     lst.add("coreName", name==null ? "(null)" : name);
     lst.add("startTime", new Date(startTime));
     lst.add("refCount", getOpenCount());

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrResourceLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrResourceLoader.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrResourceLoader.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/core/SolrResourceLoader.java Thu Jan 13 02:09:33 2011
@@ -278,6 +278,8 @@ public class SolrResourceLoader implemen
       }
       // delegate to the class loader (looking into $INSTANCE_DIR/lib jars)
       is = classLoader.getResourceAsStream(resource);
+      if (is == null)
+        is = classLoader.getResourceAsStream(getConfigDir() + resource);
     } catch (Exception e) {
       throw new RuntimeException("Error opening " + resource, e);
     }
@@ -634,10 +636,7 @@ public class SolrResourceLoader implemen
     }
     return normalizeDir( home );
   }
-  @Deprecated
-  public static String locateInstanceDir() {
-    return locateSolrHome();
-  }
+
 
   public String getInstanceDir() {
     return instanceDir;

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/AnalysisRequestHandlerBase.java Thu Jan 13 02:09:33 2011
@@ -47,6 +47,8 @@ import java.util.*;
  */
 public abstract class AnalysisRequestHandlerBase extends RequestHandlerBase {
 
+  public static final Set<String> EMPTY_STRING_SET = Collections.emptySet();
+
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
     rsp.add("analysis", doAnalysis(req));
   }
@@ -70,7 +72,7 @@ public abstract class AnalysisRequestHan
    *
    * @return NamedList containing the tokens produced by analyzing the given value
    */
-  protected NamedList<List<NamedList>> analyzeValue(String value, AnalysisContext context) {
+  protected NamedList<? extends Object> analyzeValue(String value, AnalysisContext context) {
 
     Analyzer analyzer = context.getAnalyzer();
 
@@ -93,7 +95,7 @@ public abstract class AnalysisRequestHan
     TokenizerFactory tfac = tokenizerChain.getTokenizerFactory();
     TokenFilterFactory[] filtfacs = tokenizerChain.getTokenFilterFactories();
 
-    NamedList<List<NamedList>> namedList = new NamedList<List<NamedList>>();
+    NamedList<Object> namedList = new NamedList<Object>();
 
     if( cfiltfacs != null ){
       String source = value;
@@ -234,7 +236,7 @@ public abstract class AnalysisRequestHan
     return tokensNamedLists;
   }
   
-  private String writeCharStream(NamedList out, CharStream input ){
+  private String writeCharStream(NamedList<Object> out, CharStream input ){
     final int BUFFER_SIZE = 1024;
     char[] buf = new char[BUFFER_SIZE];
     int len = 0;
@@ -252,7 +254,6 @@ public abstract class AnalysisRequestHan
     return sb.toString();
   }
 
-
   // ================================================= Inner classes =================================================
 
   /**
@@ -342,7 +343,7 @@ public abstract class AnalysisRequestHan
      *
      */
     public AnalysisContext(String fieldName, FieldType fieldType, Analyzer analyzer) {
-      this(fieldName, fieldType, analyzer, Collections.EMPTY_SET);
+      this(fieldName, fieldType, analyzer, EMPTY_STRING_SET);
     }
 
     /**

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/BinaryUpdateRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -62,7 +62,7 @@ public class BinaryUpdateRequestHandler 
     };
   }
 
-  private void parseAndLoadDocs(SolrQueryRequest req, SolrQueryResponse rsp, InputStream stream,
+  private void parseAndLoadDocs(final SolrQueryRequest req, SolrQueryResponse rsp, InputStream stream,
                                 final UpdateRequestProcessor processor) throws IOException {
     UpdateRequest update = null;
     update = new JavaBinUpdateRequestCodec().unmarshal(stream,
@@ -71,7 +71,7 @@ public class BinaryUpdateRequestHandler 
 
               public void document(SolrInputDocument document, UpdateRequest updateRequest) {
                 if (addCmd == null) {
-                  addCmd = getAddCommand(updateRequest.getParams());
+                  addCmd = getAddCommand(req, updateRequest.getParams());
                 }
                 addCmd.solrDoc = document;
                 try {
@@ -83,25 +83,25 @@ public class BinaryUpdateRequestHandler 
               }
             });
     if (update.getDeleteById() != null) {
-      delete(update.getDeleteById(), processor, true);
+      delete(req, update.getDeleteById(), processor, true);
     }
     if (update.getDeleteQuery() != null) {
-      delete(update.getDeleteQuery(), processor, false);
+      delete(req, update.getDeleteQuery(), processor, false);
     }
 
   }
 
-  private AddUpdateCommand getAddCommand(SolrParams params) {
-    AddUpdateCommand addCmd = new AddUpdateCommand();
+  private AddUpdateCommand getAddCommand(SolrQueryRequest req, SolrParams params) {
+    AddUpdateCommand addCmd = new AddUpdateCommand(req);
 
     addCmd.overwrite = params.getBool(UpdateParams.OVERWRITE, true);
     addCmd.commitWithin = params.getInt(COMMIT_WITHIN, -1);
     return addCmd;
   }
 
-  private void delete(List<String> l, UpdateRequestProcessor processor, boolean isId) throws IOException {
+  private void delete(SolrQueryRequest req, List<String> l, UpdateRequestProcessor processor, boolean isId) throws IOException {
     for (String s : l) {
-      DeleteUpdateCommand delcmd = new DeleteUpdateCommand();
+      DeleteUpdateCommand delcmd = new DeleteUpdateCommand(req);
       if (isId) {
         delcmd.id = s;
       } else {

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/CSVRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -185,7 +185,7 @@ abstract class CSVLoader extends Content
     this.params = req.getParams();
     schema = req.getSchema();
 
-    templateAdd = new AddUpdateCommand();
+    templateAdd = new AddUpdateCommand(req);
     templateAdd.overwrite=params.getBool(OVERWRITE,true);
 
     strategy = new CSVStrategy(',', '"', CSVStrategy.COMMENTS_DISABLED, CSVStrategy.ESCAPE_DISABLED, false, false, false, true);

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ContentStreamHandlerBase.java Thu Jan 13 02:09:33 2011
@@ -45,7 +45,7 @@ public abstract class ContentStreamHandl
 
       Iterable<ContentStream> streams = req.getContentStreams();
       if (streams == null) {
-        if (!RequestHandlerUtils.handleCommit(processor, params, false) && !RequestHandlerUtils.handleRollback(processor, params, false)) {
+        if (!RequestHandlerUtils.handleCommit(req, processor, params, false) && !RequestHandlerUtils.handleRollback(req, processor, params, false)) {
           throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "missing content stream");
         }
       } else {
@@ -55,8 +55,8 @@ public abstract class ContentStreamHandl
         }
 
         // Perhaps commit from the parameters
-        RequestHandlerUtils.handleCommit(processor, params, false);
-        RequestHandlerUtils.handleRollback(processor, params, false);
+        RequestHandlerUtils.handleCommit(req, processor, params, false);
+        RequestHandlerUtils.handleRollback(req, processor, params, false);
       }
     } finally {
       // finish the request

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DocumentAnalysisRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -230,9 +230,8 @@ public class DocumentAnalysisRequestHand
 
         if (request.getQuery() != null) {
           try {
-            AnalysisContext analysisContext = new AnalysisContext(fieldType, fieldType.getQueryAnalyzer(), Collections.EMPTY_SET);
-            NamedList<List<NamedList>> tokens = analyzeValue(request.getQuery(), analysisContext);
-            fieldTokens.add("query", tokens);
+            AnalysisContext analysisContext = new AnalysisContext(fieldType, fieldType.getQueryAnalyzer(), EMPTY_STRING_SET);
+            fieldTokens.add("query", analyzeValue(request.getQuery(), analysisContext));
           } catch (Exception e) {
             // ignore analysis exceptions since we are applying arbitrary text to all fields
           }
@@ -241,10 +240,11 @@ public class DocumentAnalysisRequestHand
         Analyzer analyzer = fieldType.getAnalyzer();
         AnalysisContext analysisContext = new AnalysisContext(fieldType, analyzer, termsToMatch);
         Collection<Object> fieldValues = document.getFieldValues(name);
-        NamedList<NamedList<List<NamedList>>> indexTokens = new SimpleOrderedMap<NamedList<List<NamedList>>>();
+        NamedList<NamedList<? extends Object>> indexTokens 
+          = new SimpleOrderedMap<NamedList<? extends Object>>();
         for (Object fieldValue : fieldValues) {
-          NamedList<List<NamedList>> tokens = analyzeValue(fieldValue.toString(), analysisContext);
-          indexTokens.add(String.valueOf(fieldValue), tokens);
+          indexTokens.add(String.valueOf(fieldValue), 
+                          analyzeValue(fieldValue.toString(), analysisContext));
         }
         fieldTokens.add("index", indexTokens);
       }

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DumpRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DumpRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DumpRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/DumpRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -38,7 +38,7 @@ public class DumpRequestHandler extends 
         
     // Write the streams...
     if( req.getContentStreams() != null ) {
-      ArrayList streams = new ArrayList();
+      ArrayList<NamedList<Object>> streams = new ArrayList<NamedList<Object>>();
       // Cycle through each stream
       for( ContentStream content : req.getContentStreams() ) {
         NamedList<Object> stream = new SimpleOrderedMap<Object>();

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/JsonLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/JsonLoader.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/JsonLoader.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/JsonLoader.java Thu Jan 13 02:09:33 2011
@@ -62,14 +62,15 @@ class JsonLoader extends ContentStreamLo
       }
 
       JSONParser parser = new JSONParser(reader);
-      this.processUpdate(processor, parser);
+      this.processUpdate(req, processor, parser);
     }
     finally {
       IOUtils.closeQuietly(reader);
     }
   }
 
-  void processUpdate(UpdateRequestProcessor processor, JSONParser parser) throws IOException 
+  @SuppressWarnings("fallthrough")
+  void processUpdate(SolrQueryRequest req, UpdateRequestProcessor processor, JSONParser parser) throws IOException 
   {
     int ev = parser.nextEvent();
     while( ev != JSONParser.EOF ) {
@@ -80,25 +81,25 @@ class JsonLoader extends ContentStreamLo
         if( parser.wasKey() ) {
           String v = parser.getString();
           if( v.equals( XmlUpdateRequestHandler.ADD ) ) {
-            processor.processAdd( parseAdd( parser ) );
+            processor.processAdd( parseAdd(req, parser ) );
           }
           else if( v.equals( XmlUpdateRequestHandler.COMMIT ) ) {
-            CommitUpdateCommand cmd = new CommitUpdateCommand( false );
+            CommitUpdateCommand cmd = new CommitUpdateCommand(req,  false );
             cmd.waitFlush = cmd.waitSearcher = true;
             parseCommitOptions( parser, cmd );
             processor.processCommit( cmd );
           }
           else if( v.equals( XmlUpdateRequestHandler.OPTIMIZE ) ) {
-            CommitUpdateCommand cmd = new CommitUpdateCommand( true );
+            CommitUpdateCommand cmd = new CommitUpdateCommand(req, true );
             cmd.waitFlush = cmd.waitSearcher = true;
             parseCommitOptions( parser, cmd );
             processor.processCommit( cmd );
           }
           else if( v.equals( XmlUpdateRequestHandler.DELETE ) ) {
-            processor.processDelete( parseDelete( parser ) );
+            processor.processDelete( parseDelete(req, parser ) );
           }
           else if( v.equals( XmlUpdateRequestHandler.ROLLBACK ) ) {
-            processor.processRollback( parseRollback( parser ) );
+            processor.processRollback( parseRollback(req, parser ) );
           }
           else {
             throw new IOException( "Unknown command: "+v+" ["+parser.getPosition()+"]" );
@@ -129,10 +130,10 @@ class JsonLoader extends ContentStreamLo
     }
   }
 
-  DeleteUpdateCommand parseDelete(JSONParser js) throws IOException {
+  DeleteUpdateCommand parseDelete(SolrQueryRequest req, JSONParser js) throws IOException {
     assertNextEvent( js, JSONParser.OBJECT_START );
 
-    DeleteUpdateCommand cmd = new DeleteUpdateCommand();
+    DeleteUpdateCommand cmd = new DeleteUpdateCommand(req);
     
     while( true ) {
       int ev = js.nextEvent();
@@ -169,10 +170,10 @@ class JsonLoader extends ContentStreamLo
     }
   }
   
-  RollbackUpdateCommand parseRollback(JSONParser js) throws IOException {
+  RollbackUpdateCommand parseRollback(SolrQueryRequest req, JSONParser js) throws IOException {
     assertNextEvent( js, JSONParser.OBJECT_START );
     assertNextEvent( js, JSONParser.OBJECT_END );
-    return new RollbackUpdateCommand();
+    return new RollbackUpdateCommand(req);
   }
 
   void parseCommitOptions( JSONParser js, CommitUpdateCommand cmd ) throws IOException
@@ -211,10 +212,10 @@ class JsonLoader extends ContentStreamLo
     }
   }
   
-  AddUpdateCommand parseAdd( JSONParser js ) throws IOException
+  AddUpdateCommand parseAdd(SolrQueryRequest req, JSONParser js ) throws IOException
   {
     assertNextEvent( js, JSONParser.OBJECT_START );
-    AddUpdateCommand cmd = new AddUpdateCommand();
+    AddUpdateCommand cmd = new AddUpdateCommand(req);
     float boost = 1.0f;
     
     while( true ) {

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ReplicationHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ReplicationHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/ReplicationHandler.java Thu Jan 13 02:09:33 2011
@@ -94,7 +94,7 @@ public class ReplicationHandler extends 
 
   private volatile IndexCommit indexCommitPoint;
 
-  volatile NamedList snapShootDetails;
+  volatile NamedList<Object> snapShootDetails;
 
   private AtomicBoolean replicationEnabled = new AtomicBoolean(true);
 
@@ -189,13 +189,13 @@ public class ReplicationHandler extends 
    }
   }
 
-  private List<NamedList> getCommits() {
+  private List<NamedList<Object>> getCommits() {
     Map<Long, IndexCommit> commits = core.getDeletionPolicy().getCommits();
-    List<NamedList> l = new ArrayList<NamedList>();
+    List<NamedList<Object>> l = new ArrayList<NamedList<Object>>();
 
     for (IndexCommit c : commits.values()) {
       try {
-        NamedList nl = new NamedList();
+        NamedList<Object> nl = new NamedList<Object>();
         nl.add("indexVersion", c.getVersion());
         nl.add(GENERATION, c.getGeneration());
         nl.add(CMD_GET_FILE_LIST, c.getFileNames());
@@ -701,7 +701,7 @@ public class ReplicationHandler extends 
     return details;
   }
 
-  private void addVal(NamedList nl, String key, Properties props, Class clzz) {
+  private void addVal(NamedList<Object> nl, String key, Properties props, Class clzz) {
     String s = props.getProperty(key);
     if (s == null || s.trim().length() == 0) return;
     if (clzz == Date.class) {

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerBase.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerBase.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerBase.java Thu Jan 13 02:09:33 2011
@@ -168,8 +168,8 @@ public abstract class RequestHandlerBase
     return null;  // this can be overridden, but not required
   }
 
-  public NamedList getStatistics() {
-    NamedList lst = new SimpleOrderedMap();
+  public NamedList<Object> getStatistics() {
+    NamedList<Object> lst = new SimpleOrderedMap<Object>();
     lst.add("handlerStart",handlerStart);
     lst.add("requests", numRequests);
     lst.add("errors", numErrors);

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/RequestHandlerUtils.java Thu Jan 13 02:09:33 2011
@@ -65,7 +65,7 @@ public class RequestHandlerUtils
     boolean commit   = params.getBool( UpdateParams.COMMIT,   false );
     
     if( optimize || commit || force ) {
-      CommitUpdateCommand cmd = new CommitUpdateCommand( optimize );
+      CommitUpdateCommand cmd = new CommitUpdateCommand(req, optimize );
       cmd.waitFlush    = params.getBool( UpdateParams.WAIT_FLUSH,    cmd.waitFlush    );
       cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER, cmd.waitSearcher );
       cmd.expungeDeletes = params.getBool( UpdateParams.EXPUNGE_DELETES, cmd.expungeDeletes);
@@ -89,7 +89,7 @@ public class RequestHandlerUtils
    * Check the request parameters and decide if it should commit or optimize.
    * If it does, it will check parameters for "waitFlush" and "waitSearcher"
    */
-  public static boolean handleCommit( UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException
+  public static boolean handleCommit(SolrQueryRequest req, UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException
   {
     if( params == null ) {
       params = new MapSolrParams( new HashMap<String, String>() ); 
@@ -99,7 +99,7 @@ public class RequestHandlerUtils
     boolean commit   = params.getBool( UpdateParams.COMMIT,   false );
     
     if( optimize || commit || force ) {
-      CommitUpdateCommand cmd = new CommitUpdateCommand( optimize );
+      CommitUpdateCommand cmd = new CommitUpdateCommand(req, optimize );
       cmd.waitFlush    = params.getBool( UpdateParams.WAIT_FLUSH,    cmd.waitFlush    );
       cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER, cmd.waitSearcher );
       cmd.expungeDeletes = params.getBool( UpdateParams.EXPUNGE_DELETES, cmd.expungeDeletes);      
@@ -113,7 +113,7 @@ public class RequestHandlerUtils
   /**
    * @since Solr 1.4
    */
-  public static boolean handleRollback( UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException
+  public static boolean handleRollback(SolrQueryRequest req, UpdateRequestProcessor processor, SolrParams params, boolean force ) throws IOException
   {
     if( params == null ) {
       params = new MapSolrParams( new HashMap<String, String>() ); 
@@ -122,7 +122,7 @@ public class RequestHandlerUtils
     boolean rollback = params.getBool( UpdateParams.ROLLBACK, false );
     
     if( rollback || force ) {
-      RollbackUpdateCommand cmd = new RollbackUpdateCommand();
+      RollbackUpdateCommand cmd = new RollbackUpdateCommand(req);
       processor.processRollback( cmd );
       return true;
     }

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapPuller.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapPuller.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapPuller.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapPuller.java Thu Jan 13 02:09:33 2011
@@ -22,12 +22,16 @@ import org.apache.commons.httpclient.met
 import org.apache.commons.io.IOUtils;
 import org.apache.lucene.index.IndexCommit;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.FastInputStream;
 import org.apache.solr.common.util.JavaBinCodec;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.FileUtils;
 import org.apache.solr.core.SolrCore;
 import static org.apache.solr.handler.ReplicationHandler.*;
+
+import org.apache.solr.request.LocalSolrQueryRequest;
+import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.update.CommitUpdateCommand;
 import org.apache.solr.update.DirectUpdateHandler2;
@@ -59,6 +63,9 @@ import java.util.zip.InflaterInputStream
 public class SnapPuller {
   private static final Logger LOG = LoggerFactory.getLogger(SnapPuller.class.getName());
 
+  private static final List<Map<String,Object>> EMPTY_LIST_OF_MAPS 
+    = Collections.emptyList();
+
   private final String masterUrl;
 
   private final ReplicationHandler replicationHandler;
@@ -188,14 +195,14 @@ public class SnapPuller {
     return getNamedListResponse(post);
   }
 
-  private NamedList getNamedListResponse(PostMethod method) throws IOException {
+  private NamedList<?> getNamedListResponse(PostMethod method) throws IOException {
     try {
       int status = myHttpClient.executeMethod(method);
       if (status != HttpStatus.SC_OK) {
         throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE,
                 "Request failed for the url " + method);
       }
-      return (NamedList) new JavaBinCodec().unmarshal(method.getResponseBodyAsStream());
+      return (NamedList<?>) new JavaBinCodec().unmarshal(method.getResponseBodyAsStream());
     } finally {
       try {
         method.releaseConnection();
@@ -212,8 +219,12 @@ public class SnapPuller {
     post.addParameter(COMMAND, CMD_GET_FILE_LIST);
     post.addParameter(CMD_INDEX_VERSION, String.valueOf(version));
     post.addParameter("wt", "javabin");
-    NamedList nl = getNamedListResponse(post);
-    List<Map<String, Object>> f = (List<Map<String, Object>>) nl.get(CMD_GET_FILE_LIST);
+
+    @SuppressWarnings("unchecked")
+    NamedList<List<Map<String, Object>>> nl 
+      = (NamedList<List<Map<String, Object>>>) getNamedListResponse(post);
+
+    List<Map<String, Object>> f = nl.get(CMD_GET_FILE_LIST);
     if (f != null)
       filesToDownload = Collections.synchronizedList(f);
     else {
@@ -221,7 +232,7 @@ public class SnapPuller {
       LOG.error("No files to download for indexversion: "+ version);
     }
 
-    f = (List<Map<String, Object>>) nl.get(CONF_FILES);
+    f = nl.get(CONF_FILES);
     if (f != null)
       confFilesToDownload = Collections.synchronizedList(f);
   }
@@ -461,18 +472,23 @@ public class SnapPuller {
   }
 
   private void doCommit() throws IOException {
-    CommitUpdateCommand cmd = new CommitUpdateCommand(false);
-    cmd.waitFlush = true;
-    cmd.waitSearcher = true;
-    solrCore.getUpdateHandler().commit(cmd);
-    if (solrCore.getUpdateHandler() instanceof DirectUpdateHandler2) {
-      LOG.info("Force open index writer to make sure older index files get deleted");
-      DirectUpdateHandler2 handler = (DirectUpdateHandler2) solrCore.getUpdateHandler();
-      handler.forceOpenWriter();
-      replicationHandler.refreshCommitpoint();
-    } else  {
-      LOG.warn("The update handler is not an instance or sub-class of DirectUpdateHandler2. " +
-              "ReplicationHandler may not be able to cleanup un-used index files.");
+    SolrQueryRequest req = new LocalSolrQueryRequest(solrCore, new ModifiableSolrParams());
+    try {
+      CommitUpdateCommand cmd = new CommitUpdateCommand(req, false);
+      cmd.waitFlush = true;
+      cmd.waitSearcher = true;
+      solrCore.getUpdateHandler().commit(cmd);
+      if (solrCore.getUpdateHandler() instanceof DirectUpdateHandler2) {
+        LOG.info("Force open index writer to make sure older index files get deleted");
+        DirectUpdateHandler2 handler = (DirectUpdateHandler2) solrCore.getUpdateHandler();
+        handler.forceOpenWriter();
+        replicationHandler.refreshCommitpoint();
+      } else  {
+        LOG.warn("The update handler is not an instance or sub-class of DirectUpdateHandler2. " +
+            "ReplicationHandler may not be able to cleanup un-used index files.");
+      }
+    } finally {
+      req.close();
     }
   }
 
@@ -695,10 +711,11 @@ public class SnapPuller {
    */
   private Collection<Map<String, Object>> getModifiedConfFiles(List<Map<String, Object>> confFilesToDownload) {
     if (confFilesToDownload == null || confFilesToDownload.isEmpty())
-      return Collections.EMPTY_LIST;
+      return EMPTY_LIST_OF_MAPS;
+
     //build a map with alias/name as the key
     Map<String, Map<String, Object>> nameVsFile = new HashMap<String, Map<String, Object>>();
-    NamedList names = new NamedList();
+    NamedList<String> names = new NamedList<String>();
     for (Map<String, Object> map : confFilesToDownload) {
       //if alias is present that is the name the file may have in the slave
       String name = (String) (map.get(ALIAS) == null ? map.get(NAME) : map.get(ALIAS));
@@ -716,7 +733,7 @@ public class SnapPuller {
         nameVsFile.remove(name); //checksums are same so the file need not be downloaded
       }
     }
-    return nameVsFile.isEmpty() ? Collections.EMPTY_LIST : nameVsFile.values();
+    return nameVsFile.isEmpty() ? EMPTY_LIST_OF_MAPS : nameVsFile.values();
   }
 
   /**
@@ -779,25 +796,25 @@ public class SnapPuller {
     //make a copy first because it can be null later
     List<Map<String, Object>> tmp = confFilesToDownload;
     //create a new instance. or else iterator may fail
-    return tmp == null ? Collections.EMPTY_LIST : new ArrayList<Map<String, Object>>(tmp);
+    return tmp == null ? EMPTY_LIST_OF_MAPS : new ArrayList<Map<String, Object>>(tmp);
   }
 
   List<Map<String, Object>> getConfFilesDownloaded() {
     //make a copy first because it can be null later
     List<Map<String, Object>> tmp = confFilesDownloaded;
     // NOTE: it's safe to make a copy of a SynchronizedCollection(ArrayList)
-    return tmp == null ? Collections.EMPTY_LIST : new ArrayList<Map<String, Object>>(tmp);
+    return tmp == null ? EMPTY_LIST_OF_MAPS : new ArrayList<Map<String, Object>>(tmp);
   }
 
   List<Map<String, Object>> getFilesToDownload() {
     //make a copy first because it can be null later
     List<Map<String, Object>> tmp = filesToDownload;
-    return tmp == null ? Collections.EMPTY_LIST : new ArrayList<Map<String, Object>>(tmp);
+    return tmp == null ? EMPTY_LIST_OF_MAPS : new ArrayList<Map<String, Object>>(tmp);
   }
 
   List<Map<String, Object>> getFilesDownloaded() {
     List<Map<String, Object>> tmp = filesDownloaded;
-    return tmp == null ? Collections.EMPTY_LIST : new ArrayList<Map<String, Object>>(tmp);
+    return tmp == null ? EMPTY_LIST_OF_MAPS : new ArrayList<Map<String, Object>>(tmp);
   }
 
   Map<String, Object> getCurrentFile() {

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapShooter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapShooter.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapShooter.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/SnapShooter.java Thu Jan 13 02:09:33 2011
@@ -71,7 +71,8 @@ public class SnapShooter {
   }
 
   void createSnapshot(final IndexCommit indexCommit, ReplicationHandler replicationHandler) {
-    NamedList details = new NamedList();
+
+    NamedList<Object> details = new NamedList<Object>();
     details.add("startTime", new Date().toString());
     File snapShotDir = null;
     String directoryName = null;

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XMLLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XMLLoader.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XMLLoader.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XMLLoader.java Thu Jan 13 02:09:33 2011
@@ -66,7 +66,7 @@ class XMLLoader extends ContentStreamLoa
       }
 
       XMLStreamReader parser = inputFactory.createXMLStreamReader(reader);
-      this.processUpdate(processor, parser);
+      this.processUpdate(req, processor, parser);
     }
     catch (XMLStreamException e) {
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e.getMessage(), e);
@@ -81,7 +81,7 @@ class XMLLoader extends ContentStreamLoa
   /**
    * @since solr 1.2
    */
-  void processUpdate(UpdateRequestProcessor processor, XMLStreamReader parser)
+  void processUpdate(SolrQueryRequest req, UpdateRequestProcessor processor, XMLStreamReader parser)
           throws XMLStreamException, IOException, FactoryConfigurationError,
           InstantiationException, IllegalAccessException,
           TransformerConfigurationException {
@@ -98,7 +98,7 @@ class XMLLoader extends ContentStreamLoa
           if (currTag.equals(XmlUpdateRequestHandler.ADD)) {
             XmlUpdateRequestHandler.log.trace("SolrCore.update(add)");
 
-            addCmd = new AddUpdateCommand();
+            addCmd = new AddUpdateCommand(req);
 
             for (int i = 0; i < parser.getAttributeCount(); i++) {
               String attrName = parser.getAttributeLocalName(i);
@@ -120,7 +120,7 @@ class XMLLoader extends ContentStreamLoa
           } else if (XmlUpdateRequestHandler.COMMIT.equals(currTag) || XmlUpdateRequestHandler.OPTIMIZE.equals(currTag)) {
             XmlUpdateRequestHandler.log.trace("parsing " + currTag);
 
-            CommitUpdateCommand cmd = new CommitUpdateCommand(XmlUpdateRequestHandler.OPTIMIZE.equals(currTag));
+            CommitUpdateCommand cmd = new CommitUpdateCommand(req, XmlUpdateRequestHandler.OPTIMIZE.equals(currTag));
 
             boolean sawWaitSearcher = false, sawWaitFlush = false;
             for (int i = 0; i < parser.getAttributeCount(); i++) {
@@ -151,13 +151,13 @@ class XMLLoader extends ContentStreamLoa
           else if (XmlUpdateRequestHandler.ROLLBACK.equals(currTag)) {
             XmlUpdateRequestHandler.log.trace("parsing " + currTag);
 
-            RollbackUpdateCommand cmd = new RollbackUpdateCommand();
+            RollbackUpdateCommand cmd = new RollbackUpdateCommand(req);
 
             processor.processRollback(cmd);
           } // end rollback
           else if (XmlUpdateRequestHandler.DELETE.equals(currTag)) {
             XmlUpdateRequestHandler.log.trace("parsing delete");
-            processDelete(processor, parser);
+            processDelete(req, processor, parser);
           } // end delete
           break;
       }
@@ -167,9 +167,9 @@ class XMLLoader extends ContentStreamLoa
   /**
    * @since solr 1.3
    */
-  void processDelete(UpdateRequestProcessor processor, XMLStreamReader parser) throws XMLStreamException, IOException {
+  void processDelete(SolrQueryRequest req, UpdateRequestProcessor processor, XMLStreamReader parser) throws XMLStreamException, IOException {
     // Parse the command
-    DeleteUpdateCommand deleteCmd = new DeleteUpdateCommand();
+    DeleteUpdateCommand deleteCmd = new DeleteUpdateCommand(req);
 
     for (int i = 0; i < parser.getAttributeCount(); i++) {
       String attrName = parser.getAttributeLocalName(i);

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -84,47 +84,6 @@ public class XmlUpdateRequestHandler ext
     return new XMLLoader(processor, inputFactory);
   }
 
-
-  /**
-   * A Convenience method for getting back a simple XML string indicating
-   * success or failure from an XML formated Update (from the Reader)
-   *
-   * @since solr 1.2
-   * @deprecated Direct updates fro ma Reader, as well as the response 
-   *             format produced by this method, have been deprecated 
-   *             and will be removed in future versions.  Any code using
-   *             this method should be changed to use {@link #handleRequest} 
-   *             method with a ContentStream. 
-   */
-  @Deprecated
-  public void doLegacyUpdate(Reader input, Writer output) {
-    SolrCore core = SolrCore.getSolrCore();
-    SolrQueryRequest req = new LocalSolrQueryRequest(core, new HashMap<String,String[]>());
-
-    try {
-      // Old style requests do not choose a custom handler
-      UpdateRequestProcessorChain processorFactory = core.getUpdateProcessingChain(null);
-
-      SolrQueryResponse rsp = new SolrQueryResponse(); // ignored
-      XMLStreamReader parser = inputFactory.createXMLStreamReader(input);
-      UpdateRequestProcessor processor = processorFactory.createProcessor(req, rsp);
-      XMLLoader loader = (XMLLoader) newLoader(req, processor);
-      loader.processUpdate(processor, parser);
-      processor.finish();
-      output.write("<result status=\"0\"></result>");
-    }
-    catch (Exception ex) {
-      try {
-        SolrException.logOnce(log, "Error processing \"legacy\" update command", ex);
-        XML.writeXML(output, "result", SolrException.toStr(ex), "status", "1");
-      } catch (Exception ee) {
-        log.error("Error writing to output stream: " + ee);
-      }
-    }
-    finally {
-      req.close();
-    }
-  }
   //////////////////////// SolrInfoMBeans methods //////////////////////
 
   @Override

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Thu Jan 13 02:09:33 2011
@@ -194,7 +194,7 @@ public class CoreAdminHandler extends Re
         wrappedReq = new LocalSolrQueryRequest(core, req.getParams());
         UpdateRequestProcessor processor =
                 processorChain.createProcessor(wrappedReq, rsp);
-        processor.processMergeIndexes(new MergeIndexesCommand(dirs));
+        processor.processMergeIndexes(new MergeIndexesCommand(dirs, req));
       } finally {
         core.close();
         wrappedReq.close();

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -450,7 +450,7 @@ public class LukeRequestHandler extends 
       if (ft.getAnalyzer().getPositionIncrementGap(f.getName()) != 0) {
     	  field.add("positionIncrementGap", ft.getAnalyzer().getPositionIncrementGap(f.getName()));
       }
-      field.add("copyDests", schema.getCopyFields(f.getName()));
+      field.add("copyDests", schema.getCopyFieldsList(f.getName()));
       field.add("copySources", schema.getCopySources(f.getName()));
 
       

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java Thu Jan 13 02:09:33 2011
@@ -20,6 +20,7 @@ package org.apache.solr.handler.admin;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URISyntaxException;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Locale;
@@ -122,7 +123,15 @@ public class ShowFileRequestHandler exte
     File adminFile = null;
     
     final SolrResourceLoader loader = req.getCore().getResourceLoader();
-    File configdir = new File( loader.getConfigDir() ); 
+    File configdir = new File( loader.getConfigDir() );
+    if (!configdir.exists()) {
+      // TODO: maybe we should just open it this way to start with?
+      try {
+        configdir = new File( loader.getClassLoader().getResource(loader.getConfigDir()).toURI() );
+      } catch (URISyntaxException e) {
+        throw new SolrException( ErrorCode.FORBIDDEN, "Can not access configuration directory!");
+      }
+    }
     String fname = req.getParams().get("file", null);
     if( fname == null ) {
       adminFile = configdir;
@@ -191,12 +200,8 @@ public class ShowFileRequestHandler exte
    * 
    * It is only used so that we can get rid of "/admin/get-file.jsp" and include
    * "admin-extra.html" in "/admin/index.html" using jsp scriptlets
-   * 
-   * @deprecated This functionality is implemented in
-   *             {@link #handleRequestBody(SolrQueryRequest, SolrQueryResponse)}.
    */
-  @Deprecated
-  public static String getFileContents( String path )
+  public static String getFileContents(SolrCore core, String path )
   {
     if( instance != null && instance.hiddenFiles != null ) {
       if( instance.hiddenFiles.contains( path ) ) {
@@ -204,7 +209,6 @@ public class ShowFileRequestHandler exte
       }
     }
     try {
-      SolrCore core = SolrCore.getSolrCore();
       InputStream input = core.getResourceLoader().openResource(path);
       return IOUtils.toString( input );
     }

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java Thu Jan 13 02:09:33 2011
@@ -35,17 +35,17 @@ public class SolrInfoMBeanHandler extend
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
     SolrCore core = req.getCore();
     
-    NamedList cats = new NamedList();
+    NamedList<NamedList<NamedList<Object>>> cats = new NamedList<NamedList<NamedList<Object>>>();
     rsp.add("solr-mbeans", cats);
     
     String[] requestedCats = req.getParams().getParams("cat");
     if (null == requestedCats || 0 == requestedCats.length) {
       for (SolrInfoMBean.Category cat : SolrInfoMBean.Category.values()) {
-        cats.add(cat.name(), new SimpleOrderedMap());
+        cats.add(cat.name(), new SimpleOrderedMap<NamedList<Object>>());
       }
     } else {
       for (String catName : requestedCats) {
-        cats.add(catName,new SimpleOrderedMap());
+        cats.add(catName,new SimpleOrderedMap<NamedList<Object>>());
       }
     }
          
@@ -58,10 +58,10 @@ public class SolrInfoMBeanHandler extend
 
       if ( ! ( requestedKeys.isEmpty() || requestedKeys.contains(key) ) ) continue;
 
-      NamedList catInfo = (NamedList) cats.get(m.getCategory().name());
+      NamedList<NamedList<Object>> catInfo = cats.get(m.getCategory().name());
       if ( null == catInfo ) continue;
 
-      NamedList mBeanInfo = new SimpleOrderedMap();
+      NamedList<Object> mBeanInfo = new SimpleOrderedMap<Object>();
       mBeanInfo.add("class", m.getName());
       mBeanInfo.add("version", m.getVersion());
       mBeanInfo.add("description", m.getDescription());

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/DebugComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/DebugComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/DebugComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/DebugComponent.java Thu Jan 13 02:09:33 2011
@@ -115,7 +115,7 @@ public class DebugComponent extends Sear
   @Override
   public void finishStage(ResponseBuilder rb) {
     if (rb.isDebug() && rb.stage == ResponseBuilder.STAGE_GET_FIELDS) {
-      NamedList info = null;
+      NamedList<Object> info = null;
       NamedList explain = new SimpleOrderedMap();
 
       Map.Entry<String, Object>[]  arr =  new NamedList.NamedListEntry[rb.resultIds.size()];
@@ -140,11 +140,11 @@ public class DebugComponent extends Sear
       }
 
       if (rb.isDebugResults()) {
-        explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap(arr));
+        explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap<Object>(arr));
       }
 
       if (info == null) {
-        info = new SimpleOrderedMap();
+        info = new SimpleOrderedMap<Object>();
       }
       if (rb.isDebugResults()) {
         int idx = info.indexOf("explain",0);
@@ -196,9 +196,11 @@ public class DebugComponent extends Sear
 
 
     if (source instanceof NamedList && dest instanceof NamedList) {
-      NamedList tmp = new NamedList();
-      NamedList sl = (NamedList)source;
-      NamedList dl = (NamedList)dest;
+      NamedList<Object> tmp = new NamedList<Object>();
+      @SuppressWarnings("unchecked")
+      NamedList<Object> sl = (NamedList<Object>)source;
+      @SuppressWarnings("unchecked")
+      NamedList<Object> dl = (NamedList<Object>)dest;
       for (int i=0; i<sl.size(); i++) {
         String skey = sl.getName(i);
         if (exclude != null && exclude.contains(skey)) continue;
@@ -228,7 +230,7 @@ public class DebugComponent extends Sear
     }
 
     // merge unlike elements in a list
-    List t = new ArrayList();
+    List<Object> t = new ArrayList<Object>();
     t.add(dest);
     t.add(source);
     return t;

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/FacetComponent.java Thu Jan 13 02:09:33 2011
@@ -78,7 +78,7 @@ public class FacetComponent extends Sear
               params,
               rb );
 
-      NamedList counts = f.getFacetCounts();
+      NamedList<Object> counts = f.getFacetCounts();
       String[] pivots = params.getParams( FacetParams.FACET_PIVOT );
       if( pivots != null && pivots.length > 0 ) {
         NamedList v = pivotHelper.process(rb, params, pivots);
@@ -264,7 +264,9 @@ public class FacetComponent extends Sear
       int shardNum = rb.getShardNum(srsp.getShard());
       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
 
-      fi.addExceptions((List)facet_counts.get("exception"));
+      @SuppressWarnings("unchecked")
+      List<String> excepts = (List<String>)facet_counts.get("exception");
+      fi.addExceptions(excepts);
 
       // handle facet queries
       NamedList facet_queries = (NamedList)facet_counts.get("facet_queries");
@@ -298,7 +300,10 @@ public class FacetComponent extends Sear
       if (dff.limit <= 0) continue; // no need to check these facets for refinement
       if (dff.minCount <= 1 && dff.sort.equals(FacetParams.FACET_SORT_INDEX)) continue;
 
-      dff._toRefine = new List[rb.shards.length];
+      @SuppressWarnings("unchecked") // generic array's are anoying
+      List<String>[] tmp = (List<String>[]) new List[rb.shards.length];
+      dff._toRefine = tmp;
+
       ShardFacetCount[] counts = dff.getCountSorted();
       int ntop = Math.min(counts.length, dff.offset + dff.limit);
       long smallestCount = counts.length == 0 ? 0 : counts[ntop-1].count;
@@ -353,8 +358,10 @@ public class FacetComponent extends Sear
       // int shardNum = rb.getShardNum(srsp.shard);
       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");
-
-      fi.addExceptions((List)facet_counts.get("exception"));
+  
+      @SuppressWarnings("unchecked") 
+      List<String> excepts = (List<String>)facet_counts.get("exception");
+      fi.addExceptions(excepts);
 
       if (facet_fields == null) continue; // this can happen when there's an exception      
 
@@ -384,23 +391,23 @@ public class FacetComponent extends Sear
 
     FacetInfo fi = rb._facetInfo;
 
-    NamedList facet_counts = new SimpleOrderedMap();
+    NamedList<Object> facet_counts = new SimpleOrderedMap<Object>();
 
     if (fi.exceptionList != null) {
       facet_counts.add("exception",fi.exceptionList);
     }
 
-    NamedList facet_queries = new SimpleOrderedMap();
+    NamedList<Number> facet_queries = new SimpleOrderedMap<Number>();
     facet_counts.add("facet_queries",facet_queries);
     for (QueryFacet qf : fi.queryFacets.values()) {
       facet_queries.add(qf.getKey(), num(qf.count));
     }
 
-    NamedList facet_fields = new SimpleOrderedMap();
+    NamedList<Object> facet_fields = new SimpleOrderedMap<Object>();
     facet_counts.add("facet_fields", facet_fields);
 
     for (DistribFieldFacet dff : fi.facets.values()) {
-      NamedList fieldCounts = new NamedList(); // order is more important for facets
+      NamedList<Object> fieldCounts = new NamedList<Object>(); // order is more important for facets
       facet_fields.add(dff.getKey(), fieldCounts);
 
       ShardFacetCount[] counts;
@@ -486,7 +493,7 @@ public class FacetComponent extends Sear
   public static class FacetInfo {
     public LinkedHashMap<String,QueryFacet> queryFacets;
     public LinkedHashMap<String,DistribFieldFacet> facets;
-    public List exceptionList;
+    public List<String> exceptionList;
 
     void parse(SolrParams params, ResponseBuilder rb) {
       queryFacets = new LinkedHashMap<String,QueryFacet>();
@@ -510,9 +517,9 @@ public class FacetComponent extends Sear
       }
     }
         
-    public void addExceptions(List exceptions) {
+    public void addExceptions(List<String> exceptions) {
       if (exceptions == null) return;
-      if (exceptionList == null) exceptionList = new ArrayList();
+      if (exceptionList == null) exceptionList = new ArrayList<String>();
       exceptionList.addAll(exceptions);
     }
   }

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java Thu Jan 13 02:09:33 2011
@@ -50,6 +50,10 @@ public class HighlightComponent extends 
   private PluginInfo info = PluginInfo.EMPTY_INFO;
   private SolrHighlighter highlighter;
 
+  public static SolrHighlighter getHighlighter(SolrCore core) {
+    HighlightComponent hl = (HighlightComponent) core.getSearchComponents().get(HighlightComponent.COMPONENT_NAME);
+    return hl==null ? null: hl.getHighlighter();    
+  }
 
   public void init(PluginInfo info) {
     this.info = info;

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/QueryComponent.java Thu Jan 13 02:09:33 2011
@@ -527,8 +527,7 @@ public class QueryComponent extends Sear
     SolrQueryResponse rsp = rb.rsp;
     //pre-fetch returned documents
     if (!req.getParams().getBool(ShardParams.IS_SHARD,false) && rb.getResults().docList != null && rb.getResults().docList.size()<=50) {
-      // TODO: this may depend on the highlighter component (or other components?)
-      SolrPluginUtils.optimizePreFetchDocs(rb.getResults().docList, rb.getQuery(), req, rsp);
+      SolrPluginUtils.optimizePreFetchDocs(rb, rb.getResults().docList, rb.getQuery(), req, rsp);
     }
   }
 

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/StatsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/StatsComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/StatsComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/StatsComponent.java Thu Jan 13 02:09:33 2011
@@ -124,8 +124,8 @@ public class StatsComponent extends Sear
 
     StatsInfo si = rb._statsInfo;
 
-    NamedList stats = new SimpleOrderedMap();
-    NamedList stats_fields = new SimpleOrderedMap();
+    NamedList<NamedList<Object>> stats = new SimpleOrderedMap<NamedList<Object>>();
+    NamedList<Object> stats_fields = new SimpleOrderedMap<Object>();
     stats.add("stats_fields", stats_fields);
     for (String field : si.statsFields.keySet()) {
       NamedList stv = si.statsFields.get(field).getStatsValues();
@@ -209,8 +209,8 @@ class SimpleStats {
     return res;
   }
 
-  public NamedList getStatsFields() throws IOException {
-    NamedList<NamedList<Number>> res = new SimpleOrderedMap<NamedList<Number>>();
+  public NamedList<Object> getStatsFields() throws IOException {
+    NamedList<Object> res = new SimpleOrderedMap<Object>();
     String[] statsFs = params.getParams(StatsParams.STATS_FIELD);
     boolean isShard = params.getBool(ShardParams.IS_SHARD, false);
     if (null != statsFs) {
@@ -221,7 +221,7 @@ class SimpleStats {
         }
         SchemaField sf = searcher.getSchema().getField(f);
         FieldType ft = sf.getType();
-        NamedList stv;
+        NamedList<?> stv;
 
         // Currently, only UnInvertedField can deal with multi-part trie fields
         String prefix = TrieField.getMainValuePrefix(ft);
@@ -243,7 +243,7 @@ class SimpleStats {
     return res;
   }
   
-  public NamedList getFieldCacheStats(String fieldName, String[] facet ) {
+  public NamedList<?> getFieldCacheStats(String fieldName, String[] facet ) {
     FieldType ft = searcher.getSchema().getFieldType(fieldName);
 
     FieldCache.DocTermsIndex si = null;

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java Thu Jan 13 02:09:33 2011
@@ -77,7 +77,7 @@ public class TermVectorComponent extends
       return;
     }
 
-    NamedList termVectors = new NamedList();
+    NamedList<Object> termVectors = new NamedList<Object>();
     rb.rsp.add(TERM_VECTORS, termVectors);
     FieldOptions allFields = new FieldOptions();
     //figure out what options we have, and try to get the appropriate vector
@@ -106,7 +106,7 @@ public class TermVectorComponent extends
     IndexSchema schema = rb.req.getSchema();
     //Build up our per field mapping
     Map<String, FieldOptions> fieldOptions = new HashMap<String, FieldOptions>();
-    NamedList warnings = new NamedList();
+    NamedList<List<String>> warnings = new NamedList<List<String>>();
     List<String>  noTV = new ArrayList<String>();
     List<String>  noPos = new ArrayList<String>();
     List<String>  noOff = new ArrayList<String>();
@@ -187,7 +187,7 @@ public class TermVectorComponent extends
     mapper.fieldOptions = allFields; //this will only stay set if fieldOptions.isEmpty() (in other words, only if the user didn't set any fields)
     while (iter.hasNext()) {
       Integer docId = iter.next();
-      NamedList docNL = new NamedList();
+      NamedList<Object> docNL = new NamedList<Object>();
       mapper.docNL = docNL;
       termVectors.add("doc-" + docId, docNL);
 
@@ -272,7 +272,7 @@ public class TermVectorComponent extends
 
   private static class TVMapper extends TermVectorMapper {
     private IndexReader reader;
-    private NamedList docNL;
+    private NamedList<Object> docNL;
 
     //needs to be set for each new field
     FieldOptions fieldOptions;
@@ -280,7 +280,7 @@ public class TermVectorComponent extends
     //internal vars not passed in by construction
     private boolean useOffsets, usePositions;
     //private Map<String, Integer> idfCache;
-    private NamedList fieldNL;
+    private NamedList<Object> fieldNL;
     private Term currentTerm;
 
 
@@ -289,34 +289,34 @@ public class TermVectorComponent extends
     }
 
     public void map(BytesRef term, int frequency, TermVectorOffsetInfo[] offsets, int[] positions) {
-      NamedList termInfo = new NamedList();
-        fieldNL.add(term.utf8ToString(), termInfo);
-        if (fieldOptions.termFreq == true) {
-          termInfo.add("tf", frequency);
-        }
-        if (useOffsets == true) {
-          NamedList theOffsets = new NamedList();
-          termInfo.add("offsets", theOffsets);
-          for (int i = 0; i < offsets.length; i++) {
-            TermVectorOffsetInfo offset = offsets[i];
-            theOffsets.add("start", offset.getStartOffset());
-            theOffsets.add("end", offset.getEndOffset());
-          }
-        }
-        if (usePositions == true) {
-          NamedList positionsNL = new NamedList();
-          for (int i = 0; i < positions.length; i++) {
-            positionsNL.add("position", positions[i]);
-          }
-          termInfo.add("positions", positionsNL);
-        }
-        if (fieldOptions.docFreq == true) {
-          termInfo.add("df", getDocFreq(term));
+      NamedList<Object> termInfo = new NamedList<Object>();
+      fieldNL.add(term.utf8ToString(), termInfo);
+      if (fieldOptions.termFreq == true) {
+        termInfo.add("tf", frequency);
+      }
+      if (useOffsets == true) {
+        NamedList<Number> theOffsets = new NamedList<Number>();
+        termInfo.add("offsets", theOffsets);
+        for (int i = 0; i < offsets.length; i++) {
+          TermVectorOffsetInfo offset = offsets[i];
+          theOffsets.add("start", offset.getStartOffset());
+          theOffsets.add("end", offset.getEndOffset());
         }
-        if (fieldOptions.tfIdf == true) {
-          double tfIdfVal = ((double) frequency) / getDocFreq(term);
-          termInfo.add("tf-idf", tfIdfVal);
+      }
+      if (usePositions == true) {
+        NamedList<Integer> positionsNL = new NamedList<Integer>();
+        for (int i = 0; i < positions.length; i++) {
+          positionsNL.add("position", positions[i]);
         }
+        termInfo.add("positions", positionsNL);
+      }
+      if (fieldOptions.docFreq == true) {
+        termInfo.add("df", getDocFreq(term));
+      }
+      if (fieldOptions.tfIdf == true) {
+        double tfIdfVal = ((double) frequency) / getDocFreq(term);
+        termInfo.add("tf-idf", tfIdfVal);
+      }
     }
 
     private int getDocFreq(BytesRef term) {
@@ -343,7 +343,7 @@ public class TermVectorComponent extends
       }
       useOffsets = storeOffsets && fieldOptions.offsets;
       usePositions = storePositions && fieldOptions.positions;
-      fieldNL = new NamedList();
+      fieldNL = new NamedList<Object>();
       docNL.add(field, fieldNL);
     }
 
@@ -394,4 +394,4 @@ public class TermVectorComponent extends
 class FieldOptions {
   String fieldName;
   boolean termFreq, positions, offsets, docFreq, tfIdf;
-}
\ No newline at end of file
+}

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermsComponent.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermsComponent.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/handler/component/TermsComponent.java Thu Jan 13 02:09:33 2011
@@ -75,7 +75,7 @@ public class TermsComponent extends Sear
 
     String[] fields = params.getParams(TermsParams.TERMS_FIELD);
 
-    NamedList termsResult = new SimpleOrderedMap();
+    NamedList<Object> termsResult = new SimpleOrderedMap<Object>();
     rb.rsp.add("terms", termsResult);
 
     if (fields == null || fields.length==0) return;
@@ -107,7 +107,7 @@ public class TermsComponent extends Sear
     Fields lfields = MultiFields.getFields(sr);
 
     for (String field : fields) {
-      NamedList fieldTerms = new NamedList();
+      NamedList<Integer> fieldTerms = new NamedList<Integer>();
       termsResult.add(field, fieldTerms);
 
       Terms terms = lfields == null ? null : lfields.terms(field);
@@ -273,7 +273,9 @@ public class TermsComponent extends Sear
     TermsHelper th = rb._termsHelper;
     if (th != null) {
       for (ShardResponse srsp : sreq.responses) {
-        th.parse((NamedList) srsp.getSolrResponse().getResponse().get("terms"));
+        @SuppressWarnings("unchecked")
+        NamedList<NamedList<Number>> terms = (NamedList<NamedList<Number>>) srsp.getSolrResponse().getResponse().get("terms");
+        th.parse(terms);
       }
     }
   }
@@ -331,7 +333,7 @@ public class TermsComponent extends Sear
       }
     }
 
-    public void parse(NamedList terms) {
+    public void parse(NamedList<NamedList<Number>> terms) {
       // exit if there is no terms
       if (terms == null) {
         return;
@@ -364,7 +366,7 @@ public class TermsComponent extends Sear
     }
 
     public NamedList buildResponse() {
-      NamedList response = new SimpleOrderedMap();
+      NamedList<Object> response = new SimpleOrderedMap<Object>();
 
       // determine if we are going index or count sort
       boolean sort = !TermsParams.TERMS_SORT_INDEX.equals(params.get(
@@ -393,7 +395,7 @@ public class TermsComponent extends Sear
 
       // loop though each field we want terms from
       for (String key : fieldmap.keySet()) {
-        NamedList fieldterms = new SimpleOrderedMap();
+        NamedList<Number> fieldterms = new SimpleOrderedMap<Number>();
         TermsResponse.Term[] data = null;
         if (sort) {
           data = getCountSorted(fieldmap.get(key));

Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java?rev=1058390&r1=1058389&r2=1058390&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java Thu Jan 13 02:09:33 2011
@@ -1,5 +1,6 @@
 package org.apache.solr.request;
 
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.DocIdSet;
 import org.apache.lucene.search.DocIdSetIterator;
@@ -7,6 +8,7 @@ import org.apache.lucene.search.FieldCac
 import org.apache.lucene.search.Filter;
 import org.apache.lucene.util.PriorityQueue;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.ReaderUtil;
 import org.apache.lucene.util.packed.Direct16;
 import org.apache.lucene.util.packed.Direct32;
 import org.apache.lucene.util.packed.Direct8;
@@ -16,7 +18,6 @@ import org.apache.solr.common.params.Fac
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.search.DocSet;
-import org.apache.solr.search.SolrIndexReader;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.BoundedTreeSet;
 import org.apache.solr.util.ByteUtils;
@@ -60,17 +61,14 @@ class PerSegmentSingleValuedFaceting {
   }
 
 
-  NamedList getFacetCounts(Executor executor) throws IOException {
+  NamedList<Integer> getFacetCounts(Executor executor) throws IOException {
 
     CompletionService<SegFacet> completionService = new ExecutorCompletionService<SegFacet>(executor);
 
     // reuse the translation logic to go from top level set to per-segment set
     baseSet = docs.getTopFilter();
 
-    SolrIndexReader topReader = searcher.getReader();
-    final SolrIndexReader[] leafReaders = topReader.getLeafReaders();
-    int[] offsets = topReader.getLeafOffsets();
-
+    final AtomicReaderContext[] leaves = ReaderUtil.leaves(searcher.getTopReaderContext());
     // The list of pending tasks that aren't immediately submitted
     // TODO: Is there a completion service, or a delegating executor that can
     // limit the number of concurrent tasks submitted to a bigger executor?
@@ -78,8 +76,8 @@ class PerSegmentSingleValuedFaceting {
 
     int threads = nThreads <= 0 ? Integer.MAX_VALUE : nThreads;
 
-    for (int i=0; i<leafReaders.length; i++) {
-      final SegFacet segFacet = new SegFacet(leafReaders[i], offsets[i]);
+    for (int i=0; i<leaves.length; i++) {
+      final SegFacet segFacet = new SegFacet(leaves[i]);
 
       Callable<SegFacet> task = new Callable<SegFacet>() {
         public SegFacet call() throws Exception {
@@ -101,7 +99,7 @@ class PerSegmentSingleValuedFaceting {
     // now merge the per-segment results
     PriorityQueue<SegFacet> queue = new PriorityQueue<SegFacet>() {
       {
-        initialize(leafReaders.length);
+        initialize(leaves.length);
       }
       @Override
       protected boolean lessThan(SegFacet a, SegFacet b) {
@@ -112,7 +110,7 @@ class PerSegmentSingleValuedFaceting {
 
     boolean hasMissingCount=false;
     int missingCount=0;
-    for (int i=0; i<leafReaders.length; i++) {
+    for (int i=0; i<leaves.length; i++) {
       SegFacet seg = null;
 
       try {
@@ -189,7 +187,7 @@ class PerSegmentSingleValuedFaceting {
       if (stop) break;
     }
 
-    NamedList res = collector.getFacetCounts();
+    NamedList<Integer> res = collector.getFacetCounts();
 
     // convert labels to readable form    
     FieldType ft = searcher.getSchema().getFieldType(fieldName);
@@ -209,12 +207,9 @@ class PerSegmentSingleValuedFaceting {
   }
 
   class SegFacet {
-    SolrIndexReader reader;
-    int readerOffset;
-
-    SegFacet(SolrIndexReader reader, int readerOffset) {
-      this.reader = reader;
-      this.readerOffset = readerOffset;
+    AtomicReaderContext context;
+    SegFacet(AtomicReaderContext context) {
+      this.context = context;
     }
     
     FieldCache.DocTermsIndex si;
@@ -228,7 +223,7 @@ class PerSegmentSingleValuedFaceting {
     BytesRef tempBR = new BytesRef();
 
     void countTerms() throws IOException {
-      si = FieldCache.DEFAULT.getTermsIndex(reader, fieldName);
+      si = FieldCache.DEFAULT.getTermsIndex(context.reader, fieldName);
       // SolrCore.log.info("reader= " + reader + "  FC=" + System.identityHashCode(si));
 
       if (prefix!=null) {
@@ -250,7 +245,7 @@ class PerSegmentSingleValuedFaceting {
         // count collection array only needs to be as big as the number of terms we are
         // going to collect counts for.
         final int[] counts = this.counts = new int[nTerms];
-        DocIdSet idSet = baseSet.getDocIdSet(reader);
+        DocIdSet idSet = baseSet.getDocIdSet(context);
         DocIdSetIterator iter = idSet.iterator();
 
 
@@ -324,7 +319,7 @@ class PerSegmentSingleValuedFaceting {
 abstract class FacetCollector {
   /*** return true to stop collection */
   public abstract boolean collect(BytesRef term, int count);
-  public abstract NamedList getFacetCounts();
+  public abstract NamedList<Integer> getFacetCounts();
 }
 
 
@@ -358,8 +353,8 @@ class CountSortedFacetCollector extends 
   }
 
   @Override
-  public NamedList getFacetCounts() {
-    NamedList res = new NamedList();
+  public NamedList<Integer> getFacetCounts() {
+    NamedList<Integer> res = new NamedList<Integer>();
     int off=offset;
     int lim=limit>=0 ? limit : Integer.MAX_VALUE;
      // now select the right page from the results
@@ -377,7 +372,7 @@ class IndexSortedFacetCollector extends 
   int offset;
   int limit;
   final int mincount;
-  final NamedList res = new NamedList();
+  final NamedList<Integer> res = new NamedList<Integer>();
 
 
   public IndexSortedFacetCollector(int offset, int limit, int mincount) {
@@ -406,7 +401,7 @@ class IndexSortedFacetCollector extends 
   }
 
   @Override
-  public NamedList getFacetCounts() {
+  public NamedList<Integer> getFacetCounts() {
     return res;
   }
 }