in extscript-core-root/extscript-myfaces/src/main/java/org/apache/myfaces/extensions/scripting/jsf/annotation/MyFacesBeanImplementationListener.java [211:251]
public void purge(String className) {
RuntimeConfig config = getRuntimeConfig();
//We have to purge and readd our managed beans, unfortunatly the myfaces impl enforces
//us to do the same for the nav rules after purge
//we cannot purge the managed beans and nav rules separately
Collection<NavigationRule> navigationRules = new ArrayList<NavigationRule>();
Map managedBeans = new HashMap<String, org.apache.myfaces.config.element.ManagedBean>();
navigationRules.addAll(config.getNavigationRules());
managedBeans.putAll(config.getManagedBeans());
config.purge();
for (NavigationRule navRule : navigationRules) {
config.addNavigationRule(navRule);
}
//We refresh the managed beans, dead references still can cause
//runtime errors but in this case we cannot do anything
org.apache.myfaces.config.element.ManagedBean mbeanFound = null;
List<String> mbeanKey = new LinkedList<String>();
for (Object entry : managedBeans.entrySet()) {
Map.Entry mbean = (Map.Entry) entry;
Object bean = mbean.getValue();
if (!((Class)ReflectUtil.executeMethod( bean, "getManagedBeanClass")).getName().equals(className)) {
config.addManagedBean((String) mbean.getKey(), (org.apache.myfaces.config.element.ManagedBean) mbean.getValue());
} else {
Object mbeanf = mbean.getValue();
mbeanKey.add((String)ReflectUtil.executeMethod(mbeanf, "getManagedBeanName"));
}
}
if (mbeanFound != null) {
for (String toRemove : mbeanKey) {
_alreadyRegistered.remove(toRemove);
}
}
}