KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > xml > nuts > spring > SpringBeanNut


1 package jfun.yan.xml.nuts.spring;
2
3
4 import java.util.Properties JavaDoc;
5
6
7 import org.springframework.beans.factory.DisposableBean;
8 import org.springframework.context.ApplicationContext;
9 import org.springframework.transaction.PlatformTransactionManager;
10
11
12
13 import jfun.yan.Component;
14 import jfun.yan.PropertyBinder;
15 import jfun.yan.spring.SpringAdapter;
16 import jfun.yan.spring.SpringContext;
17 import jfun.yan.spring.SpringUtils;
18 import jfun.yan.xml.SingletonMode;
19 import jfun.yan.xml.nuts.BeanNut;
20
21 /**
22  * The spring-aware bean tag.
23  * <p>
24  * @author Ben Yu
25  * Nov 17, 2005 12:05:51 AM
26  */

27 public class SpringBeanNut extends BeanNut
28 implements SpringContext{
29   private final SpringService spring;
30   private Component tx;
31   private Component transaction_attrs;
32   private String JavaDoc[] interfaces;
33   public void setInit_method(String JavaDoc name){
34     setInitializer(name);
35   }
36   public void setDestroy_method(String JavaDoc name){
37     setDisposer(name);
38   }
39   public void setStart_method(String JavaDoc name){
40     setStarter(name);
41   }
42   public void setStop_method(String JavaDoc name){
43     setStopper(name);
44   }
45
46
47   public String JavaDoc[] getInterfaces() {
48     return interfaces;
49   }
50
51   public void setInterfaces(String JavaDoc[] interfaces) {
52     this.interfaces = interfaces;
53   }
54
55   public Component getTransactionAttributes() {
56     return transaction_attrs;
57   }
58
59   public void setTransactionAttributes(Component transaction_attrs) {
60     this.transaction_attrs =
61       cast(Properties JavaDoc.class, transaction_attrs);
62   }
63
64   public Component getTransactionManager() {
65     return tx;
66   }
67
68   public void setTransactionManager(Component tx) {
69     this.tx = cast(PlatformTransactionManager.class, tx);
70   }
71
72   public SpringBeanNut(SpringService service) {
73     this.spring = service;
74   }
75
76   public void manageDisposableBean(DisposableBean instance){
77     spring.manageDisposableBean(instance);
78   }
79
80   public ApplicationContext getApplicationContext() {
81     return spring.getApplicationContext();
82   }
83
84   public Component eval(){
85     final Component r = super.eval();
86     return SpringAdapter.adapt(r, this, tx, transaction_attrs, interfaces);
87   }
88
89   public void addBeanPostProcessor(String JavaDoc key, Component bpp) {
90     spring.addBeanPostProcessor(key, bpp.getType(), bpp);
91   }
92   
93   
94   
95   private boolean singleton_attribute_set = false;
96   private SingletonMode singleton;
97   public SingletonMode getSingleton() {
98     return singleton;
99   }
100   public void setSingleton(SingletonMode singleton) {
101     singleton_attribute_set = true;
102     this.singleton = singleton;
103   }
104   public boolean isSingletonAttributeSet() {
105     return singleton_attribute_set;
106   }
107   /**
108    * Decorate the autowire mode by filtering out setters defined
109    * in the Spring XXXAware marker interfaces.
110    */

111   public PropertyBinder getPropertyAutowireMode() {
112     final PropertyBinder mode = super.getPropertyAutowireMode();
113     if(mode==null) return null;
114     return SpringUtils.getAutowireWithoutAwareMarkerInterfaces(mode);
115   }
116 }
117
Popular Tags