You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2015/08/28 23:24:45 UTC

svn commit: r1698421 - in /lucene/dev/trunk/solr: ./ contrib/velocity/src/java/org/apache/solr/response/ core/src/java/org/apache/solr/client/solrj/embedded/ core/src/java/org/apache/solr/core/ core/src/java/org/apache/solr/handler/component/ core/src/...

Author: yonik
Date: Fri Aug 28 21:24:44 2015
New Revision: 1698421

URL: http://svn.apache.org/r1698421
Log:
SOLR-7957: expand ResultContext to allow for multiple DocLists per response, remove redundant TransformContext

Added:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BasicResultContext.java   (with props)
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java
      - copied, changed from r1697128, lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java
Removed:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/TransformContext.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/TransformerWithContext.java
Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRangeQuery.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri Aug 28 21:24:44 2015
@@ -47,6 +47,12 @@ Upgrading from Solr 5.x
 * The deprecated zkCredientialsProvider element in solrcloud section of solr.xml
   is now removed. Use the correct spelling (zkCredentialsProvider) instead.
 
+* SOLR-7957: internal/expert - ResultContext was significantly changed and expanded
+  to allow for multiple full query results (DocLists) per Solr request.
+  TransformContext was rendered redundant and was removed. (yonik)
+
+
+
 Detailed Change List
 ----------------------
 

Modified: lucene/dev/trunk/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java (original)
+++ lucene/dev/trunk/solr/contrib/velocity/src/java/org/apache/solr/response/PageTool.java Fri Aug 28 21:24:44 2015
@@ -18,7 +18,6 @@
 package org.apache.solr.response;
 
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.search.DocList;
 import org.apache.solr.search.DocSlice;
 import org.apache.solr.common.SolrDocumentList;
