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

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

package com.gruelbox.transactionoutbox;

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

import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@SuperBuilder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
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