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

com.adaptrex.core.services.AdaptrexServices Maven / Gradle / Ivy

package com.adaptrex.core.services;

import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriInfo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.adaptrex.core.AdaptrexConfig;
import com.adaptrex.core.persistence.api.ORMPersistenceManager;
import com.adaptrex.core.rest.RestService;

public class AdaptrexServices {

	private static Logger log = LoggerFactory.getLogger(AdaptrexServices.class);
	
	private static AdaptrexConfig config;
	private static Map persistenceManagers
		= new HashMap();
	
	public static AdaptrexConfig getConfig() {
		if (config == null) {
			config = new AdaptrexConfig();
		} 
		return config;
	}
	
	public static ORMPersistenceManager getPersistenceManager() {
		return getPersistenceManager(null);
	}
	
	public static ORMPersistenceManager getPersistenceManager(String factoryName) {
		if (factoryName == null) factoryName = getConfig().get(AdaptrexConfig.PERSISTENCE_ORM_DEFAULT);
		String key = factoryName != null ? factoryName : "_default";
		
		ORMPersistenceManager persistenceManager = persistenceManagers.get(key);
		if (persistenceManager == null) {
			synchronized(AdaptrexServices.class) {
				if (persistenceManagers.get(key) != null) {
					return persistenceManagers.get(key);
				}
				
				log.debug("Creating Persistence Manager: " + (factoryName == null ? "_default" : factoryName));
				
				String persistenceManagerImplName = config.get(AdaptrexConfig.PERSISTENCE_ORM, 
						"com.adaptrex.core.persistence.jpa.JPAPersistenceManager");
				
				try {
					Class ormClazz = Class.forName(persistenceManagerImplName);
					
					persistenceManager = (ORMPersistenceManager) (factoryName == null
							? ormClazz.getDeclaredConstructor().newInstance()
							: ormClazz.getDeclaredConstructor(String.class).newInstance(factoryName));
							;
					
				} catch (ClassNotFoundException e) {
					throw new RuntimeException("Couldn't find ORMPersistenceFactory implementation for your ORM (" +
							persistenceManagerImplName + ")", e);
				} catch (Exception e) {
					throw new RuntimeException(e);
				}

				persistenceManagers.put(key, persistenceManager);				
			}
		}
		
		return persistenceManager;
	}
	
	public static RestService getRestService() {
		return new RestService();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy