1 17 18 19 package org.apache.naming.factory; 20 21 import java.util.Hashtable ; 22 import javax.naming.Name ; 23 import javax.naming.Context ; 24 import javax.naming.NamingException ; 25 import javax.naming.Reference ; 26 import javax.naming.RefAddr ; 27 import javax.naming.spi.ObjectFactory ; 28 import org.apache.naming.ResourceEnvRef; 29 30 36 37 public class ResourceEnvFactory 38 implements ObjectFactory { 39 40 41 43 44 46 47 49 50 52 53 55 56 61 public Object getObjectInstance(Object obj, Name name, Context nameCtx, 62 Hashtable environment) 63 throws Exception { 64 65 if (obj instanceof ResourceEnvRef) { 66 Reference ref = (Reference ) obj; 67 ObjectFactory factory = null; 68 RefAddr factoryRefAddr = ref.get(Constants.FACTORY); 69 if (factoryRefAddr != null) { 70 String factoryClassName = 72 factoryRefAddr.getContent().toString(); 73 ClassLoader tcl = 75 Thread.currentThread().getContextClassLoader(); 76 Class factoryClass = null; 77 if (tcl != null) { 78 try { 79 factoryClass = tcl.loadClass(factoryClassName); 80 } catch(ClassNotFoundException e) { 81 NamingException ex = new NamingException 82 ("Could not load resource factory class"); 83 ex.initCause(e); 84 throw ex; 85 } 86 } else { 87 try { 88 factoryClass = Class.forName(factoryClassName); 89 } catch(ClassNotFoundException e) { 90 NamingException ex = new NamingException 91 ("Could not load resource factory class"); 92 ex.initCause(e); 93 throw ex; 94 } 95 } 96 if (factoryClass != null) { 97 try { 98 factory = (ObjectFactory ) factoryClass.newInstance(); 99 } catch(Throwable t) { 100 if (t instanceof NamingException ) 101 throw (NamingException ) t; 102 NamingException ex = new NamingException 103 ("Could not create resource factory instance"); 104 ex.initCause(t); 105 throw ex; 106 } 107 } 108 } 109 if (factory != null) { 111 return factory.getObjectInstance 112 (obj, name, nameCtx, environment); 113 } else { 114 throw new NamingException 115 ("Cannot create resource instance"); 116 } 117 } 118 119 return null; 120 121 } 122 123 124 } 125 126 | Popular Tags |