Java api: change base class for GetIndexedScriptRequest and improve its javadocs

`GetIndexedScriptRequest` now extends `ActionRequest` instead of `SingleShardOperationRequest`, as the index field that was provided with the previous base class is not needed (hardcoded).

Closes #7553
This commit is contained in:
javanna 2014-09-03 12:31:16 +02:00 committed by Luca Cavanna
parent 851cb3ae8a
commit 19418749e4
3 changed files with 38 additions and 48 deletions

View File

@ -19,9 +19,12 @@
package org.elasticsearch.action.indexedscripts.get;
import org.elasticsearch.Version;
import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.IndicesRequest;
import org.elasticsearch.action.ValidateActions;
import org.elasticsearch.action.support.single.shard.SingleShardOperationRequest;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
@ -33,15 +36,12 @@ import org.elasticsearch.search.fetch.source.FetchSourceContext;
import java.io.IOException;
/**
* A request to get a document (its source) from an index based on its type/language (optional) and id. Best created using
* {@link org.elasticsearch.client.Requests#getRequest(String)}.
* <p/>
* <p>The operation requires the {@link #index()}, {@link #scriptLang(String)} and {@link #id(String)}
* to be set.
* A request to get an indexed script (its source) based on its language (optional) and id.
* The operation requires the {@link #scriptLang(String)} and {@link #id(String)} to be set.
*
* @see GetIndexedScriptResponse
*/
public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetIndexedScriptRequest> {
public class GetIndexedScriptRequest extends ActionRequest<GetIndexedScriptRequest> implements IndicesRequest {
protected String scriptLang;
protected String id;
@ -56,32 +56,28 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
private VersionType versionType = VersionType.INTERNAL;
private long version = Versions.MATCH_ANY;
/**
* Constructs a new get request against the script index. The {@link #scriptLang(String)} and {@link #id(String)}
* must be set.
*/
public GetIndexedScriptRequest() {
super(ScriptService.SCRIPT_INDEX);
}
/**
* Constructs a new get request against the script index with the type and id.
*
* @param index The index to get the document from
* @param scriptLang The type of the document
* @param id The id of the document
* @param scriptLang The language of the script
* @param id The id of the script
*/
public GetIndexedScriptRequest(String index, String scriptLang, String id) {
super(index);
public GetIndexedScriptRequest(String scriptLang, String id) {
this.scriptLang = scriptLang;
this.id = id;
}
@Override
public ActionRequestValidationException validate() {
ActionRequestValidationException validationException = super.validate();
ActionRequestValidationException validationException = null;
if (scriptLang == null) {
validationException = ValidateActions.addValidationError("type is missing", validationException);
}
@ -100,8 +96,14 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
return new String[]{ScriptService.SCRIPT_INDEX};
}
@Override
public IndicesOptions indicesOptions() {
return IndicesOptions.strictSingleIndexNoExpandForbidClosed();
}
/**
* Sets the type of the document to fetch.
* Sets the language of the script to fetch.
*/
public GetIndexedScriptRequest scriptLang(@Nullable String type) {
this.scriptLang = type;
@ -109,7 +111,7 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
}
/**
* Sets the id of the document to fetch.
* Sets the id of the script to fetch.
*/
public GetIndexedScriptRequest id(String id) {
this.id = id;
@ -125,17 +127,8 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
return this;
}
/**
* Explicitly specify the fields that will be returned. By default, the <tt>_source</tt>
* field will be returned.
*/
public String[] fields() {
return null;
}
/**
* Sets the preference to execute the search. Defaults to randomize across shards. Can be set to
* Sets the preference to execute the get. Defaults to randomize across shards. Can be set to
* <tt>_local</tt> to prefer local shards, <tt>_primary</tt> to execute only on primary shards, or
* a custom value, which guarantees that the same order will be used across different requests.
*/
@ -211,6 +204,10 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
@Override
public void readFrom(StreamInput in) throws IOException {
super.readFrom(in);
if (in.getVersion().before(Version.V_1_4_0)) {
//the index was previously serialized although not needed
in.readString();
}
scriptLang = in.readString();
id = in.readString();
preference = in.readOptionalString();
@ -231,13 +228,17 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
@Override
public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out);
if (out.getVersion().before(Version.V_1_4_0)) {
//the index was previously serialized although not needed
out.writeString(ScriptService.SCRIPT_INDEX);
}
out.writeString(scriptLang);
out.writeString(id);
out.writeOptionalString(preference);
out.writeBoolean(refresh);
if (realtime == null) {
out.writeByte((byte) -1);
} else if (realtime == false) {
} else if (!realtime) {
out.writeByte((byte) 0);
} else {
out.writeByte((byte) 1);
@ -251,7 +252,6 @@ public class GetIndexedScriptRequest extends SingleShardOperationRequest<GetInde
@Override
public String toString() {
return "[" + index + "][" + scriptLang + "][" + id + "]: routing [" + routing + "]";
return "[" + ScriptService.SCRIPT_INDEX + "][" + scriptLang + "][" + id + "]: routing [" + routing + "]";
}
}

View File

@ -19,8 +19,6 @@
package org.elasticsearch.rest.action.script;
import org.elasticsearch.ElasticsearchIllegalStateException;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptRequest;
import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptResponse;
import org.elasticsearch.client.Client;
@ -28,14 +26,11 @@ import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.rest.*;
import org.elasticsearch.rest.action.support.RestResponseListener;
import org.elasticsearch.script.ScriptService;
import java.io.IOException;
import java.util.Map;
import static org.elasticsearch.rest.RestRequest.Method.GET;
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
@ -47,8 +42,7 @@ import static org.elasticsearch.rest.RestStatus.OK;
public class RestGetIndexedScriptAction extends BaseRestHandler {
@Inject
public RestGetIndexedScriptAction(Settings settings, Client client,
ScriptService scriptService, RestController controller) {
public RestGetIndexedScriptAction(Settings settings, Client client, RestController controller) {
super(settings, client);
controller.registerHandler(GET, "/_scripts/{lang}/{id}", this);
}
@ -56,7 +50,7 @@ public class RestGetIndexedScriptAction extends BaseRestHandler {
@Override
public void handleRequest(final RestRequest request, final RestChannel channel, Client client) {
final GetIndexedScriptRequest getRequest = new GetIndexedScriptRequest(ScriptService.SCRIPT_INDEX, request.param("lang"), request.param("id"));
final GetIndexedScriptRequest getRequest = new GetIndexedScriptRequest(request.param("lang"), request.param("id"));
RestResponseListener<GetIndexedScriptResponse> responseListener = new RestResponseListener<GetIndexedScriptResponse>(channel) {
@Override
public RestResponse buildResponse(GetIndexedScriptResponse response) throws Exception {

View File

@ -19,21 +19,18 @@
package org.elasticsearch.rest.action.template;
import org.elasticsearch.ElasticsearchIllegalStateException;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptRequest;
import org.elasticsearch.action.indexedscripts.get.GetIndexedScriptResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.*;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.rest.*;
import org.elasticsearch.rest.action.support.RestResponseListener;
import org.elasticsearch.script.ScriptService;
import org.elasticsearch.search.aggregations.support.ValuesSource;
import java.io.IOException;
import java.util.Map;
import static org.elasticsearch.rest.RestRequest.Method.GET;
import static org.elasticsearch.rest.RestStatus.NOT_FOUND;
@ -45,15 +42,14 @@ import static org.elasticsearch.rest.RestStatus.OK;
public class RestGetSearchTemplateAction extends BaseRestHandler {
@Inject
public RestGetSearchTemplateAction(Settings settings, Client client,
RestController controller, ScriptService scriptService) {
public RestGetSearchTemplateAction(Settings settings, Client client, RestController controller) {
super(settings, client);
controller.registerHandler(GET, "/_search/template/{id}", this);
}
@Override
public void handleRequest(final RestRequest request, final RestChannel channel, Client client) {
final GetIndexedScriptRequest getRequest = new GetIndexedScriptRequest(ScriptService.SCRIPT_INDEX, "mustache", request.param("id"));
final GetIndexedScriptRequest getRequest = new GetIndexedScriptRequest("mustache", request.param("id"));
RestResponseListener<GetIndexedScriptResponse> responseListener = new RestResponseListener<GetIndexedScriptResponse>(channel) {
@Override
public RestResponse buildResponse(GetIndexedScriptResponse response) throws Exception {