@@ -50,7 +49,7 @@ public class PageTool {
         results_found = doc_slice.matches();
         start = doc_slice.offset();
       } else if(docs instanceof ResultContext) {
-        DocList dl = ((ResultContext) docs).docs;
+        DocList dl = ((ResultContext) docs).getDocList();
         results_found = dl.matches();
         start = dl.offset();
       } else if(docs instanceof SolrDocumentList) {

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java Fri Aug 28 21:24:44 2015
@@ -189,9 +189,9 @@ public class EmbeddedSolrServer extends
                 public void writeResults(ResultContext ctx, JavaBinCodec codec) throws IOException {
                   // write an empty list...
                   SolrDocumentList docs = new SolrDocumentList();
-                  docs.setNumFound(ctx.docs.matches());
-                  docs.setStart(ctx.docs.offset());
-                  docs.setMaxScore(ctx.docs.maxScore());
+                  docs.setNumFound(ctx.getDocList().matches());
+                  docs.setStart(ctx.getDocList().offset());
+                  docs.setMaxScore(ctx.getDocList().maxScore());
                   codec.writeSolrDocumentList(docs);
 
                   // This will transform

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java Fri Aug 28 21:24:44 2015
@@ -70,7 +70,7 @@ public class QuerySenderListener extends
         for (int i=0; i<values.size(); i++) {
           Object o = values.getVal(i);
           if (o instanceof ResultContext) {
-            o = ((ResultContext)o).docs;
+            o = ((ResultContext)o).getDocList();
           }
           if (o instanceof DocList) {
             DocList docs = (DocList)o;

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Fri Aug 28 21:24:44 2015
@@ -36,7 +36,6 @@ import org.apache.lucene.index.IndexRead
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.ReaderUtil;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.FieldComparator;
 import org.apache.lucene.search.LeafFieldComparator;
 import org.apache.lucene.search.MatchNoDocsQuery;
@@ -66,6 +65,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.request.SolrQueryRequest;
+import org.apache.solr.response.BasicResultContext;
 import org.apache.solr.response.ResultContext;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.schema.FieldType;
@@ -348,9 +348,7 @@ public class QueryComponent extends Sear
       }
       rb.setResults(res);
 
-      ResultContext ctx = new ResultContext();
-      ctx.docs = rb.getResults().docList;
-      ctx.query = null; // anything?
+      ResultContext ctx = new BasicResultContext(rb);
       rsp.add("response", ctx);
       return;
     }
@@ -503,9 +501,7 @@ public class QueryComponent extends Sear
         rb.setResult(result);
 
         if (grouping.mainResult != null) {
-          ResultContext ctx = new ResultContext();
-          ctx.docs = grouping.mainResult;
-          ctx.query = null; // TODO? add the query?
+          ResultContext ctx = new BasicResultContext(rb, grouping.mainResult);
           rsp.add("response", ctx);
           rsp.getToLog().add("hits", grouping.mainResult.matches());
         } else if (!grouping.getCommands().isEmpty()) { // Can never be empty since grouping.execute() checks for this.
@@ -522,9 +518,7 @@ public class QueryComponent extends Sear
     searcher.search(result, cmd);
     rb.setResult(result);
 
-    ResultContext ctx = new ResultContext();
-    ctx.docs = rb.getResults().docList;
-    ctx.query = rb.getQuery();
+    ResultContext ctx = new BasicResultContext(rb);
     rsp.add("response", ctx);
     rsp.getToLog().add("hits", rb.getResults().docList.matches());
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java Fri Aug 28 21:24:44 2015
@@ -50,9 +50,10 @@ import org.apache.solr.common.util.Named
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.BasicResultContext;
+import org.apache.solr.response.ResultContext;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.response.transform.DocTransformer;
-import org.apache.solr.response.transform.TransformContext;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
@@ -153,8 +154,7 @@ public class RealTimeGetComponent extend
 
     DocTransformer transformer = rsp.getReturnFields().getTransformer();
     if (transformer != null) {
-      TransformContext context = new TransformContext();
-      context.req = req;
+      ResultContext context = new BasicResultContext(null, rsp.getReturnFields(), null, null, req);
       transformer.setContext(context);
     }
    try {
@@ -174,7 +174,7 @@ public class RealTimeGetComponent extend
              case UpdateLog.ADD:
                SolrDocument doc = toSolrDoc((SolrInputDocument)entry.get(entry.size()-1), core.getLatestSchema());
                if(transformer!=null) {
-                 transformer.transform(doc, -1); // unknown docID
+                 transformer.transform(doc, -1, 0); // unknown docID
                }
               docList.add(doc);
               break;
@@ -200,7 +200,7 @@ public class RealTimeGetComponent extend
        StoredDocument luceneDocument = searcher.doc(docid, rsp.getReturnFields().getLuceneFieldNames());
        SolrDocument doc = toSolrDoc(luceneDocument,  core.getLatestSchema());
        if( transformer != null ) {
-         transformer.transform(doc, docid);
+         transformer.transform(doc, docid, 0);
        }
        docList.add(doc);
      }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java Fri Aug 28 21:24:44 2015
@@ -71,11 +71,12 @@ public class ResponseLogComponent extend
     if (schema.getUniqueKeyField() == null) return;
 
     ResultContext rc = (ResultContext) rb.rsp.getValues().get("response");
-    
-    if (rc.docs.hasScores()) {
-      processScores(rb, rc.docs, schema, searcher);
+
+    DocList docs = rc.getDocList();
+    if (docs.hasScores()) {
+      processScores(rb, docs, schema, searcher);
     } else {
-      processIds(rb, rc.docs, schema, searcher);
+      processIds(rb, docs, schema, searcher);
     }
   }
 

Added: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BasicResultContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BasicResultContext.java?rev=1698421&view=auto
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BasicResultContext.java (added)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BasicResultContext.java Fri Aug 28 21:24:44 2015
@@ -0,0 +1,76 @@
+package org.apache.solr.response;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.search.Query;
+import org.apache.solr.handler.component.ResponseBuilder;
+import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.search.DocList;
+import org.apache.solr.search.ReturnFields;
+import org.apache.solr.search.SolrIndexSearcher;
+
+public class BasicResultContext extends ResultContext {
+  private DocList docList;
+  private ReturnFields returnFields;
+  private SolrIndexSearcher searcher;
+  private Query query;
+  private SolrQueryRequest req;
+
+  public BasicResultContext(DocList docList, ReturnFields returnFields, SolrIndexSearcher searcher, Query query, SolrQueryRequest req) {
+    this.docList = docList;
+    this.returnFields = returnFields;
+    this.searcher = searcher;
+    this.query = query;
+    this.req = req;
+  }
+
+  public BasicResultContext(ResponseBuilder rb) {
+    this(rb.getResults().docList, rb.rsp.getReturnFields(), null, rb.getQuery(), rb.req);
+  }
+
+  public BasicResultContext(ResponseBuilder rb, DocList docList) {
+    this(docList, rb.rsp.getReturnFields(), null, rb.getQuery(), rb.req);
+  }
+
+  @Override
+  public DocList getDocList() {
+    return docList;
+  }
+
+  @Override
+  public ReturnFields getReturnFields() {
+    return returnFields;
+  }
+
+  @Override
+  public SolrIndexSearcher getSearcher() {
+    if (searcher != null) return searcher;
+    if (req != null) return req.getSearcher();
+    return null;
+  }
+
+  @Override
+  public Query getQuery() {
+    return query;
+  }
+
+  @Override
+  public SolrQueryRequest getRequest() {
+    return req;
+  }
+}

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java Fri Aug 28 21:24:44 2015
@@ -23,11 +23,10 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Writer;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import org.apache.lucene.index.StorableField;
-import org.apache.lucene.index.StoredDocument;
-import org.apache.lucene.index.IndexableField;
 import org.apache.solr.client.solrj.impl.BinaryResponseParser;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.params.CommonParams;
@@ -39,7 +38,6 @@ import org.apache.solr.schema.SchemaFiel
 import org.apache.solr.search.DocList;
 import org.apache.solr.search.ReturnFields;
 import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.search.SolrReturnFields;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -73,7 +71,7 @@ public class BinaryResponseWriter implem
   public static class Resolver implements JavaBinCodec.ObjectResolver , JavaBinCodec.WritableDocFields {
     protected final SolrQueryRequest solrQueryRequest;
     protected IndexSchema schema;
-    protected SolrIndexSearcher searcher;
+    protected SolrIndexSearcher searcher; // TODO - this is never set?  always null?
     protected final ReturnFields returnFields;
 
     public Resolver(SolrQueryRequest req, ReturnFields returnFields) {
@@ -88,8 +86,7 @@ public class BinaryResponseWriter implem
         return null; // null means we completely handled it
       }
       if (o instanceof DocList) {
-        ResultContext ctx = new ResultContext();
-        ctx.docs = (DocList) o;
+        ResultContext ctx = new BasicResultContext((DocList)o, returnFields, null, null, solrQueryRequest);
         writeResults(ctx, codec);
         return null; // null means we completely handled it
       }
@@ -118,8 +115,8 @@ public class BinaryResponseWriter implem
     }
 
     protected void writeResultsBody( ResultContext res, JavaBinCodec codec ) throws IOException {
-      codec.writeTag(JavaBinCodec.ARR, res.docs.size());
-      DocsStreamer docStreamer = new DocsStreamer(res.docs,res.query, solrQueryRequest, returnFields);
+      codec.writeTag(JavaBinCodec.ARR, res.getDocList().size());
+      Iterator<SolrDocument> docStreamer = res.getProcessedDocuments();
       while (docStreamer.hasNext()) {
         SolrDocument doc = docStreamer.next();
         codec.writeSolrDocument(doc);
@@ -128,14 +125,13 @@ public class BinaryResponseWriter implem
 
     public void writeResults(ResultContext ctx, JavaBinCodec codec) throws IOException {
       codec.writeTag(JavaBinCodec.SOLRDOCLST);
-      boolean wantsScores = returnFields.wantsScore() && ctx.docs.hasScores();
       List l = new ArrayList(3);
-      l.add((long) ctx.docs.matches());
-      l.add((long) ctx.docs.offset());
+      l.add((long) ctx.getDocList().matches());
+      l.add((long) ctx.getDocList().offset());
       
       Float maxScore = null;
-      if (wantsScores) {
-        maxScore = ctx.docs.maxScore();
+      if (ctx.wantsScores()) {
+        maxScore = ctx.getDocList().maxScore();
       }
       l.add(maxScore);
       codec.writeArray(l);

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java Fri Aug 28 21:24:44 2015
@@ -340,13 +340,13 @@ class CSVWriter extends TextResponseWrit
       printer.println();
     }
 
-    if (responseObj instanceof ResultContext ) {
-      writeDocuments(null, (ResultContext)responseObj, returnFields );
+    if (responseObj instanceof ResultContext) {
+      writeDocuments(null, (ResultContext)responseObj );
     }
     else if (responseObj instanceof DocList) {
-      ResultContext ctx = new ResultContext();
-      ctx.docs =  (DocList)responseObj;
-      writeDocuments(null, ctx, returnFields );
+
+      ResultContext ctx = new BasicResultContext((DocList)responseObj, returnFields, null, null, req);
+      writeDocuments(null, ctx );
     } else if (responseObj instanceof SolrDocumentList) {
       writeSolrDocumentList(null, (SolrDocumentList)responseObj, returnFields );
     }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/DocsStreamer.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/DocsStreamer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/DocsStreamer.java Fri Aug 28 21:24:44 2015
@@ -24,17 +24,12 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.StorableField;
 import org.apache.lucene.index.StoredDocument;
-import org.apache.lucene.search.Query;
 import org.apache.lucene.util.BytesRef;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.transform.DocTransformer;
-import org.apache.solr.response.transform.TransformContext;
 import org.apache.solr.schema.BinaryField;
 import org.apache.solr.schema.BoolField;
 import org.apache.solr.schema.FieldType;
@@ -50,8 +45,6 @@ import org.apache.solr.schema.TrieIntFie
 import org.apache.solr.schema.TrieLongField;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocList;
-import org.apache.solr.search.ReturnFields;
-import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.search.SolrReturnFields;
 
 /**
@@ -59,38 +52,28 @@ import org.apache.solr.search.SolrReturn
  */
 public class DocsStreamer implements Iterator<SolrDocument> {
   public static final Set<Class> KNOWN_TYPES = new HashSet<>();
+
+  private org.apache.solr.response.ResultContext rctx;
   private final DocList docs;
 
-  private SolrIndexSearcher searcher;
-  private final IndexSchema schema;
   private DocTransformer transformer;
   private DocIterator docIterator;
+
   private boolean onlyPseudoFields;
   private Set<String> fnames;
-  private TransformContext context;
   private int idx = -1;
 
-  public DocsStreamer(DocList docList, Query query, SolrQueryRequest req, ReturnFields returnFields) {
-    this.docs = docList;
-    this.schema = req.getSchema();
-    searcher = req.getSearcher();
-    transformer = returnFields.getTransformer();
-    docIterator = docList.iterator();
-    context = new TransformContext();
-    context.query = query;
-    context.wantsScores = returnFields.wantsScore() && docList.hasScores();
-    context.req = req;
-    context.searcher = searcher;
-    context.iterator = docIterator;
-    fnames = returnFields.getLuceneFieldNames();
-    onlyPseudoFields = (fnames == null && !returnFields.wantsAllFields() && !returnFields.hasPatternMatching())
+  public DocsStreamer(ResultContext rctx) {
+    this.rctx = rctx;
+    this.docs = rctx.getDocList();
+    transformer = rctx.getReturnFields().getTransformer();
+    docIterator = this.docs.iterator();
+    fnames = rctx.getReturnFields().getLuceneFieldNames();
+    onlyPseudoFields = (fnames == null && !rctx.getReturnFields().wantsAllFields() && !rctx.getReturnFields().hasPatternMatching())
         || (fnames != null && fnames.size() == 1 && SolrReturnFields.SCORE.equals(fnames.iterator().next()));
-    if (transformer != null) transformer.setContext(context);
+    if (transformer != null) transformer.setContext(rctx);
   }
 
-  public boolean hasScores() {
-    return context.wantsScores;
-  }
 
   public int currentIndex() {
     return idx;
@@ -110,16 +93,17 @@ public class DocsStreamer implements Ite
       sdoc = new SolrDocument();
     } else {
       try {
-        StoredDocument doc = searcher.doc(id, fnames);
-        sdoc = getDoc(doc, schema);
+        StoredDocument doc = rctx.getSearcher().doc(id, fnames);
+        sdoc = getDoc(doc, rctx.getSearcher().getSchema()); // make sure to use the schema from the searcher and not the request (cross-core)
       } catch (IOException e) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error reading document with docId " + id, e);
       }
     }
 
     if (transformer != null) {
+      boolean doScore = rctx.wantsScores();
       try {
-        transformer.transform(sdoc, id);
+        transformer.transform(sdoc, id, doScore ? docIterator.score() : 0);
       } catch (IOException e) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error applying transformer", e);
       }

Copied: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java (from r1697128, lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java?p2=lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java&p1=lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java&r1=1697128&r2=1698421&rev=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/ResultContext.java Fri Aug 28 21:24:44 2015
@@ -17,15 +17,45 @@
 
 package org.apache.solr.response;
 
+import java.util.Iterator;
+
 import org.apache.lucene.search.Query;
+import org.apache.solr.common.SolrDocument;
+import org.apache.solr.handler.component.ResponseBuilder;
+import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.DocList;
+import org.apache.solr.search.ReturnFields;
+import org.apache.solr.search.SolrIndexSearcher;
 
 /**
  * A class to hold the QueryResult and the Query
  * 
  *
  */
-public class ResultContext {
-  public Query query;
-  public DocList docs;
+public abstract class ResultContext {
+
+  public abstract DocList getDocList();
+
+  public abstract ReturnFields getReturnFields();
+
+  public abstract SolrIndexSearcher getSearcher();
+
+  public abstract Query getQuery();
+
+  // TODO: any reason to allow for retrievial of any filters as well?
+
+  /** Note: do not use the request to get the searcher!  A cross-core request may have a different
+   *  searcher (for the other core) than the original request.
+   */
+  public abstract SolrQueryRequest getRequest();
+
+  public boolean wantsScores() {
+    return getReturnFields().wantsScore() && getDocList().hasScores();
+  }
+
+  public Iterator<SolrDocument> getProcessedDocuments() {
+    return new DocsStreamer(this);
+  }
 }
+
+

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java Fri Aug 28 21:24:44 2015
@@ -144,12 +144,11 @@ public abstract class TextResponseWriter
       writeSolrDocument(name, (SolrDocument)val,returnFields, 0);
     } else if (val instanceof ResultContext) {
       // requires access to IndexReader
-      writeDocuments(name, (ResultContext)val, returnFields);
+      writeDocuments(name, (ResultContext)val);
     } else if (val instanceof DocList) {
       // Should not happen normally
-      ResultContext ctx = new ResultContext();
-      ctx.docs = (DocList)val;
-      writeDocuments(name, ctx, returnFields);
+      ResultContext ctx = new BasicResultContext((DocList)val, returnFields, null, null, req);
+      writeDocuments(name, ctx);
     // }
     // else if (val instanceof DocSet) {
     // how do we know what fields to read?
@@ -216,29 +215,31 @@ public abstract class TextResponseWriter
 
   public abstract void writeStartDocumentList(String name, long start, int size, long numFound, Float maxScore) throws IOException;  
 
-  public abstract void writeSolrDocument(String name, SolrDocument doc, ReturnFields returnFields, int idx) throws IOException;
+  public abstract void writeSolrDocument(String name, SolrDocument doc, ReturnFields fields, int idx) throws IOException;
   
   public abstract void writeEndDocumentList() throws IOException;
   
   // Assume each SolrDocument is already transformed
-  public final void writeSolrDocumentList(String name, SolrDocumentList docs, ReturnFields returnFields) throws IOException
+  public final void writeSolrDocumentList(String name, SolrDocumentList docs, ReturnFields fields) throws IOException
   {
     writeStartDocumentList(name, docs.getStart(), docs.size(), docs.getNumFound(), docs.getMaxScore() );
     for( int i=0; i<docs.size(); i++ ) {
-      writeSolrDocument( null, docs.get(i), returnFields, i );
+      writeSolrDocument( null, docs.get(i), fields, i );
     }
     writeEndDocumentList();
   }
 
 
-  public final void writeDocuments(String name, ResultContext res, ReturnFields fields ) throws IOException {
-    DocList ids = res.docs;
-    DocsStreamer docsStreamer = new DocsStreamer(res.docs,res.query, req, fields);
+  public final void writeDocuments(String name, ResultContext res) throws IOException {
+    DocList ids = res.getDocList();
+    Iterator<SolrDocument> docsStreamer = res.getProcessedDocuments();
     writeStartDocumentList(name, ids.offset(), ids.size(), ids.matches(),
-        docsStreamer.hasScores() ? new Float(ids.maxScore()) : null);
+        res.wantsScores() ? new Float(ids.maxScore()) : null);
 
+    int idx = 0;
     while (docsStreamer.hasNext()) {
-      writeSolrDocument(null, docsStreamer.next(), returnFields, docsStreamer.currentIndex());
+      writeSolrDocument(null, docsStreamer.next(), res.getReturnFields(), idx);
+      idx++;
     }
     writeEndDocumentList();
   }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java Fri Aug 28 21:24:44 2015
@@ -47,7 +47,7 @@ public abstract class BaseEditorialTrans
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
     //this only gets added if QueryElevationParams.MARK_EXCLUDED is true
     Set<String> ids = getIdSet();
     if (ids != null && ids.isEmpty() == false) {

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java Fri Aug 28 21:24:44 2015
@@ -96,7 +96,7 @@ public class ChildDocTransformerFactory
   }
 }
 
-class ChildDocTransformer extends TransformerWithContext {
+class ChildDocTransformer extends DocTransformer {
   private final String name;
   private final SchemaField idField;
   private final IndexSchema schema;
@@ -121,7 +121,7 @@ class ChildDocTransformer extends Transf
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
 
     FieldType idFt = idField.getType();
     Object parentIdField = doc.getFirstValue(idField.getName());
@@ -133,12 +133,12 @@ class ChildDocTransformer extends Transf
     try {
       Query parentQuery = idFt.getFieldQuery(null, idField, parentIdExt);
       Query query = new ToChildBlockJoinQuery(parentQuery, parentsFilter);
-      DocList children = context.searcher.getDocList(query, childFilterQuery, new Sort(), 0, limit);
+      DocList children = context.getSearcher().getDocList(query, childFilterQuery, new Sort(), 0, limit);
       if(children.matches() > 0) {
         DocIterator i = children.iterator();
         while(i.hasNext()) {
           Integer childDocNum = i.next();
-          StoredDocument childDoc = context.searcher.doc(childDocNum);
+          StoredDocument childDoc = context.getSearcher().doc(childDocNum);
           SolrDocument solrChildDoc = DocsStreamer.getDoc(childDoc, schema);
 
           // TODO: future enhancement...

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java Fri Aug 28 21:24:44 2015
@@ -48,7 +48,7 @@ class DocIdAugmenter extends DocTransfor
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
     if( docid >= 0 ) {
       doc.setField( name, docid );
     }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java Fri Aug 28 21:24:44 2015
@@ -18,10 +18,10 @@
 package org.apache.solr.response.transform;
 
 import java.io.IOException;
-import java.util.Set;
 
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.response.QueryResponseWriter;
+import org.apache.solr.response.ResultContext;
 import org.apache.solr.search.SolrIndexSearcher;
 
 /**
@@ -35,7 +35,7 @@ import org.apache.solr.search.SolrIndexS
  *
  */
 public abstract class DocTransformer {
-  protected  TransformContext context;
+  protected ResultContext context;
   /**
    *
    * @return The name of the transformer
@@ -44,10 +44,9 @@ public abstract class DocTransformer {
 
   /**
    * This is called before transform and sets
-   * @param context The {@link org.apache.solr.response.transform.TransformContext} stores information about the current state of things in Solr that may be
-   * useful for doing transformations.
+   * @param context The {@link ResultContext} stores information about how the documents were produced.
    */
-  public void setContext( TransformContext context ) {
+  public void setContext( ResultContext context ) {
     this.context = context;
 
   }
@@ -58,9 +57,10 @@ public abstract class DocTransformer {
    *
    * @param doc The document to alter
    * @param docid The Lucene internal doc id
+   * @param score
    * @throws IOException If there is a low-level I/O error.
    */
-  public abstract void transform(SolrDocument doc, int docid) throws IOException;
+  public abstract void transform(SolrDocument doc, int docid, float score) throws IOException;
 
   /**
    * When a transformer needs access to fields that are not automaticaly derived from the

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java Fri Aug 28 21:24:44 2015
@@ -23,7 +23,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.solr.common.SolrDocument;
-import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.ResultContext;
 
 /**
  * Transform a document before it gets sent out
@@ -65,16 +65,16 @@ public class DocTransformers extends Doc
   }
 
   @Override
-  public void setContext( TransformContext context ) {
+  public void setContext( ResultContext context ) {
     for( DocTransformer a : children ) {
       a.setContext( context );
     }
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) throws IOException {
+  public void transform(SolrDocument doc, int docid, float score) throws IOException {
     for( DocTransformer a : children ) {
-      a.transform( doc, docid);
+      a.transform( doc, docid, score);
     }
   }
 }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java Fri Aug 28 21:24:44 2015
@@ -48,7 +48,7 @@ class MarkTransformer extends BaseEditor
 
   @Override
   protected Set<String> getIdSet() {
-    return (Set<String>) context.req.getContext().get("BOOSTED");
+    return (Set<String>) context.getRequest().getContext().get("BOOSTED");
   }
 }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java Fri Aug 28 21:24:44 2015
@@ -51,7 +51,7 @@ class ExcludedTransformer extends BaseEd
 
   @Override
   protected Set<String> getIdSet() {
-    return (Set<String>)context.req.getContext().get(QueryElevationComponent.EXCLUDED);
+    return (Set<String>)context.getRequest().getContext().get(QueryElevationComponent.EXCLUDED);
   }
 
 }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java Fri Aug 28 21:24:44 2015
@@ -87,7 +87,7 @@ public class ExplainAugmenterFactory ext
     }
 
     @Override
-    public void transform(SolrDocument doc, int docid) {
+    public void transform(SolrDocument doc, int docid, float score) {
       if( context != null && context.getQuery() != null ) {
         try {
           Explanation exp = context.getSearcher().explain(context.getQuery(), docid);

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java Fri Aug 28 21:24:44 2015
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.StorableField;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.params.CommonParams;
@@ -108,7 +107,7 @@ public class RawValueTransformerFactory
     }
 
     @Override
-    public void transform(SolrDocument doc, int docid) {
+    public void transform(SolrDocument doc, int docid, float score) {
       Object val = doc.remove(field);
       if(val==null) {
         return;

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java Fri Aug 28 21:24:44 2015
@@ -17,8 +17,6 @@
 package org.apache.solr.response.transform;
 
 import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
 
 /**
  * Return a field with a name that is different that what is indexed
@@ -46,7 +44,7 @@ public class RenameFieldTransformer exte
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
     Object v = (copy)?doc.get(from) : doc.remove( from );
     if( v != null ) {
       doc.setField(to, v);

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ScoreAugmenter.java Fri Aug 28 21:24:44 2015
@@ -17,7 +17,6 @@
 package org.apache.solr.response.transform;
 
 import org.apache.solr.common.SolrDocument;
-import org.apache.solr.request.SolrQueryRequest;
 
 /**
  * Simple Augmenter that adds the score
@@ -40,11 +39,9 @@ public class ScoreAugmenter extends DocT
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
     if( context != null && context.wantsScores() ) {
-      if( context.getDocIterator() != null ) {
-        doc.setField( name, context.getDocIterator().score() );
-      }
+        doc.setField( name, score );
     }
   }
 }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueAugmenterFactory.java Fri Aug 28 21:24:44 2015
@@ -96,7 +96,7 @@ class ValueAugmenter extends DocTransfor
   }
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
     doc.setField( name, value );
   }
 }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java Fri Aug 28 21:24:44 2015
@@ -27,6 +27,7 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.response.ResultContext;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.SolrIndexSearcher;
 
@@ -60,7 +61,8 @@ public class ValueSourceAugmenter extend
   }
 
   @Override
-  public void setContext( TransformContext context ) {
+  public void setContext( ResultContext context ) {
+    super.setContext(context);
     try {
       IndexReader reader = qparser.getReq().getSearcher().getIndexReader();
       readerContexts = reader.leaves();
@@ -82,7 +84,7 @@ public class ValueSourceAugmenter extend
 
 
   @Override
-  public void transform(SolrDocument doc, int docid) {
+  public void transform(SolrDocument doc, int docid, float score) {
     // This is only good for random-access functions
 
     try {

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java Fri Aug 28 21:24:44 2015
@@ -710,7 +710,7 @@ public class BasicFunctionalityTest exte
     SolrQueryResponse rsp = new SolrQueryResponse();
     core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
 
-    DocList dl = ((ResultContext) rsp.getValues().get("response")).docs;
+    DocList dl = ((ResultContext) rsp.getValues().get("response")).getDocList();
     StoredDocument d = req.getSearcher().doc(dl.iterator().nextDoc());
     // ensure field in fl is not lazy
     assertFalse( ((Field) d.getField("test_hlt")).getClass().getSimpleName().equals("LazyField"));
@@ -735,7 +735,7 @@ public class BasicFunctionalityTest exte
     SolrQueryResponse rsp = new SolrQueryResponse();
     core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
 
-    DocList dl = ((ResultContext) rsp.getValues().get("response")).docs;
+    DocList dl = ((ResultContext) rsp.getValues().get("response")).getDocList();
     DocIterator di = dl.iterator();    
     StoredDocument d1 = req.getSearcher().doc(di.nextDoc());
     StorableField[] values1 = null;
@@ -757,7 +757,7 @@ public class BasicFunctionalityTest exte
     rsp = new SolrQueryResponse();
     core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
 
-    dl = ((ResultContext) rsp.getValues().get("response")).docs;
+    dl = ((ResultContext) rsp.getValues().get("response")).getDocList();
     di = dl.iterator();    
     StoredDocument d2 = req.getSearcher().doc(di.nextDoc());
     // ensure same doc, same lazy field now

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestGroupingSearch.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestGroupingSearch.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestGroupingSearch.java Fri Aug 28 21:24:44 2015
@@ -264,7 +264,7 @@ public class TestGroupingSearch extends
       SolrRequestInfo.clearRequestInfo();
     }
 
-    assertEquals(6, ((ResultContext) response.getValues().get("response")).docs.matches());
+    assertEquals(6, ((ResultContext) response.getValues().get("response")).getDocList().matches());
     new BinaryResponseParser().processResponse(new ByteArrayInputStream(out.toByteArray()), "");
     out.close();
   }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/response/TestCustomDocTransformer.java Fri Aug 28 21:24:44 2015
@@ -19,8 +19,6 @@ package org.apache.solr.response;
 
 import java.io.IOException;
 
-import org.apache.lucene.document.StoredField;
-import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.StorableField;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrDocument;
@@ -108,7 +106,7 @@ public class TestCustomDocTransformer ex
      * This transformer simply concatinates the values of multipe fields
      */
     @Override
-    public void transform(SolrDocument doc, int docid) throws IOException {
+    public void transform(SolrDocument doc, int docid, float score) throws IOException {
       str.setLength(0);
       for(String s : extra) {
         String v = getAsString(s, doc);

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRangeQuery.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRangeQuery.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRangeQuery.java Fri Aug 28 21:24:44 2015
@@ -259,8 +259,8 @@ public class TestRangeQuery extends Solr
         SolrQueryResponse qr = h.queryAndResponse(handler, req);
         if (last != null) {
           // we only test if the same docs matched since some queries will include factors like idf, etc.
-          DocList rA = ((ResultContext)qr.getValues().get("response")).docs;
-          DocList rB = ((ResultContext)last.getValues().get("response")).docs;
+          DocList rA = ((ResultContext)qr.getValues().get("response")).getDocList();
+          DocList rB = ((ResultContext)last.getValues().get("response")).getDocList();
           sameDocs( rA, rB );
         }
         req.close();

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java?rev=1698421&r1=1698420&r2=1698421&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java Fri Aug 28 21:24:44 2015
@@ -33,6 +33,7 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.response.ResultContext;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.search.DocList;
 import org.apache.solr.schema.CopyField;
@@ -40,7 +41,6 @@ import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.response.ResultContext;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -345,7 +345,7 @@ public class DocumentBuilderTest extends
       SolrQueryResponse rsp = new SolrQueryResponse();
       core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
 
-      DocList dl = ((ResultContext) rsp.getValues().get("response")).docs;
+      DocList dl = ((ResultContext) rsp.getValues().get("response")).getDocList();
       assertTrue("can't find the doc we just added", 1 == dl.size());
       int docid = dl.iterator().nextDoc();