001/** 002 * Copyright 2005-2016 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.kim.impl.services; 017 018import org.apache.log4j.Logger; 019import org.kuali.rice.core.api.config.module.RunMode; 020import org.kuali.rice.core.api.config.property.ConfigContext; 021import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 022import org.kuali.rice.kim.api.KimConstants; 023import org.kuali.rice.kim.framework.role.RoleTypeService; 024import org.kuali.rice.kim.impl.data.DataIntegrityService; 025import org.kuali.rice.kim.impl.group.GroupInternalService; 026import org.kuali.rice.kim.impl.responsibility.ResponsibilityInternalService; 027import org.kuali.rice.kim.impl.role.RoleDao; 028import org.kuali.rice.kim.impl.role.RoleInternalService; 029import org.springframework.cache.CacheManager; 030 031import javax.sql.DataSource; 032import javax.xml.namespace.QName; 033 034public class KimImplServiceLocator { 035 private static final Logger LOG = Logger.getLogger(KimImplServiceLocator.class); 036 037 public static final String KIM_RUN_MODE_PROPERTY = "kim.mode"; 038 public static final String RESPONSIBILITY_INTERNAL_SERVICE = "responsibilityInternalService"; 039 public static final String GROUP_INTERNAL_SERVICE = "groupInternalService"; 040 public static final String ROLE_INTERNAL_SERVICE = "kimRoleInternalService"; 041 public static final String LOCAL_CACHE_MANAGER = "kimLocalCacheManager"; 042 public static final String DEFAULT_ROLE_TYPE_SERVICE = "kimRoleTypeService"; 043 public static final String DATA_INTEGRITY_SERVICE = "kimDataIntegrityService"; 044 045 public static final String KIM_ROLE_DAO = "kimRoleDao"; 046 public static final String KIM_DATA_SOURCE = "kimDataSource"; 047 048 public static Object getService(String serviceName) { 049 return getBean(serviceName); 050 } 051 052 public static Object getBean(String serviceName) { 053 if (LOG.isDebugEnabled()) { 054 LOG.debug("Fetching service " + serviceName); 055 } 056 QName name = new QName(serviceName); 057 RunMode kimRunMode = RunMode.valueOf(ConfigContext.getCurrentContextConfig().getProperty(KIM_RUN_MODE_PROPERTY)); 058 if (kimRunMode == RunMode.REMOTE || kimRunMode == RunMode.THIN) { 059 name = new QName(KimConstants.KIM_MODULE_NAMESPACE, serviceName); 060 } 061 return GlobalResourceLoader.getResourceLoader().getService(name); 062 } 063 064 public static ResponsibilityInternalService getResponsibilityInternalService() { 065 return (ResponsibilityInternalService) getService(RESPONSIBILITY_INTERNAL_SERVICE); 066 } 067 068 public static GroupInternalService getGroupInternalService() { 069 return (GroupInternalService) getService(GROUP_INTERNAL_SERVICE); 070 } 071 072 public static RoleInternalService getRoleInternalService() { 073 return (RoleInternalService) getService(ROLE_INTERNAL_SERVICE); 074 } 075 076 public static CacheManager getLocalCacheManager() { 077 return (CacheManager) getService(LOCAL_CACHE_MANAGER); 078 } 079 080 public static RoleTypeService getDefaultRoleTypeService() { 081 return (RoleTypeService) getService(DEFAULT_ROLE_TYPE_SERVICE); 082 } 083 084 public static DataIntegrityService getDataIntegrityService() { 085 return (DataIntegrityService) getService(DATA_INTEGRITY_SERVICE); 086 } 087 088 public static RoleDao getRoleDao() { 089 return (RoleDao) getService(KIM_ROLE_DAO); 090 } 091 092 public static DataSource getDataSource() { 093 return (DataSource)getService(KIM_DATA_SOURCE); 094 } 095}