Package com.crawljax.di

Source Code of com.crawljax.di.ConfigurationModule

package com.crawljax.di;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.net.URL;

import com.crawljax.browser.EmbeddedBrowser;
import com.crawljax.browser.WebDriverBrowserBuilder;
import com.crawljax.core.configuration.BrowserConfiguration;
import com.crawljax.core.configuration.CrawlRules;
import com.crawljax.core.configuration.CrawljaxConfiguration;
import com.crawljax.core.configuration.ProxyConfiguration;
import com.google.inject.AbstractModule;
import com.google.inject.BindingAnnotation;
import com.google.inject.util.Providers;

/**
* Binds the configuration elements so they are injectable.
*/
public class ConfigurationModule extends AbstractModule {

  private final CrawljaxConfiguration config;

  public ConfigurationModule(CrawljaxConfiguration config) {
    this.config = config;

  }

  @Override
  protected void configure() {
    bind(URL.class).annotatedWith(BaseUrl.class).toInstance(config.getUrl());
    bind(CrawljaxConfiguration.class).toInstance(config);
    bind(CrawlRules.class).toInstance(config.getCrawlRules());
    bind(ProxyConfiguration.class).toInstance(config.getProxyConfiguration());

    BrowserConfiguration browserConfig = config.getBrowserConfig();
    bind(BrowserConfiguration.class).toInstance(browserConfig);

    if (browserConfig.isDefaultBuilder()) {
      bind(EmbeddedBrowser.class).toProvider(WebDriverBrowserBuilder.class);
    } else {
      bind(EmbeddedBrowser.class).toProvider(
              Providers.guicify(browserConfig.getBrowserBuilder()));
    }
  }

  @BindingAnnotation
  @Target({ FIELD, PARAMETER, METHOD })
  @Retention(RUNTIME)
  public @interface BaseUrl {
  }

}
TOP

Related Classes of com.crawljax.di.ConfigurationModule

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.