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

com.magenic.jmaqs.base.DriverManager Maven / Gradle / Ivy

/*
 * Copyright 2020 (C) Magenic, All rights Reserved
 */

package com.magenic.jmaqs.base;

import com.magenic.jmaqs.utilities.logging.Logger;
import java.util.function.Supplier;

/**
 * The type Driver manager.
 * @param   Manager of type T
 */
public abstract class DriverManager implements AutoCloseable {

  /**
   * Base Test Object.
   */
  private final BaseTestObject baseTestObject;

  /**
   * The Base driver.
   */
  protected T baseDriver;

  /**
   * The Get driver.
   */
  protected Supplier getDriverSupplier;

  /**
   * Instantiates a new Driver manager.
   *
   * @param getDriverFunction driver function supplier
   * @param baseTestObject    the base test object
   */
  public DriverManager(Supplier getDriverFunction, BaseTestObject baseTestObject) {
    this.baseTestObject = baseTestObject;
    this.getDriverSupplier = getDriverFunction;
  }

  /**
   * Gets base driver.
   *
   * @return the base driver
   */
  public T getBaseDriver() {
    return baseDriver;
  }

  /**
   * Sets base driver.
   *
   * @param baseDriver the base driver
   */
  public void setBaseDriver(T baseDriver) {
    this.baseDriver = baseDriver;
  }

  /**
   * Is driver initialized boolean.
   *
   * @return the boolean
   */
  public boolean isDriverInitialized() {
    return this.baseDriver != null;
  }

  /**
   * Gets logger.
   *
   * @return the logger
   */
  public Logger getLogger() {
    return this.baseTestObject.getLogger();
  }

  /**
   * Get base object.
   *
   * @return the object
   */
  protected T getBase() {
    if (this.baseDriver == null) {
      this.baseDriver = this.getDriverSupplier.get();
    }

    return this.baseDriver;
  }

  /**
   * Gets test object.
   *
   * @return the test object
   */
  public BaseTestObject getTestObject() {
    return baseTestObject;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy