1 29 30 package com.caucho.config; 31 32 import com.caucho.el.EnvironmentLevelELResolver; 33 import com.caucho.loader.Environment; 34 import com.caucho.loader.EnvironmentBean; 35 import com.caucho.vfs.Dependency; 36 import com.caucho.xml.QName; 37 38 import org.w3c.dom.Node ; 39 40 import java.util.ArrayList ; 41 42 public class EnvironmentTypeStrategy extends BeanTypeStrategy { 43 EnvironmentTypeStrategy(Class type) 44 { 45 super(type); 46 } 47 48 public void configureBean(NodeBuilder builder, Object bean, Node node) 49 throws Exception 50 { 51 Thread thread = Thread.currentThread(); 52 ClassLoader oldLoader = thread.getContextClassLoader(); 53 54 try { 55 EnvironmentBean envBean = (EnvironmentBean) bean; 56 ClassLoader loader = envBean.getClassLoader(); 57 58 thread.setContextClassLoader(loader); 59 60 builder.getELContext().push(EnvironmentLevelELResolver.create(loader)); 61 63 addDependencies(builder, node); 64 65 super.configureBean(builder, bean, node); 66 } finally { 67 builder.getELContext().pop(); 68 69 thread.setContextClassLoader(oldLoader); 70 } 71 } 72 73 public void configureAttribute(NodeBuilder builder, Object bean, Node attr) 74 throws Exception 75 { 76 Thread thread = Thread.currentThread(); 77 ClassLoader oldLoader = thread.getContextClassLoader(); 78 79 try { 80 EnvironmentBean envBean = (EnvironmentBean) bean; 81 thread.setContextClassLoader(envBean.getClassLoader()); 82 84 addDependencies(builder, attr); 85 86 super.configureAttribute(builder, bean, attr); 87 } finally { 88 thread.setContextClassLoader(oldLoader); 89 } 90 } 91 92 98 private void addDependencies(NodeBuilder builder, Node node) 99 { 100 ArrayList <Dependency> dependencyList = builder.getDependencyList(node); 101 102 if (dependencyList != null) { 103 for (Dependency dependency : dependencyList) { 104 Environment.addDependency(dependency); 105 } 106 } 107 } 108 109 112 public AttributeStrategy getEnvironmentAttribute(QName name) 113 throws Exception 114 { 115 return TypeStrategyFactory.getEnvironmentAttribute(getType(), name); 116 } 117 } 118 | Popular Tags |