in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java [125:187]
public static <T> T lookup(String name, Class<? extends T> expectedClass)
{
try
{
Object lookedUp = initialContext.lookup(name);
if (lookedUp != null)
{
if (expectedClass.isAssignableFrom(lookedUp.getClass()))
{
// we have a value and the type fits
return (T) lookedUp;
}
else if (lookedUp instanceof String)
{
// lookedUp might be a class name
try
{
Class<?>lookedUpClass = Class.forName((String) lookedUp);
if (expectedClass.isAssignableFrom(lookedUpClass))
{
try
{
return (T) lookedUpClass.newInstance();
}
catch (Exception e)
{
// could not create instance
LOG.log(Level.SEVERE, "Class " + lookedUpClass + " from JNDI lookup for name "
+ name + " could not be instantiated", e);
}
}
else
{
// lookedUpClass does not extend/implement expectedClass
LOG.log(Level.SEVERE, "JNDI lookup for key " + name
+ " returned class " + lookedUpClass.getName()
+ " which does not implement/extend the expected class"
+ expectedClass.getName());
}
}
catch (ClassNotFoundException cnfe)
{
// could not find class
LOG.log(Level.SEVERE, "Could not find Class " + lookedUp
+ " from JNDI lookup for name " + name, cnfe);
}
}
else
{
// we have a value, but the value does not fit
LOG.log(Level.SEVERE, "JNDI lookup for key " + name + " should return a value of "
+ expectedClass + ", but returned " + lookedUp);
}
}
return null;
}
catch (NamingException e)
{
throw new UnhandledException("Could not get " + name + " from JNDI", e);
}
}