package org.elasticsearch.action.admin.indices.settings.put;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.bytes.ChannelBufferBytesReference;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.json.JsonXContent;
import org.jboss.netty.handler.codec.http.HttpMethod;
import org.jboss.netty.handler.codec.http.HttpRequest;
import org.jboss.netty.handler.codec.http.HttpResponse;
import org.xbib.elasticsearch.helper.client.http.HttpAction;
import org.xbib.elasticsearch.helper.client.http.HttpInvocationContext;
import java.io.IOException;
import java.net.URL;
import java.util.Map;
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
public class HttpUpdateSettingsAction extends HttpAction<UpdateSettingsRequest, UpdateSettingsResponse> {
public HttpUpdateSettingsAction(Settings settings) {
super(settings, UpdateSettingsAction.NAME);
}
@Override
protected HttpRequest createHttpRequest(URL url, UpdateSettingsRequest request) throws IOException {
XContentBuilder builder = jsonBuilder();
builder.startObject();
request.settings().toXContent(builder, ToXContent.EMPTY_PARAMS);
builder.endObject();
String index = request.indices() != null ? "/" + String.join(",", request.indices()) : "" ;
return newRequest(HttpMethod.PUT, url, index + "/_settings", builder.string());
}
@Override
protected UpdateSettingsResponse createResponse(HttpInvocationContext<UpdateSettingsRequest,UpdateSettingsResponse> httpInvocationContext) throws IOException {
if (httpInvocationContext == null) {
throw new IllegalStateException("no http context");
}
HttpResponse httpResponse = httpInvocationContext.getHttpResponse();
BytesReference ref = new ChannelBufferBytesReference(httpResponse.getContent());
Map<String,Object> map = JsonXContent.jsonXContent.createParser(ref).map();
return new UpdateSettingsResponse();
}
}