
package com.google.idea.blaze.java.run;

import com.google.common.collect.ImmutableSet;
import com.google.idea.blaze.base.model.primitives.Kind;
import com.google.idea.blaze.base.run.BlazeCommandRunConfiguration;
import com.google.idea.blaze.base.run.confighandler.BlazeCommandRunConfigurationHandler;
import com.google.idea.blaze.base.run.confighandler.BlazeCommandRunConfigurationHandlerProvider;

/** Java-specific handler provider for {@link BlazeCommandRunConfiguration}s. */
public class BlazeJavaRunConfigurationHandlerProvider
    implements BlazeCommandRunConfigurationHandlerProvider {

  private static final ImmutableSet<Kind> RELEVANT_RULE_KINDS =
      ImmutableSet.of(
          Kind.ANDROID_ROBOLECTRIC_TEST,
          Kind.JAVA_TEST,
          Kind.JAVA_BINARY,
          Kind.SCALA_BINARY,
          Kind.SCALA_TEST,
          Kind.SCALA_JUNIT_TEST);

  static boolean supportsKind(Kind kind) {
    return RELEVANT_RULE_KINDS.contains(kind);
  }

  @Override
  public boolean canHandleKind(Kind kind) {
    return supportsKind(kind);
  }

  @Override
  public BlazeCommandRunConfigurationHandler createHandler(BlazeCommandRunConfiguration config) {
    return new BlazeJavaRunConfigurationHandler(config);
  }

  @Override
  public String getId() {
    return "BlazeJavaRunConfigurationHandlerProvider";
  }
}
