1 package jfun.yan.xml.nuts.spring; 2 3 import java.io.IOException ; 4 5 import jfun.yan.Container; 6 import jfun.yan.containers.ManualContainer; 7 import jfun.yan.lifecycle.DefaultLifecycleManager; 8 import jfun.yan.lifecycle.Procedure; 9 import jfun.yan.spring.Container2ApplicationContext; 10 import jfun.yan.xml.NutsProcessor; 11 import org.springframework.beans.factory.DisposableBean; 12 13 20 public class SpringNuts { 21 22 30 public static void setSpringAware(String module_name, 31 NutsProcessor processor, 32 ClassLoader loader){ 33 setSpringAware(module_name, processor, loader, 34 "jfun/yan/xml/nuts/spring/spring.xml"); 35 } 36 46 public static void setSpringAware(String module_name, 47 NutsProcessor processor, 48 ClassLoader loader, String nuts_resource){ 49 setSpringAware(module_name, processor, loader, nuts_resource, 50 "jfun/yan/xml/nuts/spring/appcontext.xml"); 51 } 52 53 64 public static void setSpringAware(String module_name, 65 NutsProcessor processor, 66 ClassLoader loader, String nuts_resource, 67 String appcontext_resource){ 68 final NutsProcessor spring = 69 processor.createMetaProcessor(loader); 70 final Container yan = processor.getContainer(); 71 77 final Container base = new ManualContainer(); 78 base.registerValue("modulename", module_name); 79 base.registerValue("timestamp", new Long (System.currentTimeMillis())); 80 base.registerValue("classloader", loader); 81 base.registerValue("container", yan); 82 final NutsProcessor cinterpreter = new NutsProcessor(); 83 try{ 85 cinterpreter.processResource(appcontext_resource); 86 } 87 catch(IOException e){ 88 throw new IllegalStateException ("cannot startup spring integration."); 89 } 90 91 final Container context = cinterpreter.getContainer().inherit(base); 92 final Container2ApplicationContext ctxt = (Container2ApplicationContext) 93 context.getInstance("appcontext"); 94 95 final Container nuts = spring.getContainer(); 96 final DefaultLifecycleManager manager = processor.getLifecycleManager(); 97 98 nuts.registerValue(new SpringService(ctxt, manager)); 104 final String resource = nuts_resource; 105 try{ 106 spring.processResource(resource); 107 } 108 catch(IOException e){ 109 throw new IllegalStateException ("cannot load spring nuts: " 110 + resource); 111 } 112 processor.loadNutsFromContainer(nuts); 113 } 114 115 125 public static void setSpringAware(String module_name, NutsProcessor processor){ 126 setSpringAware(module_name, processor, processor.getClassLoader()); 127 } 128 140 public static void setSpringAware(String module_name, NutsProcessor processor, 141 String nuts_resource){ 142 setSpringAware(module_name, processor, processor.getClassLoader(), nuts_resource); 143 } 144 private static DefaultLifecycleManager.DefaultLifecycle newBeanLifecycle( 145 DefaultLifecycleManager man){ 146 return man.newLifecycle().disposer(new Procedure(){ 147 public void invoke(Object self, Object [] args) throws Throwable { 148 ((DisposableBean)self).destroy(); 149 } 150 }); 151 } 152 } 153 | Popular Tags |