001 /** 002 * Copyright 2004-2013 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 */ 016 package org.kuali.hr.sys.context; 017 018 import org.kuali.hr.sys.util.constants.SpringBeans; 019 import org.springframework.beans.BeansException; 020 import org.springframework.context.ApplicationContext; 021 import org.springframework.context.ApplicationContextAware; 022 023 /** 024 * helper class for spring beans stuff 025 * 026 * Copied over from SpringContext.java from the LeaveManager Project 027 */ 028 public class SpringContext implements ApplicationContextAware { 029 030 private static ApplicationContext applicationContext; 031 032 /** 033 * public constructor that throws exception if you try to instantiate it 034 * twice 035 * 036 * @throws Exception 037 */ 038 public SpringContext() throws Exception { 039 if (applicationContext != null) 040 throw new Exception( 041 "Cannot instantiate SpringContext twice. Use the static methods"); 042 } 043 044 /* 045 * (non-Javadoc) 046 * 047 * @see 048 * org.springframework.context.ApplicationContextAware#setApplicationContext 049 * (org.springframework.context.ApplicationContext) 050 */ 051 @Override 052 public void setApplicationContext(ApplicationContext applicationContext) 053 throws BeansException { 054 SpringContext.applicationContext = applicationContext; 055 } 056 057 /** 058 * return a spring bean by its name 059 * 060 * @param beanName 061 * @return 062 */ 063 public static Object getBean(SpringBeans bean) { 064 return applicationContext.getBean(bean.toString()); 065 } 066 067 /** 068 * returns a spring bean by its class... this only works when the class name 069 * equals the spring bean name 070 * 071 * @param clazz 072 * @return 073 */ 074 @SuppressWarnings("unchecked") 075 public static <T> T getBean(Class<T> clazz) { 076 String[] beanNames = applicationContext.getBeanNamesForType(clazz); 077 // just return the first one 078 return (T) applicationContext.getBean(beanNames[0]); 079 } 080 }