1 package org.naftulin.configmgr.parsers; 2 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Properties; 6 7 import javax.naming.Context; 8 import javax.naming.InitialContext; 9 import javax.naming.NamingException; 10 11 import org.apache.log4j.Logger; 12 import org.naftulin.configmgr.ConfigurationManagerException; 13 import org.naftulin.configmgr.content.NameValuePairImpl; 14 15 public class AbstractJndiParser { 16 17 protected static final Logger log = Logger.getLogger(JndiParserImpl.class); 18 protected final String jndiName; 19 protected final String initialContextFactory; 20 protected final List<NameValuePairImpl> nameValuePairs; 21 22 public AbstractJndiParser(final String jndiName, final String initialContextFactory, 23 final List<NameValuePairImpl> nameValuePairs) { 24 super(); 25 this.jndiName = jndiName; 26 this.initialContextFactory = initialContextFactory; 27 this.nameValuePairs = nameValuePairs; 28 } 29 30 protected InitialContext getJndiContext(final String key, final Properties props, InitialContext context) 31 throws ConfigurationManagerException { 32 try { 33 context = new InitialContext(props); 34 } catch (NamingException e) { 35 log.error("Could not find jndi context with initial context for jndi name: " + jndiName + " and other parameters from configuration " + key, e); 36 throw new ConfigurationManagerException("Could not find jndi context with initial context for jndi name: " + jndiName + " and other parameters from configuration " + key, e); 37 } 38 return context; 39 } 40 41 protected void prepareJndiProperties(final Properties props) { 42 if (initialContextFactory != null) { props.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory); } 43 if (nameValuePairs != null) { 44 final Iterator<NameValuePairImpl> it = nameValuePairs.iterator(); 45 while(it.hasNext()) { 46 NameValuePairImpl nvp = it.next(); 47 props.put(nvp.getName(), nvp.getValue()); 48 } 49 } 50 } 51 52 protected void validateParameters(final String key) 53 throws ConfigurationManagerException { 54 if (key == null) { 55 throw new ConfigurationManagerException("key is null, please provide the key in you master configuraton file for all the jndi cofigurations"); 56 } 57 if (jndiName == null) { 58 throw new ConfigurationManagerException("jndiName is null, please provide jndi Name in you master configuraton file for external cofiguraton with key =" + key); 59 } 60 } 61 62 }