Package com.airbnb.suggest

Source Code of com.airbnb.suggest.SuggestionServiceMain

package com.airbnb.suggest;

import com.airbnb.suggest.rest.RestModule;
import com.google.inject.Module;
import com.google.inject.servlet.GuiceFilter;
import com.twitter.common.application.AbstractApplication;
import com.twitter.common.application.Lifecycle;
import com.twitter.common.application.modules.HttpModule;
import com.twitter.common.application.modules.LogModule;
import com.twitter.common.application.modules.StatsModule;
import com.twitter.common.args.Arg;
import com.twitter.common.args.CmdLine;
import com.twitter.common.args.constraints.NotNull;
import com.twitter.common.net.http.GuiceServletConfig;
import com.twitter.common.net.http.HttpServerDispatch;
import org.mortbay.jetty.servlet.Context;

import javax.inject.Inject;
import java.util.Arrays;
import java.util.logging.Logger;

/**
* @author Tobi Knaup
*/
public final class SuggestionServiceMain extends AbstractApplication {

  @CmdLine(name = "server_set_path", help = "Joins the set of nodes located under this path in ZK")
  public static final Arg<String> SERVER_SET_PATH = Arg.create("/airbnb/service/suggest");

  @NotNull
  @CmdLine(name = "register_service", help = "Whether this instance should register itself in ZK")
  public static final Arg<Boolean> REGISTER_SERVICE = Arg.create(true);

  @Inject
  private Logger logger;

  @Inject
  private Lifecycle lifecycle;

  @Inject
  private HttpServerDispatch httpServer;

  @Inject
  private GuiceServletConfig servletConfig;


  @Override
  public void run() {
    logger.info("Service started");

    addRestSupport();

    lifecycle.awaitShutdown();
  }

  @Override
  public Iterable<? extends Module> getModules() {
    return Arrays.asList(
        new HttpModule(),
        new LogModule(),
        new RestModule(),
        new StatsModule()
    );
  }

  private void addRestSupport() {
    Context context = httpServer.getRootContext();
    context.addFilter(GuiceFilter.class, "/suggest/*", 0);
    context.addEventListener(servletConfig);
  }

}
TOP

Related Classes of com.airbnb.suggest.SuggestionServiceMain

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.