com.jn.langx.jndi.template.JndiObjectFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of langx-java Show documentation
Show all versions of langx-java Show documentation
Java lang extensions for java6+, a supplement to , replacement of a Guava, commons-lang.
Core utilities, Collection utilities, IO utilities, Cache, Configuration library ...
package com.jn.langx.jndi.template;
import com.jn.langx.util.function.Supplier0;
import javax.naming.NamingException;
/**
* A factory implementation intended to be used to look up objects in jndi.
*
* @since 2.10.0
*/
public class JndiObjectFactory extends JndiLocator implements Supplier0 {
private String resourceName;
private Class requiredType;
public T get() {
try {
if(requiredType != null) {
return requiredType.cast(this.lookup(resourceName, requiredType));
} else {
return (T) this.lookup(resourceName);
}
} catch (NamingException e) {
final String typeName = requiredType != null ? requiredType.getName() : "object";
throw new IllegalStateException("Unable to look up " + typeName + " with jndi name '" + resourceName + "'.", e);
}
}
public String getResourceName() {
return resourceName;
}
public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}
public Class getRequiredType() {
return requiredType;
}
public void setRequiredType(Class requiredType) {
this.requiredType = requiredType;
}
}