gcube-cms-suite/cms-plugin-framework/src/main/java/org/gcube/application/cms/implementations/ImplementationProvider.java

40 lines
1020 B
Java

package org.gcube.application.cms.implementations;
import lombok.Synchronized;
import org.gcube.application.cms.caches.Cache;
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 getEngineByManagedClass(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
setEngine(new DefaultISProvider(),ISInterface.class);
}
}