/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.util;
import java.util.Hashtable;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
public final class Naming
{
private static final LogProvider log = Logging.getLogProvider(Naming.class);
private static Hashtable initialContextProperties;
private static InitialContext initialContext;
public static InitialContext getInitialContext(Hashtable<String, String> props) throws NamingException
{
if (props==null)
{
throw new IllegalStateException("JNDI properties not initialized, Seam was not started correctly");
}
if (log.isDebugEnabled())
{
log.debug("JNDI InitialContext properties:" + props);
}
try {
return props.size()==0 ?
new InitialContext() :
new InitialContext(props);
}
catch (NamingException e) {
log.debug("Could not obtain initial context");
throw e;
}
}
public static InitialContext getInitialContext() throws NamingException
{
if (initialContext == null) initInitialContext();
return initialContext;
}
private static synchronized void initInitialContext() throws NamingException
{
if (initialContext == null)
{
initialContext = getInitialContext(initialContextProperties);
}
}
private Naming() {}
public static void setInitialContextProperties(Hashtable initialContextProperties)
{
Naming.initialContextProperties = initialContextProperties;
initialContext = null;
}
public static Hashtable getInitialContextProperties()
{
return initialContextProperties;
}
}