You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rj...@apache.org on 2015/03/31 07:22:50 UTC
svn commit: r1670257 [37/39] - in /lucene/dev/branches/lucene6271: ./
dev-tools/ dev-tools/idea/.idea/libraries/ dev-tools/scripts/ lucene/
lucene/analysis/ lucene/analysis/common/
lucene/analysis/common/src/java/org/apache/lucene/analysis/miscellaneou...
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java Tue Mar 31 05:22:40 2015
@@ -21,7 +21,6 @@ import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
-import org.apache.http.NoHttpResponseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
@@ -43,15 +42,12 @@ import org.apache.http.message.BasicHead
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.solr.client.solrj.ResponseParser;
-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.request.RequestWriter;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
@@ -78,6 +74,27 @@ import java.util.concurrent.ExecutorServ
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
+/**
+ * A SolrClient implementation that talks directly to a Solr server via HTTP
+ *
+ * There are two ways to use an HttpSolrClient:
+ *
+ * 1) Pass a URL to the constructor that points directly at a particular core
+ * <pre>
+ * SolrClient client = new HttpSolrClient("http://my-solr-server:8983/solr/core1");
+ * QueryResponse resp = client.query(new SolrQuery("*:*"));
+ * </pre>
+ * In this case, you can query the given core directly, but you cannot query any other
+ * cores or issue CoreAdmin requests with this client.
+ *
+ * 2) Pass the base URL of the node to the constructor
+ * <pre>
+ * SolrClient client = new HttpSolrClient("http://my-solr-server:8983/solr");
+ * QueryResponse resp = client.query("core1", new SolrQuery("*:*"));
+ * </pre>
+ * In this case, you must pass the name of the required core for all queries and updates,
+ * but you may use the same client for all cores, and for CoreAdmin requests.
+ */
public class HttpSolrClient extends SolrClient {
private static final String UTF_8 = StandardCharsets.UTF_8.name();
@@ -125,8 +142,6 @@ public class HttpSolrClient extends Solr
private volatile boolean followRedirects = false;
- private volatile int maxRetries = 0;
-
private volatile boolean useMultiPartPost;
private final boolean internalClient;
@@ -201,17 +216,21 @@ public class HttpSolrClient extends Solr
* org.apache.solr.client.solrj.ResponseParser)
*/
@Override
- public NamedList<Object> request(final SolrRequest request)
+ public NamedList<Object> request(final SolrRequest request, String collection)
throws SolrServerException, IOException {
ResponseParser responseParser = request.getResponseParser();
if (responseParser == null) {
responseParser = parser;
}
- return request(request, responseParser);
+ return request(request, responseParser, collection);
}
-
+
public NamedList<Object> request(final SolrRequest request, final ResponseParser processor) throws SolrServerException, IOException {
- return executeMethod(createMethod(request),processor);
+ return request(request, processor, null);
+ }
+
+ public NamedList<Object> request(final SolrRequest request, final ResponseParser processor, String collection) throws SolrServerException, IOException {
+ return executeMethod(createMethod(request, collection),processor);
}
/**
@@ -239,7 +258,7 @@ public class HttpSolrClient extends Solr
*/
public HttpUriRequestResponse httpUriRequest(final SolrRequest request, final ResponseParser processor) throws SolrServerException, IOException {
HttpUriRequestResponse mrr = new HttpUriRequestResponse();
- final HttpRequestBase method = createMethod(request);
+ final HttpRequestBase method = createMethod(request, null);
ExecutorService pool = Executors.newFixedThreadPool(1, new SolrjNamedThreadFactory("httpUriRequest"));
try {
mrr.future = pool.submit(new Callable<NamedList<Object>>(){
@@ -274,9 +293,8 @@ public class HttpSolrClient extends Solr
return queryModParams;
}
- protected HttpRequestBase createMethod(final SolrRequest request) throws IOException, SolrServerException {
- HttpRequestBase method = null;
- InputStream is = null;
+ protected HttpRequestBase createMethod(final SolrRequest request, String collection) throws IOException, SolrServerException {
+
SolrParams params = request.getParams();
Collection<ContentStream> streams = requestWriter.getContentStreams(request);
String path = requestWriter.getPath(request);
@@ -299,158 +317,138 @@ public class HttpSolrClient extends Solr
if (invariantParams != null) {
wparams.add(invariantParams);
}
-
- int tries = maxRetries + 1;
- try {
- while( tries-- > 0 ) {
- // Note: since we aren't do intermittent time keeping
- // ourselves, the potential non-timeout latency could be as
- // much as tries-times (plus scheduling effects) the given
- // timeAllowed.
- try {
- if( SolrRequest.METHOD.GET == request.getMethod() ) {
- if( streams != null ) {
- throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, "GET can't send streams!" );
- }
- method = new HttpGet( baseUrl + path + ClientUtils.toQueryString( wparams, false ) );
- }
- else if( SolrRequest.METHOD.POST == request.getMethod() || SolrRequest.METHOD.PUT == request.getMethod() ) {
- String url = baseUrl + path;
- boolean hasNullStreamName = false;
- if (streams != null) {
- for (ContentStream cs : streams) {
- if (cs.getName() == null) {
- hasNullStreamName = true;
- break;
- }
- }
- }
- boolean isMultipart = ((this.useMultiPartPost && SolrRequest.METHOD.POST == request.getMethod())
- || ( streams != null && streams.size() > 1 )) && !hasNullStreamName;
-
- LinkedList<NameValuePair> postOrPutParams = new LinkedList<>();
- if (streams == null || isMultipart) {
- // send server list and request list as query string params
- ModifiableSolrParams queryParams = calculateQueryParams(this.queryParams, wparams);
- queryParams.add(calculateQueryParams(request.getQueryParams(), wparams));
- String fullQueryUrl = url + ClientUtils.toQueryString( queryParams, false );
- HttpEntityEnclosingRequestBase postOrPut = SolrRequest.METHOD.POST == request.getMethod() ?
- new HttpPost(fullQueryUrl) : new HttpPut(fullQueryUrl);
- if (!isMultipart) {
- postOrPut.addHeader("Content-Type",
- "application/x-www-form-urlencoded; charset=UTF-8");
- }
+ String basePath = baseUrl;
+ if (collection != null)
+ basePath += "/" + collection;
+
+ if (SolrRequest.METHOD.GET == request.getMethod()) {
+ if (streams != null) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "GET can't send streams!");
+ }
+ return new HttpGet(basePath + path + ClientUtils.toQueryString(wparams, false));
+ }
+
+ if (SolrRequest.METHOD.POST == request.getMethod() || SolrRequest.METHOD.PUT == request.getMethod()) {
+
+ String url = basePath + path;
+ boolean hasNullStreamName = false;
+ if (streams != null) {
+ for (ContentStream cs : streams) {
+ if (cs.getName() == null) {
+ hasNullStreamName = true;
+ break;
+ }
+ }
+ }
+ boolean isMultipart = ((this.useMultiPartPost && SolrRequest.METHOD.POST == request.getMethod())
+ || (streams != null && streams.size() > 1)) && !hasNullStreamName;
- List<FormBodyPart> parts = new LinkedList<>();
- Iterator<String> iter = wparams.getParameterNamesIterator();
- while (iter.hasNext()) {
- String p = iter.next();
- String[] vals = wparams.getParams(p);
- if (vals != null) {
- for (String v : vals) {
- if (isMultipart) {
- parts.add(new FormBodyPart(p, new StringBody(v, StandardCharsets.UTF_8)));
- } else {
- postOrPutParams.add(new BasicNameValuePair(p, v));
- }
- }
- }
- }
+ LinkedList<NameValuePair> postOrPutParams = new LinkedList<>();
+ if (streams == null || isMultipart) {
+ // send server list and request list as query string params
+ ModifiableSolrParams queryParams = calculateQueryParams(this.queryParams, wparams);
+ queryParams.add(calculateQueryParams(request.getQueryParams(), wparams));
+ String fullQueryUrl = url + ClientUtils.toQueryString(queryParams, false);
+ HttpEntityEnclosingRequestBase postOrPut = SolrRequest.METHOD.POST == request.getMethod() ?
+ new HttpPost(fullQueryUrl) : new HttpPut(fullQueryUrl);
+ if (!isMultipart) {
+ postOrPut.addHeader("Content-Type",
+ "application/x-www-form-urlencoded; charset=UTF-8");
+ }
- if (isMultipart && streams != null) {
- for (ContentStream content : streams) {
- String contentType = content.getContentType();
- if(contentType==null) {
- contentType = BinaryResponseParser.BINARY_CONTENT_TYPE; // default
- }
- String name = content.getName();
- if(name==null) {
- name = "";
- }
- parts.add(new FormBodyPart(name,
- new InputStreamBody(
- content.getStream(),
- contentType,
- content.getName())));
- }
- }
-
- if (parts.size() > 0) {
- MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT);
- for(FormBodyPart p: parts) {
- entity.addPart(p);
- }
- postOrPut.setEntity(entity);
+ List<FormBodyPart> parts = new LinkedList<>();
+ Iterator<String> iter = wparams.getParameterNamesIterator();
+ while (iter.hasNext()) {
+ String p = iter.next();
+ String[] vals = wparams.getParams(p);
+ if (vals != null) {
+ for (String v : vals) {
+ if (isMultipart) {
+ parts.add(new FormBodyPart(p, new StringBody(v, StandardCharsets.UTF_8)));
} else {
- //not using multipart
- postOrPut.setEntity(new UrlEncodedFormEntity(postOrPutParams, StandardCharsets.UTF_8));
+ postOrPutParams.add(new BasicNameValuePair(p, v));
}
+ }
+ }
+ }
- method = postOrPut;
+ if (isMultipart && streams != null) {
+ for (ContentStream content : streams) {
+ String contentType = content.getContentType();
+ if (contentType == null) {
+ contentType = BinaryResponseParser.BINARY_CONTENT_TYPE; // default
}
- // It is has one stream, it is the post body, put the params in the URL
- else {
- String pstr = ClientUtils.toQueryString(wparams, false);
- HttpEntityEnclosingRequestBase postOrPut = SolrRequest.METHOD.POST == request.getMethod() ?
- new HttpPost(url + pstr) : new HttpPut(url + pstr);
-
- // Single stream as body
- // Using a loop just to get the first one
- final ContentStream[] contentStream = new ContentStream[1];
- for (ContentStream content : streams) {
- contentStream[0] = content;
- break;
- }
- if (contentStream[0] instanceof RequestWriter.LazyContentStream) {
- postOrPut.setEntity(new InputStreamEntity(contentStream[0].getStream(), -1) {
- @Override
- public Header getContentType() {
- return new BasicHeader("Content-Type", contentStream[0].getContentType());
- }
-
- @Override
- public boolean isRepeatable() {
- return false;
- }
-
- });
- } else {
- postOrPut.setEntity(new InputStreamEntity(contentStream[0].getStream(), -1) {
- @Override
- public Header getContentType() {
- return new BasicHeader("Content-Type", contentStream[0].getContentType());
- }
-
- @Override
- public boolean isRepeatable() {
- return false;
- }
- });
- }
- method = postOrPut;
+ String name = content.getName();
+ if (name == null) {
+ name = "";
}
- }
- else {
- throw new SolrServerException("Unsupported method: "+request.getMethod() );
+ parts.add(new FormBodyPart(name,
+ new InputStreamBody(
+ content.getStream(),
+ contentType,
+ content.getName())));
}
}
- catch( NoHttpResponseException r ) {
- method = null;
- if(is != null) {
- is.close();
- }
- // If out of tries then just rethrow (as normal error).
- if (tries < 1) {
- throw r;
- }
+
+ if (parts.size() > 0) {
+ MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT);
+ for (FormBodyPart p : parts) {
+ entity.addPart(p);
+ }
+ postOrPut.setEntity(entity);
+ } else {
+ //not using multipart
+ postOrPut.setEntity(new UrlEncodedFormEntity(postOrPutParams, StandardCharsets.UTF_8));
+ }
+
+ return postOrPut;
+ }
+ // It is has one stream, it is the post body, put the params in the URL
+ else {
+ String pstr = ClientUtils.toQueryString(wparams, false);
+ HttpEntityEnclosingRequestBase postOrPut = SolrRequest.METHOD.POST == request.getMethod() ?
+ new HttpPost(url + pstr) : new HttpPut(url + pstr);
+
+ // Single stream as body
+ // Using a loop just to get the first one
+ final ContentStream[] contentStream = new ContentStream[1];
+ for (ContentStream content : streams) {
+ contentStream[0] = content;
+ break;
+ }
+ if (contentStream[0] instanceof RequestWriter.LazyContentStream) {
+ postOrPut.setEntity(new InputStreamEntity(contentStream[0].getStream(), -1) {
+ @Override
+ public Header getContentType() {
+ return new BasicHeader("Content-Type", contentStream[0].getContentType());
+ }
+
+ @Override
+ public boolean isRepeatable() {
+ return false;
+ }
+
+ });
+ } else {
+ postOrPut.setEntity(new InputStreamEntity(contentStream[0].getStream(), -1) {
+ @Override
+ public Header getContentType() {
+ return new BasicHeader("Content-Type", contentStream[0].getContentType());
+ }
+
+ @Override
+ public boolean isRepeatable() {
+ return false;
+ }
+ });
}
+ return postOrPut;
}
- } catch (IOException ex) {
- throw new SolrServerException("error reading streams", ex);
}
-
- return method;
+
+ throw new SolrServerException("Unsupported method: " + request.getMethod());
+
}
protected NamedList<Object> executeMethod(HttpRequestBase method, final ResponseParser processor) throws SolrServerException {
@@ -494,7 +492,7 @@ public class HttpSolrClient extends Solr
null);
}
}
- if (processor == null) {
+ if (processor == null || processor instanceof InputStreamResponseParser) {
// no processor specified, return raw stream
NamedList<Object> rsp = new NamedList<>();
@@ -680,75 +678,15 @@ public class HttpSolrClient extends Solr
}
/**
- * Set maximum number of retries to attempt in the event of transient errors.
- * <p>
- * Maximum number of retries to attempt in the event of transient errors.
- * Default: 0 (no) retries. No more than 1 recommended.
- * </p>
- * @param maxRetries
- * No more than 1 recommended
+ * @deprecated retries should be implemented in client code, and should be considered carefully per-request
*/
- public void setMaxRetries(int maxRetries) {
- if (maxRetries > 1) {
- log.warn("HttpSolrServer: maximum Retries " + maxRetries
- + " > 1. Maximum recommended retries is 1.");
- }
- this.maxRetries = maxRetries;
- }
+ public void setMaxRetries(int maxRetries) { }
public void setRequestWriter(RequestWriter requestWriter) {
this.requestWriter = requestWriter;
}
/**
- * Adds the documents supplied by the given iterator.
- *
- * @param docIterator
- * the iterator which returns SolrInputDocument instances
- *
- * @return the response from the SolrServer
- */
- public UpdateResponse add(Iterator<SolrInputDocument> docIterator)
- throws SolrServerException, IOException {
- UpdateRequest req = new UpdateRequest();
- req.setDocIterator(docIterator);
- return req.process(this);
- }
-
- /**
- * Adds the beans supplied by the given iterator.
- *
- * @param beanIterator
- * the iterator which returns Beans
- *
- * @return the response from the SolrServer
- */
- public UpdateResponse addBeans(final Iterator<?> beanIterator)
- throws SolrServerException, IOException {
- UpdateRequest req = new UpdateRequest();
- req.setDocIterator(new Iterator<SolrInputDocument>() {
-
- @Override
- public boolean hasNext() {
- return beanIterator.hasNext();
- }
-
- @Override
- public SolrInputDocument next() {
- Object o = beanIterator.next();
- if (o == null) return null;
- return getBinder().toSolrInputDocument(o);
- }
-
- @Override
- public void remove() {
- beanIterator.remove();
- }
- });
- return req.process(this);
- }
-
- /**
* Close the {@link ClientConnectionManager} from the internal client.
*/
@Override
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java Tue Mar 31 05:22:40 2015
@@ -367,7 +367,7 @@ public class LBHttpSolrClient extends So
boolean isZombie, String zombieKey) throws SolrServerException, IOException {
Exception ex = null;
try {
- rsp.rsp = client.request(req.getRequest());
+ rsp.rsp = client.request(req.getRequest(), (String) null);
if (isZombie) {
zombieServers.remove(zombieKey);
}
@@ -491,7 +491,7 @@ public class LBHttpSolrClient extends So
* @throws IOException If there is a low-level I/O error.
*/
@Override
- public NamedList<Object> request(final SolrRequest request)
+ public NamedList<Object> request(final SolrRequest request, String collection)
throws SolrServerException, IOException {
Exception ex = null;
ServerWrapper[] serverList = aliveServerList;
@@ -511,7 +511,7 @@ public class LBHttpSolrClient extends So
wrapper.lastUsed = System.currentTimeMillis();
try {
- return wrapper.client.request(request);
+ return wrapper.client.request(request, collection);
} catch (SolrException e) {
// Server is alive but the request was malformed or invalid
throw e;
@@ -537,7 +537,7 @@ public class LBHttpSolrClient extends So
if (wrapper.standard==false || justFailed!=null && justFailed.containsKey(wrapper.getKey())) continue;
try {
- NamedList<Object> rsp = wrapper.client.request(request);
+ NamedList<Object> rsp = wrapper.client.request(request, collection);
// remove from zombie list *before* adding to alive to avoid a race that could lose a server
zombieServers.remove(wrapper.getKey());
addToAlive(wrapper);
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java Tue Mar 31 05:22:40 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,39 +35,37 @@ 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.";
- protected void setAction( CollectionAction action ) {
+ protected void setAction(CollectionAction action) {
this.action = action;
}
- public CollectionAdminRequest()
- {
- super( METHOD.GET, "/admin/collections" );
+ public CollectionAdminRequest() {
+ super(METHOD.GET, "/admin/collections");
}
- public CollectionAdminRequest( String path )
- {
- super( METHOD.GET, path );
+ public CollectionAdminRequest(String path) {
+ super(METHOD.GET, path);
}
@Override
public SolrParams getParams() {
- if( action == null ) {
+ if (action == null) {
throw new RuntimeException( "no action specified!" );
}
ModifiableSolrParams params = new ModifiableSolrParams();
- params.set( CoreAdminParams.ACTION, action.toString() );
+ params.set(CoreAdminParams.ACTION, action.toString());
return params;
}
@@ -78,14 +75,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) {
@@ -105,8 +96,7 @@ public class CollectionAdminRequest exte
protected static class CollectionSpecificAdminRequest extends CollectionAdminRequest {
protected String collection = null;
- public final void setCollectionName( String collectionName )
- {
+ public final void setCollectionName(String collectionName) {
this.collection = collectionName;
}
@@ -120,16 +110,30 @@ public class CollectionAdminRequest exte
}
- protected static class CollectionShardAdminRequest extends CollectionSpecificAdminRequest {
+ protected static class CollectionShardAdminRequest extends CollectionAdminRequest {
protected String shardName = null;
+ protected String collection = null;
- public void setShardName(String shard) { this.shardName = shard; }
- public String getShardName() { return this.shardName; }
+ public void setCollectionName(String collectionName) {
+ this.collection = collectionName;
+ }
+
+ public String getCollectionName() {
+ return collection;
+ }
+
+ public void setShardName(String shard) {
+ this.shardName = shard;
+ }
+
+ public String getShardName() {
+ return this.shardName;
+ }
public ModifiableSolrParams getCommonParams() {
ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
- params.set( "collection", collection );
- params.set( "shard", shardName);
+ params.set(CoreAdminParams.COLLECTION, collection);
+ params.set(CoreAdminParams.SHARD, shardName);
return params;
}
@@ -187,7 +191,6 @@ public class CollectionAdminRequest exte
protected Integer stateFormat;
protected String asyncId;
-
public Create() {
action = CollectionAction.CREATE;
}
@@ -304,8 +307,10 @@ public class CollectionAdminRequest exte
@Override
public SolrParams getParams() {
ModifiableSolrParams params = getCommonParams();
- params.set( "createNodeSet", nodeSet);
- if(properties != null) {
+ if (nodeSet != null) {
+ params.set("createNodeSet", nodeSet);
+ }
+ if (properties != null) {
addProperties(params, properties);
}
return params;
@@ -383,13 +388,18 @@ public class CollectionAdminRequest exte
action = CollectionAction.REQUESTSTATUS;
}
- public void setRequestId(String requestId) {this.requestId = requestId; }
- public String getRequestId() { return this.requestId; }
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+ public String getRequestId() {
+ return this.requestId;
+ }
@Override
public SolrParams getParams() {
ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
- params.set("requestid", requestId);
+ params.set(CoreAdminParams.REQUESTID, requestId);
return params;
}
}
@@ -411,8 +421,13 @@ public class CollectionAdminRequest exte
return aliasName;
}
- public void setAliasedCollections(String alias) { this.aliasedCollections = alias; }
- public String getAliasedCollections() { return this.aliasedCollections; }
+ public void setAliasedCollections(String alias) {
+ this.aliasedCollections = alias;
+ }
+
+ public String getAliasedCollections() {
+ return this.aliasedCollections;
+ }
@Deprecated
public void setCollectionName(String aliasName) {
@@ -422,8 +437,8 @@ public class CollectionAdminRequest exte
@Override
public SolrParams getParams() {
ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
- params.set("name", aliasName);
- params.set( "collections", aliasedCollections );
+ params.set(CoreAdminParams.NAME, aliasName);
+ params.set("collections", aliasedCollections);
return params;
}
}
@@ -443,7 +458,7 @@ public class CollectionAdminRequest exte
@Override
public SolrParams getParams() {
ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
- params.set("name", aliasName);
+ params.set(CoreAdminParams.NAME, aliasName);
return params;
}
}
@@ -505,13 +520,15 @@ public class CollectionAdminRequest exte
public SolrParams getParams() {
ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
if (shardName == null || shardName.isEmpty()) {
- params.remove("shard");
+ params.remove(CoreAdminParams.SHARD);
if (routeKey == null) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Either shard or routeKey must be provided");
}
params.add(ShardParams._ROUTE_, routeKey);
}
- params.set("async", asyncId);
+ if (asyncId != null) {
+ params.set("async", asyncId);
+ }
if (node != null) {
params.add("node", node);
}
@@ -598,9 +615,10 @@ public class CollectionAdminRequest exte
return this.propertyValue;
}
+ @Override
public SolrParams getParams() {
ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
- params.add("name", propertyName);
+ params.add(CoreAdminParams.NAME, propertyName);
params.add("val", propertyValue);
return params;
@@ -609,7 +627,8 @@ public class CollectionAdminRequest exte
}
// MIGRATE request
- public static class Migrate extends CollectionSpecificAdminRequest {
+ public static class Migrate extends CollectionAdminRequest {
+ private String collection;
private String targetCollection;
private String splitKey;
private Integer forwardTimeout;
@@ -620,6 +639,14 @@ public class CollectionAdminRequest exte
action = CollectionAction.MIGRATE;
}
+ public void setCollectionName(String collection) {
+ this.collection = collection;
+ }
+
+ public String getCollectionName() {
+ return collection;
+ }
+
public void setTargetCollection(String targetCollection) {
this.targetCollection = targetCollection;
}
@@ -655,15 +682,15 @@ public class CollectionAdminRequest exte
@Override
public SolrParams getParams() {
ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
- params.set( "collection", collection );
+ params.set(CoreAdminParams.COLLECTION, collection);
params.set("target.collection", targetCollection);
params.set("split.key", splitKey);
- if(forwardTimeout != null) {
+ if (forwardTimeout != null) {
params.set("forward.timeout", forwardTimeout);
}
params.set("async", asyncId);
- if(properties != null) {
+ if (properties != null) {
addProperties(params, properties);
}
@@ -701,12 +728,43 @@ public class CollectionAdminRequest exte
}
// CLUSTERSTATUS request
- public static class ClusterStatus extends CollectionShardAdminRequest {
+ public static class ClusterStatus extends CollectionAdminRequest {
+
+ protected String shardName = null;
+ protected String collection = null;
public ClusterStatus () {
action = CollectionAction.CLUSTERSTATUS;
}
+ public void setCollectionName(String collectionName) {
+ this.collection = collectionName;
+ }
+
+ public String getCollectionName() {
+ return collection;
+ }
+
+ public void setShardName(String shard) {
+ this.shardName = shard;
+ }
+
+ public String getShardName() {
+ return this.shardName;
+ }
+
+ @Override
+ public SolrParams getParams() {
+ ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
+ if (collection != null) {
+ params.set(CoreAdminParams.COLLECTION, collection);
+ }
+ if (shardName != null) {
+ params.set(CoreAdminParams.SHARD, shardName);
+ }
+ return params;
+ }
+
}
// LIST request
@@ -762,12 +820,13 @@ public class CollectionAdminRequest exte
@Override
public SolrParams getParams() {
ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
- params.set("replica", replica);
+ params.set(CoreAdminParams.REPLICA, replica);
params.set("property", propertyName);
params.set("property.value", propertyValue);
- if(shardUnique != null)
+ if (shardUnique != null) {
params.set("shardUnique", shardUnique);
+ }
return params;
}
@@ -854,7 +913,7 @@ public class CollectionAdminRequest exte
@Override
public SolrParams getParams() {
ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
- params.set("collection", collection);
+ params.set(CoreAdminParams.COLLECTION, collection);
params.set("property", propertyName);
if(onlyActiveNodes != null)
params.set("onlyactivenodes", onlyActiveNodes);
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java Tue Mar 31 05:22:40 2015
@@ -17,25 +17,22 @@
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.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.util.Collection;
-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 +76,14 @@ public class QueryRequest extends SolrRe
}
@Override
- public SolrParams getParams() {
- return query;
+ protected QueryResponse createResponse(SolrClient client) {
+ return new QueryResponse(client);
}
@Override
- public QueryResponse process( SolrClient client ) throws SolrServerException
- {
- 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) {
- throw new SolrServerException("Error executing query", e);
- }
+ public SolrParams getParams() {
+ return query;
}
+
}
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/request/UpdateRequest.java Tue Mar 31 05:22:40 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/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/FieldStatsInfo.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/FieldStatsInfo.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/FieldStatsInfo.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/FieldStatsInfo.java Tue Mar 31 05:22:40 2015
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -47,6 +48,8 @@ public class FieldStatsInfo implements S
Map<String,List<FieldStatsInfo>> facets;
+ Map<Double, Double> percentiles;
+
public FieldStatsInfo( NamedList<Object> nl, String fname )
{
name = fname;
@@ -96,6 +99,13 @@ public class FieldStatsInfo implements S
vals.add( new FieldStatsInfo( vnl.getVal(i), n ) );
}
}
+ } else if ( "percentiles".equals( entry.getKey() ) ){
+ @SuppressWarnings("unchecked")
+ NamedList<Object> fields = (NamedList<Object>) entry.getValue();
+ percentiles = new LinkedHashMap<>();
+ for( Map.Entry<String, Object> ev : fields ) {
+ percentiles.put(Double.parseDouble(ev.getKey()), (Double)ev.getValue());
+ }
}
else {
throw new RuntimeException( "unknown key: "+entry.getKey() + " ["+entry.getValue()+"]" );
@@ -136,6 +146,10 @@ public class FieldStatsInfo implements S
if( stddev != null ) {
sb.append( " stddev:").append(stddev);
}
+ if( percentiles != null ) {
+ sb.append( " percentiles:").append(percentiles);
+ }
+
sb.append( " }" );
return sb.toString();
}
@@ -155,7 +169,7 @@ public class FieldStatsInfo implements S
public Object getSum() {
return sum;
}
-
+
public Long getCount() {
return count;
}
@@ -188,4 +202,11 @@ public class FieldStatsInfo implements S
return facets;
}
+ /**
+ * The percentiles requested if any, otherwise null. If non-null then the
+ * iteration order will match the order the percentiles were originally specified in.
+ */
+ public Map<Double, Double> getPercentiles() {
+ return percentiles;
+ }
}
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java Tue Mar 31 05:22:40 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 )
{
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/SolrException.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/SolrException.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/SolrException.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/SolrException.java Tue Mar 31 05:22:40 2015
@@ -19,18 +19,21 @@ package org.apache.solr.common;
import java.io.CharArrayWriter;
import java.io.PrintWriter;
+import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
import org.apache.solr.common.util.NamedList;
import org.slf4j.Logger;
+import org.slf4j.MDC;
/**
*
*/
public class SolrException extends RuntimeException {
+ final private Map mdcContext;
+
/**
* This list of valid HTTP Status error codes that Solr may return in
* the case of a "Server Side" error.
@@ -65,15 +68,18 @@ public class SolrException extends Runti
public SolrException(ErrorCode code, String msg) {
super(msg);
this.code = code.code;
+ this.mdcContext = MDC.getCopyOfContextMap();
}
public SolrException(ErrorCode code, String msg, Throwable th) {
super(msg, th);
this.code = code.code;
+ this.mdcContext = MDC.getCopyOfContextMap();
}
public SolrException(ErrorCode code, Throwable th) {
super(th);
this.code = code.code;
+ this.mdcContext = MDC.getCopyOfContextMap();
}
/**
@@ -84,6 +90,7 @@ public class SolrException extends Runti
protected SolrException(int code, String msg, Throwable th) {
super(msg, th);
this.code = code;
+ this.mdcContext = MDC.getCopyOfContextMap();
}
int code=0;
@@ -205,4 +212,34 @@ public class SolrException extends Runti
return t;
}
+ public void logInfoWithMdc(Logger logger, String msg) {
+ Map previousMdcContext = MDC.getCopyOfContextMap();
+ MDC.setContextMap(mdcContext);
+ try {
+ logger.info(msg);
+ } finally{
+ MDC.setContextMap(previousMdcContext);
+ }
+ }
+
+ public void logDebugWithMdc(Logger logger, String msg) {
+ Map previousMdcContext = MDC.getCopyOfContextMap();
+ MDC.setContextMap(mdcContext);
+ try {
+ logger.debug(msg);
+ } finally{
+ MDC.setContextMap(previousMdcContext);
+ }
+ }
+
+ public void logWarnWithMdc(Logger logger, String msg) {
+ Map previousMdcContext = MDC.getCopyOfContextMap();
+ MDC.setContextMap(mdcContext);
+ try {
+ logger.warn(msg);
+ } finally{
+ MDC.setContextMap(previousMdcContext);
+ }
+ }
+
}
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java Tue Mar 31 05:22:40 2015
@@ -228,7 +228,7 @@ public class ClusterState implements JSO
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("live nodes:" + liveNodes);
- sb.append(" collections:" + collectionStates);
+ sb.append("collections:" + collectionStates);
return sb.toString();
}
@@ -391,6 +391,15 @@ public class ClusterState implements JSO
}
public boolean isLazilyLoaded() { return false; }
+
+ @Override
+ public String toString() {
+ if (coll != null) {
+ return coll.toString();
+ } else {
+ return "null DocCollection ref";
+ }
+ }
}
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java Tue Mar 31 05:22:40 2015
@@ -29,6 +29,8 @@ import org.apache.zookeeper.KeeperExcept
import org.apache.zookeeper.KeeperException.NoNodeException;
import org.apache.zookeeper.KeeperException.NodeExistsException;
import org.apache.zookeeper.KeeperException.NotEmptyException;
+import org.apache.zookeeper.Op;
+import org.apache.zookeeper.OpResult;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
@@ -560,6 +562,19 @@ public class SolrZkClient implements Clo
return setData(path, data, retryOnConnLoss);
}
+ public List<OpResult> multi(final Iterable<Op> ops, boolean retryOnConnLoss) throws InterruptedException, KeeperException {
+ if (retryOnConnLoss) {
+ return zkCmdExecutor.retryOperation(new ZkOperation() {
+ @Override
+ public List<OpResult> execute() throws KeeperException, InterruptedException {
+ return keeper.multi(ops);
+ }
+ });
+ } else {
+ return keeper.multi(ops);
+ }
+ }
+
/**
* Fills string with printout of current ZooKeeper layout.
*/
@@ -733,4 +748,14 @@ public class SolrZkClient implements Clo
return e;
}
+ /**
+ * @return the address of the zookeeper cluster
+ */
+ public String getZkServerAddress() {
+ return zkServerAddress;
+ }
+
+ public ZkACLProvider getZkACLProvider() {
+ return zkACLProvider;
+ }
}
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkConfigManager.java Tue Mar 31 05:22:40 2015
@@ -61,7 +61,7 @@ public class ZkConfigManager {
String filename = file.getFileName().toString();
if (filename.startsWith("."))
return FileVisitResult.CONTINUE;
- String zkNode = zkPath + "/" + rootPath.relativize(file).toString();
+ String zkNode = createZkNodeName(zkPath, rootPath, file);
try {
zkClient.makePath(zkNode, file.toFile(), false, true);
} catch (KeeperException | InterruptedException e) {
@@ -78,6 +78,15 @@ public class ZkConfigManager {
});
}
+ private static String createZkNodeName(String zkRoot, Path root, Path file) {
+ String relativePath = root.relativize(file).toString();
+ // Windows shenanigans
+ String separator = root.getFileSystem().getSeparator();
+ if ("\\".equals(separator))
+ relativePath = relativePath.replaceAll("\\\\", "/");
+ return zkRoot + "/" + relativePath;
+ }
+
private void downloadFromZK(String zkPath, Path dir) throws IOException {
try {
List<String> files = zkClient.getChildren(zkPath, null, true);
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java Tue Mar 31 05:22:40 2015
@@ -102,6 +102,8 @@ public class ZkStateReader implements Cl
protected volatile ClusterState clusterState;
private static final long SOLRCLOUD_UPDATE_DELAY = Long.parseLong(System.getProperty("solrcloud.update.delay", "5000"));
+ private static final int GET_LEADER_RETRY_INTERVAL_MS = 50;
+ private static final int GET_LEADER_RETRY_DEFAULT_TIMEOUT = 4000;
public static final String LEADER_ELECT_ZKNODE = "leader_elect";
@@ -268,13 +270,13 @@ public class ZkStateReader implements Cl
return aliases;
}
- public Boolean checkValid(String coll, int version) {
+ public Integer compareStateVersions(String coll, int version) {
DocCollection collection = clusterState.getCollectionOrNull(coll);
if (collection == null) return null;
if (collection.getZNodeVersion() < version) {
log.debug("server older than client {}<{}", collection.getZNodeVersion(), version);
DocCollection nu = getCollectionLive(this, coll);
- if (nu == null) return null;
+ if (nu == null) return -1 ;
if (nu.getZNodeVersion() > collection.getZNodeVersion()) {
updateWatchedCollection(nu);
collection = nu;
@@ -282,12 +284,12 @@ public class ZkStateReader implements Cl
}
if (collection.getZNodeVersion() == version) {
- return Boolean.TRUE;
+ return null;
}
log.debug("wrong version from client {}!={} ", version, collection.getZNodeVersion());
- return Boolean.FALSE;
+ return collection.getZNodeVersion();
}
public synchronized void createClusterStateWatchersAndUpdate() throws KeeperException,
@@ -295,12 +297,10 @@ public class ZkStateReader implements Cl
// We need to fetch the current cluster state and the set of live nodes
synchronized (getUpdateLock()) {
- cmdExecutor.ensureExists(CLUSTER_STATE, zkClient);
- cmdExecutor.ensureExists(ALIASES, zkClient);
-
+
log.info("Updating cluster state from ZooKeeper... ");
- zkClient.exists(CLUSTER_STATE, new Watcher() {
+ Stat stat = zkClient.exists(CLUSTER_STATE, new Watcher() {
@Override
public void process(WatchedEvent event) {
@@ -339,6 +339,10 @@ public class ZkStateReader implements Cl
}
}, true);
+
+ if (stat == null)
+ throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE,
+ "Cannot connect to cluster at " + zkClient.getZkServerAddress() + ": cluster not found/not ready");
}
@@ -640,12 +644,22 @@ public class ZkStateReader implements Cl
shard, timeout));
return props.getCoreUrl();
}
-
+
+ public Replica getLeader(String collection, String shard) throws InterruptedException {
+ if (clusterState != null) {
+ Replica replica = clusterState.getLeader(collection, shard);
+ if (replica != null && getClusterState().liveNodesContain(replica.getNodeName())) {
+ return replica;
+ }
+ }
+ return null;
+ }
+
/**
* Get shard leader properties, with retry if none exist.
*/
public Replica getLeaderRetry(String collection, String shard) throws InterruptedException {
- return getLeaderRetry(collection, shard, 4000);
+ return getLeaderRetry(collection, shard, GET_LEADER_RETRY_DEFAULT_TIMEOUT);
}
/**
@@ -653,14 +667,11 @@ public class ZkStateReader implements Cl
*/
public Replica getLeaderRetry(String collection, String shard, int timeout) throws InterruptedException {
long timeoutAt = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeout, TimeUnit.MILLISECONDS);
- while (System.nanoTime() < timeoutAt && !closed) {
- if (clusterState != null) {
- Replica replica = clusterState.getLeader(collection, shard);
- if (replica != null && getClusterState().liveNodesContain(replica.getNodeName())) {
- return replica;
- }
- }
- Thread.sleep(50);
+ while (true) {
+ Replica leader = getLeader(collection, shard);
+ if (leader != null) return leader;
+ if (System.nanoTime() >= timeoutAt || closed) break;
+ Thread.sleep(GET_LEADER_RETRY_INTERVAL_MS);
}
throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "No registered leader was found after waiting for "
+ timeout + "ms " + ", collection: " + collection + " slice: " + shard);
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/luke/FieldFlag.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/luke/FieldFlag.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/luke/FieldFlag.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/luke/FieldFlag.java Tue Mar 31 05:22:40 2015
@@ -30,6 +30,7 @@ public enum FieldFlag {
TERM_VECTOR_STORED('V', "TermVector Stored"),
TERM_VECTOR_OFFSET('o', "Store Offset With TermVector"),
TERM_VECTOR_POSITION('p', "Store Position With TermVector"),
+ TERM_VECTOR_PAYLOADS('y', "Store Payloads With TermVector"),
OMIT_NORMS('O', "Omit Norms"),
OMIT_TF('F', "Omit Term Frequencies & Positions"),
OMIT_POSITIONS('P', "Omit Positions"),
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java Tue Mar 31 05:22:40 2015
@@ -74,6 +74,9 @@ public abstract class CoreAdminParams
/** The collection name in solr cloud */
public final static String COLLECTION = "collection";
+ /** The replica name in solr cloud */
+ public final static String REPLICA = "replica";
+
/** The shard id in solr cloud */
public final static String SHARD = "shard";
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/FacetParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/FacetParams.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/FacetParams.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/FacetParams.java Tue Mar 31 05:22:40 2015
@@ -149,6 +149,16 @@ public interface FacetParams {
*/
public static final String FACET_PREFIX = FACET + ".prefix";
+ /**
+ * Only return constraints of a facet field containing the given string.
+ */
+ public static final String FACET_CONTAINS = FACET + ".contains";
+
+ /**
+ * If using facet contains, ignore case when comparing values.
+ */
+ public static final String FACET_CONTAINS_IGNORE_CASE = FACET_CONTAINS + ".ignoreCase";
+
/**
* When faceting by enumerating the terms in a field,
* only use the filterCache for terms with a df >= to this parameter.
@@ -165,7 +175,7 @@ public interface FacetParams {
*/
public static final String FACET_DATE_START = FACET_DATE + ".start";
/**
- * Date string indicating the endinging point for a date facet range.
+ * Date string indicating the ending point for a date facet range.
* Can be overriden on a per field basis.
*/
public static final String FACET_DATE_END = FACET_DATE + ".end";
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/ModifiableSolrParams.java Tue Mar 31 05:22:40 2015
@@ -57,6 +57,11 @@ public class ModifiableSolrParams extend
}
}
+ public Map<String,String[]> getMap() {
+ return vals;
+ }
+
+
//----------------------------------------------------------------
//----------------------------------------------------------------
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/MultiMapSolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/MultiMapSolrParams.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/MultiMapSolrParams.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/MultiMapSolrParams.java Tue Mar 31 05:22:40 2015
@@ -19,6 +19,7 @@ package org.apache.solr.common.params;
import org.apache.solr.common.util.StrUtils;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.io.IOException;
@@ -30,18 +31,33 @@ public class MultiMapSolrParams extends
protected final Map<String,String[]> map;
public static void addParam(String name, String val, Map<String,String[]> map) {
- String[] arr = map.get(name);
- if (arr ==null) {
- arr =new String[]{val};
- } else {
- String[] newarr = new String[arr.length+1];
- System.arraycopy(arr,0,newarr,0,arr.length);
- newarr[arr.length]=val;
- arr =newarr;
- }
- map.put(name, arr);
+ String[] arr = map.get(name);
+ if (arr == null) {
+ arr = new String[]{val};
+ } else {
+ String[] newarr = new String[arr.length+1];
+ System.arraycopy(arr, 0, newarr, 0, arr.length);
+ newarr[arr.length] = val;
+ arr = newarr;
+ }
+ map.put(name, arr);
}
+ public static void addParam(String name, String[] vals, Map<String,String[]> map) {
+ String[] arr = map.put(name, vals);
+ if (arr == null) {
+ return;
+ }
+
+ String[] newarr = new String[arr.length+vals.length];
+ System.arraycopy(arr, 0, newarr, 0, arr.length);
+ System.arraycopy(vals, 0, newarr, arr.length, vals.length);
+ arr = newarr;
+
+ map.put(name, arr);
+ }
+
+
public MultiMapSolrParams(Map<String,String[]> map) {
this.map = map;
}
@@ -88,5 +104,35 @@ public class MultiMapSolrParams extends
return sb.toString();
}
+ /** Returns a MultiMap view of the SolrParams as efficiently as possible. The returned map may or may not be a backing implementation. */
+ public static Map<String,String[]> asMultiMap(SolrParams params) {
+ return asMultiMap(params, false);
+ }
+
+ /** Returns a MultiMap view of the SolrParams. A new map will be created if newCopy==true */
+ public static Map<String,String[]> asMultiMap(SolrParams params, boolean newCopy) {
+ if (params instanceof MultiMapSolrParams) {
+ Map<String,String[]> map = ((MultiMapSolrParams)params).getMap();
+ if (newCopy) {
+ return new HashMap<>(map);
+ }
+ return map;
+ } else if (params instanceof ModifiableSolrParams) {
+ Map<String,String[]> map = ((ModifiableSolrParams)params).getMap();
+ if (newCopy) {
+ return new HashMap<>(map);
+ }
+ return map;
+ } else {
+ Map<String,String[]> map = new HashMap<>();
+ Iterator<String> iterator = params.getParameterNamesIterator();
+ while (iterator.hasNext()) {
+ String name = iterator.next();
+ map.put(name, params.getParams(name));
+ }
+ return map;
+ }
+ }
+
}
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java Tue Mar 31 05:22:40 2015
@@ -320,13 +320,8 @@ public abstract class SolrParams impleme
/** Create SolrParams from NamedList. */
public static SolrParams toSolrParams(NamedList params) {
- // if no keys are repeated use the faster MapSolrParams
- HashMap<String,String> map = new HashMap<>();
- for (int i=0; i<params.size(); i++) {
- String prev = map.put(params.getName(i), params.getVal(i).toString());
- if (prev!=null) return new MultiMapSolrParams(toMultiMap(params));
- }
- return new MapSolrParams(map);
+ // always use MultiMap for easier processing further down the chain
+ return new MultiMapSolrParams(toMultiMap(params));
}
/** Create filtered SolrParams. */
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/TermVectorParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/TermVectorParams.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/TermVectorParams.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/params/TermVectorParams.java Tue Mar 31 05:22:40 2015
@@ -35,6 +35,11 @@ public interface TermVectorParams {
* */
public static final String POSITIONS = TV_PREFIX + "positions";
/**
+ * Return Term Vector payloads information
+ *
+ * */
+ public static final String PAYLOADS = TV_PREFIX + "payloads";
+ /**
* Return offset information, if available
* */
public static final String OFFSETS = TV_PREFIX + "offsets";
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/ContentStreamBase.java Tue Mar 31 05:22:40 2015
@@ -107,6 +107,7 @@ public abstract class ContentStreamBase
@Override
public String getContentType() {
if(contentType==null) {
+ // TODO: this is buggy... does not allow for whitespace, JSON comments, etc.
InputStream stream = null;
try {
stream = new FileInputStream(file);
@@ -140,29 +141,40 @@ public abstract class ContentStreamBase
public static class StringStream extends ContentStreamBase
{
private final String str;
-
+
public StringStream( String str ) {
- this.str = str;
-
- contentType = null;
+ this(str, detect(str));
+ }
+
+ public StringStream( String str, String contentType ) {
+ this.str = str;
+ this.contentType = contentType;
name = null;
size = new Long( str.length() );
sourceInfo = "string";
}
- @Override
- public String getContentType() {
- if(contentType==null && str.length() > 0) {
- char first = str.charAt(0);
- if(first == '<') {
- return "application/xml";
+ public static String detect(String str) {
+ String detectedContentType = null;
+ int lim = str.length() - 1;
+ for (int i=0; i<lim; i++) {
+ char ch = str.charAt(i);
+ if (Character.isWhitespace(ch)) {
+ continue;
}
- if(first == '{') {
- return "application/json";
+ // first non-whitespace chars
+ if (ch == '#' // single line comment
+ || (ch == '/' && (str.charAt(i + 1) == '/' || str.charAt(i + 1) == '*')) // single line or multi-line comment
+ || (ch == '{' || ch == '[') // start of JSON object
+ )
+ {
+ detectedContentType = "application/json";
+ } else if (ch == '<') {
+ detectedContentType = "text/xml";
}
- // find a comma? for CSV?
+ break;
}
- return contentType;
+ return detectedContentType;
}
@Override
Modified: lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/FastInputStream.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/FastInputStream.java?rev=1670257&r1=1670256&r2=1670257&view=diff
==============================================================================
--- lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/FastInputStream.java (original)
+++ lucene/dev/branches/lucene6271/solr/solrj/src/java/org/apache/solr/common/util/FastInputStream.java Tue Mar 31 05:22:40 2015
@@ -96,6 +96,21 @@ public class FastInputStream extends Dat
return end - pos;
}
+ /** Returns the internal buffer used for caching */
+ public byte[] getBuffer() {
+ return buf;
+ }
+
+ /** Current position within the internal buffer */
+ public int getPositionInBuffer() {
+ return pos;
+ }
+
+ /** Current end-of-data position within the internal buffer. This is one past the last valid byte. */
+ public int getEndInBuffer() {
+ return end;
+ }
+
@Override
public int read(byte b[], int off, int len) throws IOException {
int r=0; // number of bytes we have read