| 1 |  |   | 
  | 2 |  |   | 
  | 3 |  |   | 
  | 4 |  |   | 
  | 5 |  |   | 
  | 6 |  |   | 
  | 7 |  |   | 
  | 8 |  |   | 
  | 9 |  |   | 
  | 10 |  |   | 
  | 11 |  |   | 
  | 12 |  |   | 
  | 13 |  |   | 
  | 14 |  |   | 
  | 15 |  |   | 
  | 16 |  |  package org.kuali.student.common.test.spring; | 
  | 17 |  |   | 
  | 18 |  |  import org.springframework.beans.BeansException; | 
  | 19 |  |  import org.springframework.beans.factory.config.BeanDefinition; | 
  | 20 |  |  import org.springframework.beans.factory.config.BeanFactoryPostProcessor; | 
  | 21 |  |  import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; | 
  | 22 |  |  import org.springframework.beans.factory.support.BeanDefinitionRegistry; | 
  | 23 |  |  import org.springframework.beans.factory.support.RootBeanDefinition; | 
  | 24 |  |  import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor; | 
  | 25 |  |   | 
  | 26 | 3 |  public class DaoPostProcessor implements BeanFactoryPostProcessor { | 
  | 27 |  |          private String daoImplClasses; | 
  | 28 |  |   | 
  | 29 |  |           | 
  | 30 |  |   | 
  | 31 |  |   | 
  | 32 |  |          public String getDaoImplClasses() { | 
  | 33 | 0 |                  return daoImplClasses; | 
  | 34 |  |          } | 
  | 35 |  |   | 
  | 36 |  |           | 
  | 37 |  |   | 
  | 38 |  |   | 
  | 39 |  |   | 
  | 40 |  |          public void setDaoImplClasses(String daoImplClasses) { | 
  | 41 | 3 |                  this.daoImplClasses = daoImplClasses; | 
  | 42 | 3 |          } | 
  | 43 |  |   | 
  | 44 |  |          @Override | 
  | 45 |  |          public void postProcessBeanFactory( | 
  | 46 |  |                          ConfigurableListableBeanFactory beanFactory) throws BeansException { | 
  | 47 | 3 |                  String[] classes = daoImplClasses.split(","); | 
  | 48 | 3 |                  BeanDefinitionRegistry registry = ((BeanDefinitionRegistry) beanFactory); | 
  | 49 | 3 |                  PersistenceAnnotationBeanPostProcessor pabpp = new PersistenceAnnotationBeanPostProcessor(); | 
  | 50 | 3 |                  if (classes != null && classes.length > 0) { | 
  | 51 | 8 |                          for (String line : classes) { | 
  | 52 | 5 |                                  if (!"".equals(line)) { | 
  | 53 |  |                                          try { | 
  | 54 | 4 |                                                  String[] split = line.split("\\|"); | 
  | 55 | 4 |                                                  String className = split[0]; | 
  | 56 | 4 |                                                  Class<?> clazz = Class.forName(className); | 
  | 57 | 4 |                                                  BeanDefinition definition = new RootBeanDefinition( | 
  | 58 |  |                                                                  clazz); | 
  | 59 | 4 |                                                  registry.registerBeanDefinition(clazz.getSimpleName(), | 
  | 60 |  |                                                                  definition); | 
  | 61 | 4 |                                                  pabpp.postProcessMergedBeanDefinition( | 
  | 62 |  |                                                                  (RootBeanDefinition) definition, clazz, clazz | 
  | 63 |  |                                                                                  .getSimpleName()); | 
  | 64 |  |   | 
  | 65 | 0 |                                          } catch (Exception e) { | 
  | 66 | 0 |                                                  throw new RuntimeException(e); | 
  | 67 | 4 |                                          } | 
  | 68 |  |                                  } | 
  | 69 |  |                          } | 
  | 70 |  |                  } | 
  | 71 | 3 |          } | 
  | 72 |  |  } |