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 public class DaoPostProcessor implements BeanFactoryPostProcessor {
27 private String daoImplClasses;
28
29
30
31
32 public String getDaoImplClasses() {
33 return daoImplClasses;
34 }
35
36
37
38
39
40 public void setDaoImplClasses(String daoImplClasses) {
41 this.daoImplClasses = daoImplClasses;
42 }
43
44 @Override
45 public void postProcessBeanFactory(
46 ConfigurableListableBeanFactory beanFactory) throws BeansException {
47 String[] classes = daoImplClasses.split(",");
48 BeanDefinitionRegistry registry = ((BeanDefinitionRegistry) beanFactory);
49 PersistenceAnnotationBeanPostProcessor pabpp = new PersistenceAnnotationBeanPostProcessor();
50 if (classes != null && classes.length > 0) {
51 for (String line : classes) {
52 if (!"".equals(line)) {
53 try {
54 String[] split = line.split("\\|");
55 String className = split[0];
56 Class<?> clazz = Class.forName(className);
57 BeanDefinition definition = new RootBeanDefinition(
58 clazz);
59 registry.registerBeanDefinition(clazz.getSimpleName(),
60 definition);
61 pabpp.postProcessMergedBeanDefinition(
62 (RootBeanDefinition) definition, clazz, clazz
63 .getSimpleName());
64
65 } catch (Exception e) {
66 throw new RuntimeException(e);
67 }
68 }
69 }
70 }
71 }
72 }