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

com.gruelbox.transactionoutbox.spi.AbstractFullyQualifiedNameInstantiator Maven / Gradle / Ivy

There is a newer version: 6.0.553
Show newest version
package com.gruelbox.transactionoutbox.spi;

import static com.gruelbox.transactionoutbox.spi.Utils.uncheckedly;

import com.gruelbox.transactionoutbox.Instantiator;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import lombok.extern.slf4j.Slf4j;

/**
 * Abstract {@link Instantiator} implementation which simplifies the creation of implementations
 * which instantiate based on the clazz FQN.
 */
@Slf4j
@SuperBuilder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public abstract class AbstractFullyQualifiedNameInstantiator implements Instantiator {

  @Override
  public final String getName(Class clazz) {
    return clazz.getName();
  }

  @Override
  public final Object getInstance(String name) {
    log.debug("Getting class by name [{}]", name);
    return createInstance(uncheckedly(() -> Class.forName(name)));
  }

  protected abstract Object createInstance(Class clazz);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy