1 16 17 package org.apache.naming.ant; 18 19 import javax.naming.InitialContext ; 20 21 import org.apache.tools.ant.PropertyHelper; 22 import org.apache.tools.ant.Task; 23 24 25 32 public class JndiProperties extends Task { 33 public static String PREFIX="jndi:"; 34 private static org.apache.commons.logging.Log log= 35 org.apache.commons.logging.LogFactory.getLog( JndiProperties.class ); 36 private JndiHelper helper=new JndiHelper(); 37 38 public JndiProperties() { 39 initNaming(); 40 } 41 42 static boolean initialized=false; 43 static void initNaming() { 44 if( initialized ) return; 45 initialized=true; 46 Thread.currentThread().setContextClassLoader( JndiProperties.class.getClassLoader() ); 47 } 49 50 class JndiHelper extends PropertyHelper { 51 public boolean setPropertyHook( String ns, String name, Object v, boolean inh, 52 boolean user, boolean isNew) 53 { 54 if( ! name.startsWith(PREFIX) ) { 55 return super.setPropertyHook(ns, name, v, inh, user, isNew); 57 } 58 name=name.substring( PREFIX.length() ); 59 60 62 return true; 63 } 64 65 public Object getPropertyHook( String ns, String name , boolean user) { 66 if( ! name.startsWith(PREFIX) ) { 67 return super.getPropertyHook(ns, name, user); 69 } 70 71 Object o=null; 72 name=name.substring( PREFIX.length() ); 73 try { 74 InitialContext ic=new InitialContext (); 75 o=ic.lookup( name ); 77 if( log.isDebugEnabled() ) log.debug( "getProperty jndi: " + name + " " + o); 78 } catch( Exception ex ) { 79 log.error("getProperty " + name , ex); 80 o=null; 81 } 82 return o; 83 } 84 85 } 86 87 88 public void execute() { 89 PropertyHelper phelper=PropertyHelper.getPropertyHelper( project ); 90 helper.setProject( project ); 91 helper.setNext( phelper.getNext() ); 92 phelper.setNext( helper ); 93 94 project.addReference( "jndiProperties", this ); 95 } 96 97 } 98 | Popular Tags |