You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2015/02/25 12:14:02 UTC

svn commit: r1662198 - in /lucene/dev/trunk/solr: ./ core/src/java/org/apache/solr/cloud/ core/src/java/org/apache/solr/handler/component/ core/src/java/org/apache/solr/schema/ solrj/src/java/org/apache/solr/client/solrj/ solrj/src/java/org/apache/solr...

Author: romseygeek
Date: Wed Feb 25 11:14:02 2015
New Revision: 1662198

URL: http://svn.apache.org/r1662198
Log:
SOLR-7145: SolrRequest is now parametrized by its response type

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerSolrResponse.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrResponse.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Feb 25 11:14:02 2015
@@ -186,6 +186,9 @@ Other Changes
 
 * SOLR-7032: Clean up test remnants of old-style solr.xml (Erick Erickson)
 
+* SOLR-7145: SolrRequest is now parametrized by its response type (Alan
+  Woodward)
+
 * SOLR-7142: Fix TestFaceting.testFacets. (Michal Kroliczek via shalin)
 
 * SOLR-7156: Fix test failures due to resource leaks on windows.

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerSolrResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerSolrResponse.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerSolrResponse.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/OverseerSolrResponse.java Wed Feb 25 11:14:02 2015
@@ -23,6 +23,8 @@ import org.apache.solr.common.util.Named
 public class OverseerSolrResponse extends SolrResponse {
   
   NamedList responseList = null;
+
+  private long elapsedTime;
   
   public OverseerSolrResponse(NamedList list) {
     responseList = list;
@@ -30,15 +32,19 @@ public class OverseerSolrResponse extend
   
   @Override
   public long getElapsedTime() {
-    // TODO Auto-generated method stub
-    return 0;
+    return elapsedTime;
   }
   
   @Override
   public void setResponse(NamedList<Object> rsp) {
     this.responseList = rsp;
   }
-  
+
+  @Override
+  public void setElapsedTime(long elapsedTime) {
+    this.elapsedTime = elapsedTime;
+  }
+
   @Override
   public NamedList<Object> getResponse() {
     return responseList;

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java Wed Feb 25 11:14:02 2015
@@ -85,7 +85,9 @@ public class HttpShardHandler extends Sh
 
 
   private static class SimpleSolrResponse extends SolrResponse {
+
     long elapsedTime;
+
     NamedList<Object> nl;
 
     @Override
@@ -102,6 +104,11 @@ public class HttpShardHandler extends Sh
     public void setResponse(NamedList<Object> rsp) {
       nl = rsp;
     }
+
+    @Override
+    public void setElapsedTime(long elapsedTime) {
+      this.elapsedTime = elapsedTime;
+    }
   }
 
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java Wed Feb 25 11:14:02 2015
@@ -26,7 +26,6 @@ import org.apache.solr.analysis.Tokenize
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrResponse;
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
@@ -363,9 +362,10 @@ public final class ManagedIndexSchema ex
     }
 
     @Override
-    public SolrResponse process(SolrClient server) throws SolrServerException, IOException {
+    protected SolrResponse createResponse(SolrClient client) {
       return null;
     }
+
   }
 
 

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java Wed Feb 25 11:14:02 2015
@@ -17,21 +17,22 @@
 
 package org.apache.solr.client.solrj;
 
+import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.ContentStream;
+
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Set;
-
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.ContentStream;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 
  *
  * @since solr 1.3
  */
-public abstract class SolrRequest implements Serializable
-{
+public abstract class SolrRequest<T extends SolrResponse> implements Serializable {
+
   public enum METHOD {
     GET,
     POST,
@@ -108,6 +109,29 @@ public abstract class SolrRequest implem
   }
 
   public abstract SolrParams getParams();
+
   public abstract Collection<ContentStream> getContentStreams() throws IOException;
-  public abstract SolrResponse process( SolrClient server ) throws SolrServerException, IOException;
+
+  /**
+   * Create a new SolrResponse to hold the response from the server
+   * @param client the {@link SolrClient} the request will be sent to
+   */
+  protected abstract T createResponse(SolrClient client);
+
+  /**
+   * Send this request to a {@link SolrClient} and return the response
+   * @param client the SolrClient to communicate with
+   * @return the response
+   * @throws SolrServerException if there is an error on the Solr server
+   * @throws IOException if there is a communication error
+   */
+  public T process(SolrClient client) throws SolrServerException, IOException {
+    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
+    T res = createResponse(client);
+    res.setResponse(client.request(this));
+    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
+    res.setElapsedTime(endTime - startTime);
+    return res;
+  }
+
 }

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrResponse.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrResponse.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/SolrResponse.java Wed Feb 25 11:14:02 2015
@@ -17,16 +17,16 @@
 
 package org.apache.solr.client.solrj;
 
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.util.NamedList;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
-import org.apache.solr.common.util.NamedList;
-
 
 /**
  * 
@@ -37,6 +37,8 @@ public abstract class SolrResponse imple
   public abstract long getElapsedTime();
   
   public abstract void setResponse(NamedList<Object> rsp);
+
+  public abstract void setElapsedTime(long elapsedTime);
   
   public abstract NamedList<Object> getResponse();
   

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java Wed Feb 25 11:14:02 2015
@@ -16,22 +16,18 @@ package org.apache.solr.client.solrj.req
  * limitations under the License.
  */
 
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.UpdateParams;
 
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
 
 /**
  *
  *
  **/
-public abstract class AbstractUpdateRequest extends SolrRequest implements IsUpdateRequest {
+public abstract class AbstractUpdateRequest extends SolrRequest<UpdateResponse> implements IsUpdateRequest {
   protected ModifiableSolrParams params;
   protected int commitWithin = -1;
 
@@ -117,14 +113,8 @@ public abstract class AbstractUpdateRequ
   }
 
   @Override
-  public UpdateResponse process(SolrClient client) throws SolrServerException, IOException
-  {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    UpdateResponse res = new UpdateResponse();
-    res.setResponse(client.request(this));
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
+  protected UpdateResponse createResponse(SolrClient client) {
+    return new UpdateResponse();
   }
 
   public boolean isWaitSearcher() {

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java Wed Feb 25 11:14:02 2015
@@ -17,9 +17,8 @@
 
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.DocCollection;
@@ -36,14 +35,14 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.TimeUnit;
 
 /**
  * This class is experimental and subject to change.
  *
  * @since solr 4.5
  */
-public class CollectionAdminRequest extends SolrRequest {
+public class CollectionAdminRequest extends SolrRequest<CollectionAdminResponse> {
+
   protected CollectionAction action = null;
 
   private static String PROPERTY_PREFIX = "property.";
@@ -78,14 +77,8 @@ public class CollectionAdminRequest exte
   }
 
   @Override
-  public CollectionAdminResponse process(SolrClient server) throws SolrServerException, IOException
-  {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    CollectionAdminResponse res = new CollectionAdminResponse();
-    res.setResponse( server.request( this ) );
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
+  protected CollectionAdminResponse createResponse(SolrClient client) {
+    return new CollectionAdminResponse();
   }
   
   protected void addProperties(ModifiableSolrParams params, Properties props) {

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java Wed Feb 25 11:14:02 2015
@@ -17,8 +17,8 @@
 
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.CoreAdminResponse;
 import org.apache.solr.common.cloud.ZkStateReader;
@@ -32,15 +32,14 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 /**
  * This class is experimental and subject to change.
  *
  * @since solr 1.3
  */
-public class CoreAdminRequest extends SolrRequest
-{
+public class CoreAdminRequest extends SolrRequest<CoreAdminResponse> {
+
   protected String core = null;
   protected String other = null;
   protected boolean isIndexInfoNeeded = true;
@@ -48,6 +47,7 @@ public class CoreAdminRequest extends So
   
   //a create core request
   public static class Create extends CoreAdminRequest {
+
     protected String instanceDir;
     protected String configName = null;
     protected String schemaName = null;
@@ -503,14 +503,8 @@ public class CoreAdminRequest extends So
   }
 
   @Override
-  public CoreAdminResponse process(SolrClient client) throws SolrServerException, IOException
-  {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    CoreAdminResponse res = new CoreAdminResponse();
-    res.setResponse(client.request(this));
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
+  protected CoreAdminResponse createResponse(SolrClient client) {
+    return new CoreAdminResponse();
   }
 
   //---------------------------------------------------------------------------------------

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java Wed Feb 25 11:14:02 2015
@@ -19,15 +19,12 @@ package org.apache.solr.client.solrj.req
 
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 
-import java.io.IOException;
 import java.util.Collection;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Send arbitrary XML to a request handler
@@ -35,8 +32,8 @@ import java.util.concurrent.TimeUnit;
  *
  * @since solr 1.3
  */
-public class DirectXmlRequest extends SolrRequest implements IsUpdateRequest
-{
+public class DirectXmlRequest extends SolrRequest<UpdateResponse> implements IsUpdateRequest {
+
   final String xml;
   private SolrParams params;
   
@@ -52,6 +49,11 @@ public class DirectXmlRequest extends So
   }
 
   @Override
+  protected UpdateResponse createResponse(SolrClient client) {
+    return new UpdateResponse();
+  }
+
+  @Override
   public SolrParams getParams() {
     return params;
   }
@@ -61,13 +63,4 @@ public class DirectXmlRequest extends So
     this.params = params;
   }
 
-  @Override
-  public UpdateResponse process(SolrClient client) throws SolrServerException, IOException
-  {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    UpdateResponse res = new UpdateResponse();
-    res.setResponse(client.request(this));
-    res.setElapsedTime( TimeUnit.MILLISECONDS.convert(System.nanoTime()-startTime, TimeUnit.NANOSECONDS) );
-    return res;
-  }
 }

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java Wed Feb 25 11:14:02 2015
@@ -17,9 +17,8 @@
 
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.response.DocumentAnalysisResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrInputDocument;
@@ -32,7 +31,6 @@ import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 /**
  * A request for the org.apache.solr.handler.DocumentAnalysisRequestHandler.
@@ -40,7 +38,7 @@ import java.util.concurrent.TimeUnit;
  *
  * @since solr 1.4
  */
-public class DocumentAnalysisRequest extends SolrRequest {
+public class DocumentAnalysisRequest extends SolrRequest<DocumentAnalysisResponse> {
 
   private List<SolrInputDocument> documents = new ArrayList<>();
   private String query;
@@ -70,6 +68,11 @@ public class DocumentAnalysisRequest ext
     return ClientUtils.toContentStreams(getXML(), ClientUtils.TEXT_XML);
   }
 
+  @Override
+  protected DocumentAnalysisResponse createResponse(SolrClient client) {
+    return new DocumentAnalysisResponse();
+  }
+
   /**
    * {@inheritDoc}
    */
@@ -83,19 +86,6 @@ public class DocumentAnalysisRequest ext
     return params;
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public DocumentAnalysisResponse process(SolrClient client) throws SolrServerException, IOException {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    DocumentAnalysisResponse res = new DocumentAnalysisResponse();
-    res.setResponse(client.request(this));
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
-  }
-
   //================================================ Helper Methods ==================================================
 
   /**

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java Wed Feb 25 11:14:02 2015
@@ -17,9 +17,8 @@
 
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.response.FieldAnalysisResponse;
 import org.apache.solr.common.params.AnalysisParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -30,7 +29,6 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 /**
  * A request for the org.apache.solr.handler.FieldAnalysisRequestHandler.
@@ -38,7 +36,7 @@ import java.util.concurrent.TimeUnit;
  *
  * @since solr.14
  */
-public class FieldAnalysisRequest extends SolrRequest {
+public class FieldAnalysisRequest extends SolrRequest<FieldAnalysisResponse> {
 
   private String fieldValue;
   private String query;
@@ -70,6 +68,17 @@ public class FieldAnalysisRequest extend
     return null;
   }
 
+  @Override
+  protected FieldAnalysisResponse createResponse(SolrClient client) {
+    if (fieldTypes == null && fieldNames == null) {
+      throw new IllegalStateException("At least one field type or field name need to be specified");
+    }
+    if (fieldValue == null) {
+      throw new IllegalStateException("The field value must be set");
+    }
+    return new FieldAnalysisResponse();
+  }
+
   /**
    * {@inheritDoc}
    */
@@ -92,26 +101,6 @@ public class FieldAnalysisRequest extend
     return params;
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public FieldAnalysisResponse process(SolrClient server) throws SolrServerException, IOException {
-    if (fieldTypes == null && fieldNames == null) {
-      throw new IllegalStateException("At least one field type or field name need to be specified");
-    }
-    if (fieldValue == null) {
-      throw new IllegalStateException("The field value must be set");
-    }
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    FieldAnalysisResponse res = new FieldAnalysisResponse();
-    res.setResponse(server.request(this));
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
-  }
-
-
   //================================================ Helper Methods ==================================================
 
   /**

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java Wed Feb 25 11:14:02 2015
@@ -19,26 +19,23 @@ package org.apache.solr.client.solrj.req
 
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.LukeResponse;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 /**
  * 
  *
  * @since solr 1.3
  */
-public class LukeRequest extends SolrRequest
-{
+public class LukeRequest extends SolrRequest<LukeResponse> {
+
   private List<String> fields;
   private int numTerms = -1;
   private boolean showSchema = false;
@@ -100,6 +97,11 @@ public class LukeRequest extends SolrReq
   }
 
   @Override
+  protected LukeResponse createResponse(SolrClient client) {
+    return new LukeResponse();
+  }
+
+  @Override
   public SolrParams getParams() {
     ModifiableSolrParams params = new ModifiableSolrParams();
     if( fields != null && fields.size() > 0 ) {
@@ -114,15 +116,5 @@ public class LukeRequest extends SolrReq
     return params;
   }
 
-  @Override
-  public LukeResponse process( SolrClient client ) throws SolrServerException, IOException
-  {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    LukeResponse res = new LukeResponse();
-    res.setResponse(client.request(this));
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
-  }
 }
 

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java Wed Feb 25 11:14:02 2015
@@ -17,15 +17,15 @@
 
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 
+import java.io.IOException;
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
 
@@ -34,8 +34,8 @@ import java.util.concurrent.TimeUnit;
  *
  * @since solr 1.3
  */
-public class QueryRequest extends SolrRequest
-{
+public class QueryRequest extends SolrRequest<QueryResponse> {
+
   private SolrParams query;
   
   public QueryRequest()
@@ -79,24 +79,34 @@ public class QueryRequest extends SolrRe
   }
 
   @Override
-  public SolrParams getParams() {
-    return query;
+  protected QueryResponse createResponse(SolrClient client) {
+    return new QueryResponse(client);
   }
 
+  /**
+   * Send this request to a {@link SolrClient} and return the response
+   * @param client the SolrClient to communicate with
+   * @return the response
+   * @throws org.apache.solr.client.solrj.SolrServerException if there is an error on the Solr server
+   */
   @Override
-  public QueryResponse process( SolrClient client ) throws SolrServerException
-  {
+  public QueryResponse process(SolrClient client) throws SolrServerException {
+    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
+    QueryResponse res = createResponse(client);
     try {
-      long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-      QueryResponse res = new QueryResponse( client.request( this ), client );
-      long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-      res.setElapsedTime(endTime - startTime);
-      return res;
-    } catch (SolrServerException | SolrException e){
-      throw e;
-    } catch (Exception e) {
+      res.setResponse(client.request(this));
+    } catch (IOException e) {
       throw new SolrServerException("Error executing query", e);
     }
+    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
+    res.setElapsedTime(endTime - startTime);
+    return res;
   }
+
+  @Override
+  public SolrParams getParams() {
+    return query;
+  }
+
 }
 

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java Wed Feb 25 11:14:02 2015
@@ -19,15 +19,12 @@ package org.apache.solr.client.solrj.req
 
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.SolrPingResponse;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.ContentStream;
 
-import java.io.IOException;
 import java.util.Collection;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Verify that there is a working Solr core at the URL of a {@link org.apache.solr.client.solrj.SolrClient}.
@@ -36,7 +33,7 @@ import java.util.concurrent.TimeUnit;
  * 
  * @since solr 1.3
  */
-public class SolrPing extends SolrRequest {
+public class SolrPing extends SolrRequest<SolrPingResponse> {
   
   /** serialVersionUID. */
   private static final long serialVersionUID = 5828246236669090017L;
@@ -56,21 +53,15 @@ public class SolrPing extends SolrReques
   public Collection<ContentStream> getContentStreams() {
     return null;
   }
-  
+
   @Override
-  public ModifiableSolrParams getParams() {
-    return params;
+  protected SolrPingResponse createResponse(SolrClient client) {
+    return new SolrPingResponse();
   }
-  
+
   @Override
-  public SolrPingResponse process(SolrClient client)
-      throws SolrServerException, IOException {
-    long startTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    SolrPingResponse res = new SolrPingResponse();
-    res.setResponse(client.request(this));
-    long endTime = TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
-    res.setElapsedTime(endTime - startTime);
-    return res;
+  public ModifiableSolrParams getParams() {
+    return params;
   }
   
   /**

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java Wed Feb 25 11:14:02 2015
@@ -17,6 +17,16 @@
 
 package org.apache.solr.client.solrj.request;
 
+import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
+import org.apache.solr.client.solrj.util.ClientUtils;
+import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.cloud.DocCollection;
+import org.apache.solr.common.cloud.DocRouter;
+import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.util.XML;
+
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
@@ -24,21 +34,11 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.LinkedHashMap;
-
-import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
-import org.apache.solr.client.solrj.util.ClientUtils;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.cloud.DocCollection;
-import org.apache.solr.common.cloud.DocRouter;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.ContentStream;
-import org.apache.solr.common.util.XML;
 
 /**
  * 
@@ -46,6 +46,7 @@ import org.apache.solr.common.util.XML;
  * @since solr 1.3
  */
 public class UpdateRequest extends AbstractUpdateRequest {
+
   public static final String REPFACT = "rf";
   public static final String MIN_REPFACT = "min_rf";
   public static final String VER = "ver";

Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java?rev=1662198&r1=1662197&r2=1662198&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java Wed Feb 25 11:14:02 2015
@@ -17,6 +17,13 @@
 
 package org.apache.solr.client.solrj.response;
 
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.beans.DocumentObjectBinder;
+import org.apache.solr.common.SolrDocumentList;
+import org.apache.solr.common.params.CursorMarkParams;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
+
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -25,13 +32,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.beans.DocumentObjectBinder;
-import org.apache.solr.common.SolrDocumentList;
-import org.apache.solr.common.params.CursorMarkParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.SimpleOrderedMap;
-
 /**
  * 
  *
@@ -99,6 +99,10 @@ public class QueryResponse extends SolrR
     this.solrClient = solrClient;
   }
 
+  public QueryResponse(SolrClient solrClient) {
+    this.solrClient = solrClient;
+  }
+
   @Override
   public void setResponse( NamedList<Object> res )
   {