1 package org.sapia.soto.config; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 import java.util.Properties ; 6 7 import javax.naming.InitialContext ; 8 import javax.naming.NamingException ; 9 10 import org.sapia.soto.util.Param; 11 import org.sapia.util.xml.confix.ConfigurationException; 12 import org.sapia.util.xml.confix.ObjectCreationCallback; 13 14 23 public class JndiRef implements ObjectCreationCallback{ 24 25 private String _jndiName; 26 private List _params = new ArrayList (); 27 28 public void setName(String name){ 29 _jndiName = name; 30 } 31 32 public Param createProperty(){ 33 Param p = new Param(); 34 _params.add(p); 35 return p; 36 } 37 38 41 public Object onCreate() throws ConfigurationException { 42 if(_jndiName == null){ 43 throw new ConfigurationException("Jndi name not specified"); 44 } 45 try{ 46 if(_params.size() == 0){ 47 InitialContext ctx = new InitialContext (); 48 try{ 49 return ctx.lookup(_jndiName); 50 }finally{ 51 ctx.close(); 52 } 53 } 54 else{ 55 Properties props = new Properties (); 56 Param p; 57 for(int i = 0; i < _params.size(); i++){ 58 p = (Param)_params.get(i); 59 props.setProperty(p.getName(), p.getValue().toString()); 60 } 61 InitialContext ctx = new InitialContext (props); 62 try{ 63 return ctx.lookup(_jndiName); 64 }finally{ 65 ctx.close(); 66 } 67 } 68 }catch(NamingException e){ 69 throw new ConfigurationException("Could not lookup: " + _jndiName, e); 70 } 71 } 72 73 } 74 | Popular Tags |