
com.decathlon.tzatziki.utils.PersistenceUtil Maven / Gradle / Ivy
package com.decathlon.tzatziki.utils;
import com.fasterxml.jackson.databind.Module;
import edu.emory.mathcs.backport.java.util.Collections;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import java.util.HashMap;
import java.util.Map;
import static com.decathlon.tzatziki.utils.Unchecked.unchecked;
@SuppressWarnings("unchecked")
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class PersistenceUtil {
private static final Map> persistenceClassByName = Collections.synchronizedMap(new HashMap<>());
public static Module getMapperModule() {
Class> tableClass = getPersistenceClass("Table");
Class mapperModuleClass;
if (tableClass.getPackageName().equals("javax.persistence"))
mapperModuleClass = unchecked(() -> (Class) Class.forName("com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module"));
else
mapperModuleClass = unchecked(() -> (Class) Class.forName("com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule"));
return unchecked(() -> mapperModuleClass.getConstructor().newInstance());
}
public static Class getPersistenceClass(String className) {
return (Class) persistenceClassByName.computeIfAbsent(
className,
clazz -> {
Class
© 2015 - 2025 Weber Informatics LLC | Privacy Policy