public void load(String id, Extension extension, ObjectNode config, ExtensionConfigurationManager extensionConfigManager) throws Exception { ServiceName configManagerName = Services.systemConfigurationManager(id); target.addService(configManagerName, new ValueService<>(new ImmediateValue<>(extensionConfigManager))).install(); target.addService(Services.systemEnvironmentProperties(id), new ValueService<>(new ImmediateValue<>(envProperties()))).install(); StabilityMonitor monitor = new StabilityMonitor(); ServiceTarget target = this.target.subTarget(); target.addMonitor(monitor); ExtensionService extensionService = new ExtensionService(id, extension, config, extensionConfigManager); ServiceBuilder builder = target.addService(Services.extension(id), extensionService); JsonNode deps = config.get("dependencies"); if (deps != null) { for (JsonNode node : deps) { builder.addDependency(Services.extension(node.asText())); } } builder.install(); monitor.awaitStability(); }
ServiceTarget target = context.getChildTarget(); ServiceName name = Services.extension(this.id);
public InternalApplicationExtension extend(String extensionId, String resourceId, ObjectNode configuration, boolean boottime) throws Exception { ServiceTarget target = this.target.subTarget(); StabilityMonitor monitor = new StabilityMonitor(); target.addMonitor(monitor); ServiceName resourceServiceName = Services.applicationExtension(this.id, resourceId); ApplicationExtensionService appExt = new ApplicationExtensionService(extensionId, resourceId, configuration, boottime); ServiceController<InternalApplicationExtension> controller = target.addService(resourceServiceName, appExt) .addDependency(Services.extension(extensionId), Extension.class, appExt.extensionInjector()) .addDependency(Services.application(this.id), InternalApplication.class, appExt.applicationInjector()) .addDependency(Services.SERVICE_REGISTRY, ServiceRegistry.class, appExt.serviceRegistryInjector()) .install(); monitor.awaitStability(); InternalApplicationExtension intAppExt = controller.awaitValue(); if (intAppExt.exception() != null) { intAppExt.remove(); log.error(intAppExt.exception()); throw intAppExt.exception(); } target.removeMonitor(monitor); return intAppExt; }
.addDependency(Services.extension(this.extensionId), Extension.class, removal.extensionInjector()) .install();
if (!this.app.versioned() && null != context.getController().getServiceContainer().getService(Services.extension("git"))) { GitResourceInstallService gitInstaller = new GitResourceInstallService(); target.addService(Services.application(this.app.id()).append("git-install"), gitInstaller)