1 package jfun.yan.xml.nuts.spring; 2 3 import java.util.Properties ; 4 5 import org.springframework.beans.factory.DisposableBean; 6 import org.springframework.context.ApplicationContext; 7 import org.springframework.transaction.PlatformTransactionManager; 8 9 import jfun.yan.Component; 10 import jfun.yan.spring.SpringAdapter; 11 import jfun.yan.spring.SpringContext; 12 import jfun.yan.xml.SingletonMode; 13 import jfun.yan.xml.nuts.MethodNut; 14 15 21 public class SpringMethodNut extends MethodNut implements SpringContext { 22 private final SpringService spring; 23 private Component tx; 24 private Component transaction_attrs; 25 private String [] interfaces; 26 public void setInit_method(String name){ 27 setInitializer(name); 28 } 29 public void setDestroy_method(String name){ 30 setDisposer(name); 31 } 32 public void setStart_method(String name){ 33 setStarter(name); 34 } 35 public void setStop_method(String name){ 36 setStopper(name); 37 } 38 39 40 41 public String [] getInterfaces() { 42 return interfaces; 43 } 44 45 public void setInterfaces(String [] interfaces) { 46 this.interfaces = interfaces; 47 } 48 49 public Component getTransactionAttributes() { 50 return transaction_attrs; 51 } 52 53 public void setTransactionAttributes(Component transaction_attrs) { 54 this.transaction_attrs = 55 cast(Properties .class, transaction_attrs); 56 } 57 58 public Component getTransactionManager() { 59 return tx; 60 } 61 62 public void setTransactionManager(Component tx) { 63 this.tx = cast(PlatformTransactionManager.class, tx); 64 } 65 66 public SpringMethodNut(SpringService service) { 67 this.spring = service; 68 } 69 70 public void manageDisposableBean(DisposableBean instance){ 71 spring.manageDisposableBean(instance); 72 } 73 74 public ApplicationContext getApplicationContext() { 75 return spring.getApplicationContext(); 76 } 77 78 public Component eval(){ 79 final Component r = super.eval(); 80 return SpringAdapter.adapt(r, this, tx, transaction_attrs, interfaces); 81 } 82 83 public void addBeanPostProcessor(String key, Component bpp) { 84 spring.addBeanPostProcessor(key, bpp.getType(), bpp); 85 } 86 87 private boolean singleton_attribute_set = false; 88 private SingletonMode singleton; 89 public SingletonMode getSingleton() { 90 return singleton; 91 } 92 public void setSingleton(SingletonMode singleton) { 93 singleton_attribute_set = true; 94 this.singleton = singleton; 95 } 96 public boolean isSingletonAttributeSet() { 97 return singleton_attribute_set; 98 } 99 } 100 | Popular Tags |