package com.github.obourgain.elasticsearch.http.client;
import java.util.concurrent.Future;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
import org.elasticsearch.action.admin.indices.optimize.OptimizeRequest;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
import org.elasticsearch.action.support.PlainActionFuture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.CreateIndexActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.GetMappingsActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.GetTemplatesActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.IndicesExistsActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.PutIndexTemplateActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.close.CloseIndexActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.delete.DeleteIndexActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.exists.IndicesAliasesActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.flush.FlushActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.getaliases.GetAliasesActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.mapping.put.PutMappingActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.open.OpenIndexActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.optimize.OptimizeActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.refresh.RefreshActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.settings.GetSettingsActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.settings.UpdateSettingsActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.validate.ValidateQueryActionHandler;
import com.github.obourgain.elasticsearch.http.handler.admin.indices.validate.ValidateQueryResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.aliases.GetAliasesResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.aliases.IndicesAliasesResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.close.CloseIndexResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.create.CreateIndexResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.delete.DeleteIndexResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.exists.IndicesExistsResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.flush.FlushResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.mapping.GetMappingsResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.mapping.PutMappingResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.open.OpenIndexResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.optimize.OptimizeResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.refresh.RefreshResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.settings.GetSettingsResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.settings.UpdateSettingsResponse;
import com.github.obourgain.elasticsearch.http.response.admin.indices.template.put.PutIndexTemplateResponse;
import com.google.common.base.Supplier;
import io.netty.buffer.ByteBuf;
import io.reactivex.netty.protocol.http.client.HttpClient;
/**
* @author olivier bourgain
*/
public class HttpIndicesAdminClient {
private static final Logger logger = LoggerFactory.getLogger(HttpIndicesAdminClient.class);
private final Supplier<HttpClient<ByteBuf, ByteBuf>> httpClient;
private ValidateQueryActionHandler validateQueryActionHandler = new ValidateQueryActionHandler(this);
private CreateIndexActionHandler createIndexActionHandler = new CreateIndexActionHandler(this);
private DeleteIndexActionHandler deleteIndexActionHandler = new DeleteIndexActionHandler(this);
private IndicesExistsActionHandler indicesExistsActionHandler = new IndicesExistsActionHandler(this);
private RefreshActionHandler refreshActionHandler = new RefreshActionHandler(this);
private FlushActionHandler flushActionHandler = new FlushActionHandler(this);
private OptimizeActionHandler optimizeActionHandler = new OptimizeActionHandler(this);
private OpenIndexActionHandler openIndexActionHandler = new OpenIndexActionHandler(this);
private CloseIndexActionHandler closeIndexActionHandler = new CloseIndexActionHandler(this);
private PutMappingActionHandler putMappingActionHandler = new PutMappingActionHandler(this);
private PutIndexTemplateActionHandler putIndexTemplateActionHandler = new PutIndexTemplateActionHandler(this);
private GetTemplatesActionHandler getTemplatesActionHandler = new GetTemplatesActionHandler(this);
private UpdateSettingsActionHandler updateSettingsActionHandler = new UpdateSettingsActionHandler(this);
private GetSettingsActionHandler getSettingsActionHandler = new GetSettingsActionHandler(this);
private GetMappingsActionHandler getMappingsActionHandler = new GetMappingsActionHandler(this);
private IndicesAliasesActionHandler indicesAliasesActionHandler = new IndicesAliasesActionHandler(this);
private GetAliasesActionHandler getAliasesActionHandler = new GetAliasesActionHandler(this);
public HttpIndicesAdminClient(Supplier<io.reactivex.netty.protocol.http.client.HttpClient<ByteBuf, ByteBuf>> httpClient) {
this.httpClient = httpClient;
}
public io.reactivex.netty.protocol.http.client.HttpClient<ByteBuf, ByteBuf> getHttpClient() {
return httpClient.get();
}
public void validateQuery(ValidateQueryRequest request, ActionListener<ValidateQueryResponse> listener) {
validateQueryActionHandler.execute(request, listener);
}
public Future<ValidateQueryResponse> validateQuery(ValidateQueryRequest request) {
PlainActionFuture<ValidateQueryResponse> future = PlainActionFuture.newFuture();
validateQuery(request, future);
return future;
}
public void createIndex(CreateIndexRequest request, ActionListener<CreateIndexResponse> listener) {
createIndexActionHandler.execute(request, listener);
}
public Future<CreateIndexResponse> createIndex(CreateIndexRequest request) {
PlainActionFuture<CreateIndexResponse> future = PlainActionFuture.newFuture();
createIndex(request, future);
return future;
}
public void deleteIndex(DeleteIndexRequest request, ActionListener<DeleteIndexResponse> listener) {
deleteIndexActionHandler.execute(request, listener);
}
public Future<DeleteIndexResponse> deleteIndex(DeleteIndexRequest request) {
PlainActionFuture<DeleteIndexResponse> future = PlainActionFuture.newFuture();
deleteIndex(request, future);
return future;
}
public void refresh(RefreshRequest request, ActionListener<RefreshResponse> listener) {
refreshActionHandler.execute(request, listener);
}
public Future<RefreshResponse> refresh(RefreshRequest request) {
PlainActionFuture<RefreshResponse> future = PlainActionFuture.newFuture();
refresh(request, future);
return future;
}
public void flush(FlushRequest request, ActionListener<FlushResponse> listener) {
flushActionHandler.execute(request, listener);
}
public Future<FlushResponse> flush(FlushRequest request) {
PlainActionFuture<FlushResponse> future = PlainActionFuture.newFuture();
flush(request, future);
return future;
}
public void optimize(OptimizeRequest request, ActionListener<OptimizeResponse> listener) {
optimizeActionHandler.execute(request, listener);
}
public Future<OptimizeResponse> optimize(OptimizeRequest request) {
PlainActionFuture<OptimizeResponse> future = PlainActionFuture.newFuture();
optimize(request, future);
return future;
}
public void open(OpenIndexRequest request, ActionListener<OpenIndexResponse> listener) {
openIndexActionHandler.execute(request, listener);
}
public Future<OpenIndexResponse> open(OpenIndexRequest request) {
PlainActionFuture<OpenIndexResponse> future = PlainActionFuture.newFuture();
open(request, future);
return future;
}
public void close(CloseIndexRequest request, ActionListener<CloseIndexResponse> listener) {
closeIndexActionHandler.execute(request, listener);
}
public Future<CloseIndexResponse> close(CloseIndexRequest request) {
PlainActionFuture<CloseIndexResponse> future = PlainActionFuture.newFuture();
close(request, future);
return future;
}
public void getAliases(GetAliasesRequest request, ActionListener<GetAliasesResponse> listener) {
getAliasesActionHandler.execute(request, listener);
}
public Future<GetAliasesResponse> getAliases(GetAliasesRequest request) {
PlainActionFuture<GetAliasesResponse> future = PlainActionFuture.newFuture();
getAliases(request, future);
return future;
}
public void aliases(IndicesAliasesRequest request, ActionListener<IndicesAliasesResponse> listener) {
indicesAliasesActionHandler.execute(request, listener);
}
public Future<IndicesAliasesResponse> aliases(IndicesAliasesRequest request) {
PlainActionFuture<IndicesAliasesResponse> future = PlainActionFuture.newFuture();
aliases(request, future);
return future;
}
public void putMapping(PutMappingRequest request, ActionListener<PutMappingResponse> listener) {
putMappingActionHandler.execute(request, listener);
}
public Future<PutMappingResponse> putMapping(PutMappingRequest request) {
PlainActionFuture<PutMappingResponse> future = PlainActionFuture.newFuture();
putMapping(request, future);
return future;
}
public void putIndexTemplate(PutIndexTemplateRequest request, ActionListener<PutIndexTemplateResponse> listener) {
putIndexTemplateActionHandler.execute(request, listener);
}
public Future<PutIndexTemplateResponse> putIndexTemplate(PutIndexTemplateRequest request) {
PlainActionFuture<PutIndexTemplateResponse> future = PlainActionFuture.newFuture();
putIndexTemplate(request, future);
return future;
}
public void indicesExists(IndicesExistsRequest request, ActionListener<IndicesExistsResponse> listener) {
indicesExistsActionHandler.execute(request, listener);
}
public Future<IndicesExistsResponse> indicesExists(IndicesExistsRequest request) {
PlainActionFuture<IndicesExistsResponse> future = PlainActionFuture.newFuture();
indicesExists(request, future);
return future;
}
public void getMappings(GetMappingsRequest request, ActionListener<GetMappingsResponse> listener) {
getMappingsActionHandler.execute(request, listener);
}
public Future<GetMappingsResponse> getMappings(GetMappingsRequest request) {
PlainActionFuture<GetMappingsResponse> future = PlainActionFuture.newFuture();
getMappings(request, future);
return future;
}
public void getSettings(GetSettingsRequest request, ActionListener<GetSettingsResponse> listener) {
getSettingsActionHandler.execute(request, listener);
}
public Future<GetSettingsResponse> getSettings(GetSettingsRequest request) {
PlainActionFuture<GetSettingsResponse> future = PlainActionFuture.newFuture();
getSettings(request, future);
return future;
}
public void updateSettings(UpdateSettingsRequest request, ActionListener<UpdateSettingsResponse> listener) {
updateSettingsActionHandler.execute(request, listener);
}
public Future<UpdateSettingsResponse> updateSettings(UpdateSettingsRequest request) {
PlainActionFuture<UpdateSettingsResponse> future = PlainActionFuture.newFuture();
updateSettings(request, future);
return future;
}
}