Skip to content

Commit

Permalink
Java api: change base class for GetIndexedScriptRequest and improve i…
Browse files Browse the repository at this point in the history
…ts 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
  • Loading branch information
javanna authored and areek committed Sep 8, 2014
1 parent 50ed38d commit 8ed9ba0
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 48 deletions.
Expand Up @@ -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;
Expand All @@ -33,15 +36,12 @@
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;
Expand All @@ -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);
}
Expand All @@ -100,16 +96,22 @@ public String[] indices() {
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;
return this;
}

/**
* Sets the id of the document to fetch.
* Sets the id of the script to fetch.
*/
public GetIndexedScriptRequest id(String id) {
this.id = id;
Expand All @@ -125,17 +127,8 @@ public GetIndexedScriptRequest routing(String routing) {
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.
*/
Expand Down Expand Up @@ -211,6 +204,10 @@ public VersionType versionType() {
@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();
Expand All @@ -231,13 +228,17 @@ public void readFrom(StreamInput in) throws IOException {
@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);
Expand All @@ -251,7 +252,6 @@ public void writeTo(StreamOutput out) throws IOException {

@Override
public String toString() {
return "[" + index + "][" + scriptLang + "][" + id + "]: routing [" + routing + "]";

return "[" + ScriptService.SCRIPT_INDEX + "][" + scriptLang + "][" + id + "]: routing [" + routing + "]";
}
}
Expand Up @@ -19,23 +19,18 @@
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;
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;
Expand All @@ -47,16 +42,15 @@
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);
}

@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 {
Expand Down
Expand Up @@ -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;
Expand All @@ -45,15 +42,14 @@
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 {
Expand Down

0 comments on commit 8ed9ba0

Please sign in to comment.