log.debug(JBossMetaData.class.getSimpleName() + " " + md + " has defined "
+ DefaultJndiBindingPolicy.class.getSimpleName() + " \"" + mdJndiPolicyName + "\"");
}
// For each of the Enterprise Beans
JBossEnterpriseBeansMetaData beans = md.getEnterpriseBeans();
for (JBossEnterpriseBeanMetaData bean : beans)
{
// Initialize a decorated instance
JBossEnterpriseBeanMetaData decoratedBean = null;
// Obtain a Policy
DefaultJndiBindingPolicy policy = getJndiBindingPolicy(bean, mdJndiPolicyName, cl);
// If this is a Session or Service Bean
if (bean.isSession() || bean.isService())
{
// Cast
assert bean instanceof JBossSessionBeanMetaData : JBossEnterpriseBeanMetaData.class.getSimpleName()
+ " representing as Session Bean is not castable to " + JBossSessionBeanMetaData.class.getName();
JBossSessionBeanMetaData sessionBean = (JBossSessionBeanMetaData) bean;
// Create a Session JNDI Policy Decorated Bean
decoratedBean = new JBossSessionPolicyDecorator(sessionBean, policy);
}
// If this is an Entity Bean
if (bean.isEntity())
{
// Cast
assert bean instanceof JBossEntityBeanMetaData : JBossEnterpriseBeanMetaData.class.getSimpleName()
+ " representing as Entity Bean is not castable to " + JBossEntityBeanMetaData.class.getName();
JBossEntityBeanMetaData entityBean = (JBossEntityBeanMetaData) bean;
// Create a Entity JNDI Policy Decorated Bean
decoratedBean = new JbossEntityPolicyDecorator(entityBean, policy);
}
// If we've decorated this bean, add to the map of beans to replace
if (decoratedBean != null)
{
beansToReplace.put(bean, decoratedBean);
}
}
// Replace with decorated beans
for (JBossEnterpriseBeanMetaData beanToReplace : beansToReplace.keySet())
{
JBossEnterpriseBeanMetaData beanToReplaceWith = beansToReplace.get(beanToReplace);
boolean removed = beans.remove(beanToReplace);
assert removed : "Remove operation of " + beanToReplace + " from " + beans + " resulted in no action";
beans.add(beanToReplaceWith);
log.debug("Replaced " + beanToReplace.getEjbName() + " with decorated instance fit with "
+ DefaultJndiBindingPolicy.class.getSimpleName());
}
}