39 lines
911 B
Java
39 lines
911 B
Java
package org.gcube.application.cms.implementations;
|
|
|
|
|
|
import lombok.Synchronized;
|
|
import org.gcube.application.cms.caches.Engine;
|
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
public class ImplementationProvider {
|
|
|
|
private static ImplementationProvider instance=null;
|
|
|
|
@Synchronized
|
|
public static ImplementationProvider get() {
|
|
if(instance==null) {
|
|
instance=new ImplementationProvider();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
|
|
public <T> T getEngineByClass(Class<T> clazz) throws ConfigurationException {
|
|
return (T) implementationsRegistry.get(clazz).getObject();
|
|
}
|
|
|
|
private ConcurrentHashMap<Class,Engine> implementationsRegistry=new ConcurrentHashMap<>();
|
|
|
|
public <T> void setEngine(Engine<T> engine, Class<T> clazz){
|
|
implementationsRegistry.put(clazz,engine);
|
|
}
|
|
|
|
|
|
private ImplementationProvider(){
|
|
//Defaults
|
|
|
|
}
|
|
}
|