Package org.jboss.elasticsearch.river.remote.mgm.riverslist

Source Code of org.jboss.elasticsearch.river.remote.mgm.riverslist.RestListRiversAction

/*
* JBoss, Home of Professional Open Source
* Copyright 2012 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @authors tag. All rights reserved.
*/
package org.jboss.elasticsearch.river.remote.mgm.riverslist;

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

import org.elasticsearch.action.ActionListener;
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.rest.BytesRestResponse;
import org.elasticsearch.rest.RestChannel;
import org.elasticsearch.rest.RestController;
import org.elasticsearch.rest.RestRequest;
import org.elasticsearch.rest.RestStatus;
import org.jboss.elasticsearch.river.remote.mgm.RestJRMgmBaseAction;

/**
* REST action handler for Remote river get state operation.
*
* @author Vlastimil Elias (velias at redhat dot com)
*/
public class RestListRiversAction extends RestJRMgmBaseAction {

  @Inject
  protected RestListRiversAction(Settings settings, Client client, RestController controller) {
    super(settings, client);
    controller.registerHandler(org.elasticsearch.rest.RestRequest.Method.GET, "/_remote_river/list", this);
  }

  @Override
  public void handleRequest(final RestRequest restRequest, final RestChannel restChannel, Client client) {

    ListRiversRequest actionRequest = new ListRiversRequest();

    logger.debug("Go to look for remote rivers in the cluster");
    client.admin().cluster()
        .execute(ListRiversAction.INSTANCE, actionRequest, new ActionListener<ListRiversResponse>() {

          @Override
          public void onResponse(ListRiversResponse response) {
            try {
              Set<String> allRivers = new HashSet<String>();
              for (NodeListRiversResponse node : response.getNodes()) {
                if (node.getRiverNames() != null) {
                  allRivers.addAll(node.getRiverNames());
                }
              }

              XContentBuilder builder = restChannel.newBuilder();
              builder.startObject();
              builder.field("river_names", allRivers);
              builder.endObject();
              restChannel.sendResponse(new BytesRestResponse(RestStatus.OK, builder));
            } catch (Exception e) {
              onFailure(e);
            }
          }

          @Override
          public void onFailure(Throwable e) {
            try {
              restChannel.sendResponse(new BytesRestResponse(restChannel, e));
            } catch (IOException e1) {
              logger.error("Failed to send failure response", e1);
            }
          }

        });
  }
}
TOP

Related Classes of org.jboss.elasticsearch.river.remote.mgm.riverslist.RestListRiversAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.