package io.katharsis.repository;
import io.katharsis.locator.JsonServiceLocator;
import io.katharsis.repository.exception.RepositoryInstanceNotFoundException;
/**
* This builder is responsible for creating a new instance of a repository
*/
public class RepositoryInstanceBuilder<T> {
private final JsonServiceLocator jsonServiceLocator;
private final Class<T> repositoryClass;
public RepositoryInstanceBuilder(JsonServiceLocator jsonServiceLocator, Class<T> repositoryClass) {
this.jsonServiceLocator = jsonServiceLocator;
this.repositoryClass = repositoryClass;
}
public T buildRepository() {
T repoInstance = jsonServiceLocator.getInstance(repositoryClass);
if (repoInstance == null) {
throw new RepositoryInstanceNotFoundException(repositoryClass.getCanonicalName());
}
return repoInstance;
}
public Class<T> getRepositoryClass() {
return repositoryClass;
}
}