public void mountInstance(ServiceName privateName) { MountService<RootResource> mount = new MountService(this.id()); SystemResourceWrappingResourceService wrapper = new SystemResourceWrappingResourceService(); target.addService(privateName.append("wrapper"), wrapper) .addDependency(privateName, RootResource.class, wrapper.resourceInjector) .addDependency(Services.systemConfigurationManager(moduleId), ExtensionConfigurationManager.class, wrapper.managerInjector) .addDependency(Services.systemEnvironmentProperties(moduleId), Properties.class, wrapper.environmentPropertiesInjector) .addDependency(Services.CLIENT, Client.class, wrapper.clientInjector) .install(); InitializeResourceService configApply = new InitializeResourceService(); target.addService(privateName.append("apply-config"), configApply) .addDependency(privateName.append("wrapper"), RootResource.class, configApply.resourceInjector()) .addInjection(configApply.configurationInjector(), this.configuration) .install(); RootResourceLifecycleService lifecycle = new RootResourceLifecycleService(); target.addService(privateName.append("lifecycle"), lifecycle) .addDependency(privateName.append("apply-config")) .addDependency(privateName, RootResource.class, lifecycle.resourceInjector()) .install(); ServiceController<? extends Resource> controller = this.target.addService(privateName.append("mount"), mount) .addDependency(privateName.append("lifecycle")) .addDependency(this.systemExtensionMount, MountPointResource.class, mount.mountPointInjector()) .addDependency(privateName.append("wrapper"), RootResource.class, mount.resourceInjector()) .install(); moduleResourceRegistry.addServiceController(id, controller); }
@Override public void mountPrivate(ServiceName privateName) { StabilityMonitor monitor = new StabilityMonitor(); target.addMonitor(monitor); MountService<RootResource> mount = new MountService(this.id); SystemResourceWrappingResourceService wrapper = new SystemResourceWrappingResourceService(); target.addService(privateName.append("wrapper"), wrapper) .addDependency(privateName, RootResource.class, wrapper.resourceInjector) .addDependency(Services.systemConfigurationManager(moduleId), ExtensionConfigurationManager.class, wrapper.managerInjector) .addDependency(Services.systemEnvironmentProperties(moduleId), Properties.class, wrapper.environmentPropertiesInjector) .addDependency(Services.CLIENT, Client.class, wrapper.clientInjector) .install(); InitializeResourceService configApply = new InitializeResourceService(); target.addService(privateName.append("apply-config"), configApply) .addDependency(privateName.append("wrapper"), RootResource.class, configApply.resourceInjector()) .addInjection(configApply.configurationInjector(), this.configuration) .install(); RootResourceLifecycleService lifecycle = new RootResourceLifecycleService(); target.addService(privateName.append("lifecycle"), lifecycle) .addDependency(privateName.append("apply-config")) .addDependency(privateName, RootResource.class, lifecycle.resourceInjector()) .install(); ServiceController<? extends Resource> controller = this.target.addService(privateName.append("mount"), mount) .addDependency(privateName.append("lifecycle")) .addDependency(this.systemExtensionMount, MountPointResource.class, mount.mountPointInjector()) .addDependency(privateName.append("wrapper"), RootResource.class, mount.resourceInjector()) .install(); }
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(); }