1 package jfun.yan.xml.nuts.spring; 2 3 4 import java.util.Properties ; 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 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 [] interfaces; 33 public void setInit_method(String name){ 34 setInitializer(name); 35 } 36 public void setDestroy_method(String name){ 37 setDisposer(name); 38 } 39 public void setStart_method(String name){ 40 setStarter(name); 41 } 42 public void setStop_method(String name){ 43 setStopper(name); 44 } 45 46 47 public String [] getInterfaces() { 48 return interfaces; 49 } 50 51 public void setInterfaces(String [] 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 .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 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 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 |