All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.jooby.run.JoobyRunOptions Maven / Gradle / Ivy

There is a newer version: 3.4.0
Show newest version
/**
 * Jooby https://jooby.io
 * Apache License Version 2.0 https://jooby.io/LICENSE.txt
 * Copyright 2014 Edgar Espina
 */
package io.jooby.run;

import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;

/**
 * Jooby run options. Group available option for jooby:run which are exposes via Maven and Gradle
 * plugins.
 *
 * @author edgar
 * @since 2.0.0
 */
public class JoobyRunOptions {

  private String projectName;

  private String mainClass;

  private List restartExtensions = Arrays.asList("conf", "properties", "class");

  private List compileExtensions = Arrays.asList("java", "kt");

  private Integer port = null;

  /**
   * Project name.
   *
   * @return Project name.
   */
  public String getProjectName() {
    return projectName;
  }

  /**
   * Set project name.
   *
   * @param projectName Project name.
   */
  public void setProjectName(String projectName) {
    this.projectName = projectName;
  }

  /**
   * Main class to run.
   *
   * @return Main class (one with main method).
   */
  public String getMainClass() {
    return mainClass;
  }

  /**
   * Set main class name.
   *
   * @param mainClass Main class name.
   */
  public void setMainClass(String mainClass) {
    this.mainClass = mainClass;
  }

  /**
   * Application port.
   *
   * @return Application port.
   */
  public Integer getPort() {
    return port;
  }

  /**
   * Set application port.
   *
   * @param port Application port.
   */
  public void setPort(Integer port) {
    this.port = port;
  }

  /**
   * List of file extensions that trigger an application restart. Default is: conf,
   * properties and class.
   *
   * @return Restart extensions.
   */
  public List getRestartExtensions() {
    return restartExtensions;
  }

  /**
   * Set restart extensions. Extension is expected to be specify without . (dot).
   *
   * @param restartExtensions Restart extensions.
   */
  public void setRestartExtensions(List restartExtensions) {
    if (restartExtensions != null && !restartExtensions.isEmpty()) {
      this.restartExtensions = restartExtensions;
    }
  }

  /**
   * List of file extensions that trigger a compilation request. Compilation is done via Maven or
   * Gradle. Default is: java and kt.
   *
   * @return Compile extensions.
   */
  public List getCompileExtensions() {
    return compileExtensions;
  }

  /**
   * Set compile extensions. Extension is expected to be specify without . (dot).
   *
   * @param compileExtensions Compile extensions.
   */
  public void setCompileExtensions(List compileExtensions) {
    if (compileExtensions != null && !compileExtensions.isEmpty()) {
      this.compileExtensions = compileExtensions;
    }
  }

  /**
   * Test if the given path matches a compile extension.
   *
   * @param path File.
   * @return Test if the given path matches a compile extension.
   */
  public boolean isCompileExtension(Path path) {
    return containsExtension(compileExtensions, path);
  }

  /**
   * Test if the given path matches a restart extension.
   *
   * @param path File.
   * @return Test if the given path matches a restart extension.
   */
  public boolean isRestartExtension(Path path) {
    return containsExtension(restartExtensions, path);
  }

  private boolean containsExtension(List extensions, Path path) {
    String filename = path.getFileName().toString();
    return extensions.stream().anyMatch(ext -> filename.endsWith("." + ext));
  }

  @Override public String toString() {
    return "{"
        + "projectName='" + projectName + '\''
        + ", mainClass='" + mainClass + '\''
        + ", restartExtensions=" + restartExtensions
        + ", compileExtensions=" + compileExtensions
        + ", port=" + port
        + '}';
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy