public void uninstallAction(KernelControllerContext context)
{
KernelController controller = (KernelController) context.getController();
Kernel kernel = controller.getKernel();
KernelRegistry registry = kernel.getRegistry();
BeanMetaData metaData = context.getBeanMetaData();
Object name = metaData.getName();
List uninstalls = metaData.getUninstalls();
if (uninstalls != null)
{
for (int i = uninstalls.size()-1; i >= 0; --i)
{
InstallMetaData uninstall = (InstallMetaData) uninstalls.get(i);
KernelControllerContext target = context;
if (uninstall.getBean() != null)
{
target = (KernelControllerContext) controller.getContext(uninstall.getBean(), uninstall.getDependentState());
if (target == null)
{
log.warn("Ignoring uninstall action on target in incorrect state " + uninstall.getBean());
continue;
}
}
try
{
dispatch(target, uninstall.getMethodName(), uninstall.getParameters());
}
catch (Throwable t)
{
log.warn("Ignoring uninstall action on target " + uninstall, t);
continue;
}
}
}
try
{
controller.removeSupplies(context);
registry.unregisterEntry(name);
}
catch (Throwable t)
{
log.warn("Ignoring unregistered entry at uninstall " + name);
}