}
};
}
else
{
final Weld weld = new ModularWeld(scanResult);
WeldContainer container;
container = weld.initialize();
final BeanManager manager = container.getBeanManager();
Assert.notNull(manager, "BeanManager was null");
AddonRepositoryProducer repositoryProducer = BeanManagerUtils.getContextualInstance(manager,
AddonRepositoryProducer.class);
repositoryProducer.setRepository(addon.getRepository());
ForgeProducer forgeProducer = BeanManagerUtils.getContextualInstance(manager, ForgeProducer.class);
forgeProducer.setForge(forge);
AddonProducer addonProducer = BeanManagerUtils.getContextualInstance(manager, AddonProducer.class);
addonProducer.setAddon(addon);
AddonRegistryProducer addonRegistryProducer = BeanManagerUtils.getContextualInstance(manager,
AddonRegistryProducer.class);
addonRegistryProducer.setRegistry(forge.getAddonRegistry());
ContainerServiceExtension extension = BeanManagerUtils.getContextualInstance(manager,
ContainerServiceExtension.class);
ServiceRegistryProducer serviceRegistryProducer = BeanManagerUtils.getContextualInstance(manager,
ServiceRegistryProducer.class);
serviceRegistryProducer.setServiceRegistry(new ServiceRegistryImpl(forge.getLockManager(), addon,
manager, extension));
ServiceRegistry registry = BeanManagerUtils.getContextualInstance(manager, ServiceRegistry.class);
Assert.notNull(registry, "Service registry was null.");
addon.setServiceRegistry(registry);
logger.info("Services loaded from addon [" + addon.getId() + "] - " + registry.getServices());
shutdownCallback = new Callable<Object>()
{
@Override
public Object call() throws Exception
{
try
{
manager.fireEvent(new PreShutdown());
}
catch (Exception e)
{
logger.log(Level.SEVERE, "Failed to execute pre-Shutdown event.", e);
}
finally
{
addon.setStatus(AddonStatus.LOADED);
if (operation != null)
operation.cancel(true);
}
weld.shutdown();
return null;
}
};
postStartupTask = new Callable<Void>()