NamingUtilites.java
package org.itracker.util;
import org.apache.log4j.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import java.util.Hashtable;
/**
* Utilities class for naming
*
* @author ranks@rosa.com
*/
public class NamingUtilites {
private static final Logger log = Logger.getLogger(NamingUtilites.class
.getName());
/**
* Read a String value of any type of object
*
* @param ctx -
* Context for lookup
* @param lookupName -
* lookup name
* @param defaultValue -
* default value
*/
public static final String getStringValue(Context ctx, String lookupName,
String defaultValue) {
String value = null;
Object val;
if (log.isDebugEnabled()) {
log.debug("getStringValue: look up " + lookupName + " in context "
+ ctx + ", default: " + defaultValue);
}
if (null == ctx) {
log.debug("getStringValue: creating new InitialContext");
try {
ctx = new InitialContext();
if (log.isDebugEnabled()) {
log.debug("created new InitialContext: " + ctx);
}
} catch (NamingException e) {
log.warn("getStringValue: failed to create InitialContext", e);
if (log.isDebugEnabled())
log.debug("getStringValue: context was null, exception from new initial context caught", e);
}
}
if (null != ctx) {
val = lookup(ctx, lookupName);
if (val instanceof String) {
value = (String) val;
} else {
value = (null == val) ? null : String.valueOf(val);
}
}
value = (null == value) ? defaultValue : value;
if (log.isDebugEnabled()) {
log.debug("getStringValue: returning '" + value + "' for " + lookupName);
}
return value;
}
/**
* savely get object from naming context
*
* @return Object - value
* @throws IllegalArgumentException -
* if any argument is null, or the lookup name was empty
*/
public static Object lookup(Context ctx, String lookupName) {
if (null == ctx) {
throw new IllegalArgumentException("context must not be null");
}
if (null == lookupName || lookupName.trim().length() == 0) {
throw new IllegalArgumentException(
"lookup name must not be empty, got: "
+ ((null == lookupName) ? "<null>" : "'"
+ lookupName + "'"));
}
try {
return ctx.lookup(lookupName);
} catch (NamingException e) {
if (e instanceof NameNotFoundException) {
if (log.isDebugEnabled()) {
log.debug("lookup: failed to lookup " + lookupName
+ ": name not found");
}
} else {
log.warn("lookup: failed to lookup " + lookupName
+ " in context " + ctx, e);
}
return null;
}
}
/**
* get a default initial context
*
* @return initial context.
* @throws IllegalStateException - if initial context was null
*/
public static final Context getDefaultInitialContext(Hashtable<?, ?> environment) throws NamingException {
return new InitialContext(environment);
}
/**
* get a default initial context
*
* @return initial context.
* @throws IllegalStateException - if initial context was null
*/
public static final Context getDefaultInitialContext() throws NamingException {
return new InitialContext();
}
}