if (!dependency.isOptional()) { throw UndertowLogger.ROOT_LOGGER.errorLoadingSCIFromModule(dependency.getIdentifier().toString(), e);
private static void installService(final ServiceTarget serviceTarget, final ModuleIdentifier moduleIdentifier, int phaseNumber, final Set<ModuleDependency> nextPhaseIdentifiers, final Set<ModuleIdentifier> nextAlreadySeen) { final ModuleResolvePhaseService nextPhaseService = new ModuleResolvePhaseService(moduleIdentifier, nextAlreadySeen, phaseNumber); ServiceBuilder<ModuleResolvePhaseService> builder = serviceTarget.addService(moduleSpecServiceName(moduleIdentifier, phaseNumber), nextPhaseService); for (ModuleDependency module : nextPhaseIdentifiers) { builder.addDependency(module.isOptional() ? OPTIONAL : REQUIRED, ServiceModuleLoader.moduleSpecServiceName(module.getIdentifier()), ModuleDefinition.class, new Injector<ModuleDefinition>() { ModuleDefinition definition; @Override public synchronized void inject(final ModuleDefinition o) throws InjectionException { nextPhaseService.getModuleSpecs().add(o); this.definition = o; } @Override public synchronized void uninject() { nextPhaseService.getModuleSpecs().remove(definition); this.definition = null; } }); } builder.install(); }
public static ServiceName install(final ServiceTarget target, final ModuleIdentifier identifier, final List<ModuleDependency> dependencies) { final ModuleLoadService service = new ModuleLoadService(dependencies); final ServiceName serviceName = ServiceModuleLoader.moduleServiceName(identifier); final ServiceBuilder<Module> builder = target.addService(serviceName, service); builder.addDependency(Services.JBOSS_SERVICE_MODULE_LOADER, ServiceModuleLoader.class, service.getServiceModuleLoader()); builder.addDependency(ServiceModuleLoader.moduleSpecServiceName(identifier), ModuleDefinition.class, service.getModuleDefinitionInjectedValue()); builder.addDependency(ServiceModuleLoader.moduleResolvedServiceName(identifier)); //don't attempt to load until all dependent module specs are up, even transitive ones for (ModuleDependency dependency : dependencies) { final ModuleIdentifier moduleIdentifier = dependency.getIdentifier(); if (moduleIdentifier.getName().startsWith(ServiceModuleLoader.MODULE_PREFIX)) { builder.addDependency(dependency.isOptional() ? OPTIONAL : REQUIRED, ServiceModuleLoader.moduleSpecServiceName(moduleIdentifier)); } } builder.setInitialMode(Mode.ON_DEMAND); builder.install(); return serviceName; }
public static ServiceName install(final ServiceTarget target, final ModuleIdentifier identifier, final List<ModuleDependency> dependencies) { final ModuleLoadService service = new ModuleLoadService(dependencies); final ServiceName serviceName = ServiceModuleLoader.moduleServiceName(identifier); final ServiceBuilder<Module> builder = target.addService(serviceName, service); builder.addDependency(Services.JBOSS_SERVICE_MODULE_LOADER, ServiceModuleLoader.class, service.getServiceModuleLoader()); builder.addDependency(ServiceModuleLoader.moduleSpecServiceName(identifier), ModuleSpec.class, service.getModuleSpec()); for (ModuleDependency dependency : dependencies) { final ModuleIdentifier moduleIdentifier = dependency.getIdentifier(); if (moduleIdentifier.getName().startsWith(ServiceModuleLoader.MODULE_PREFIX)) { builder.addDependency(dependency.isOptional() ? OPTIONAL : REQUIRED, ServiceModuleLoader.moduleSpecServiceName(moduleIdentifier)); } } builder.setInitialMode(Mode.ON_DEMAND); builder.install(); return serviceName; }
@Override public void start(final StartContext startContext) throws StartException { Set<ModuleDependency> nextPhaseIdentifiers = new HashSet<>(); final Set<ModuleIdentifier> nextAlreadySeen = new HashSet<>(alreadyResolvedModules); for (final ModuleDefinition spec : moduleSpecs) { if (spec != null) { //this can happen for optional dependencies for (ModuleDependency dep : spec.getDependencies()) { if (dep.isOptional()) continue; // we don't care about optional dependencies if (ServiceModuleLoader.isDynamicModule(dep.getIdentifier())) { if (!alreadyResolvedModules.contains(dep.getIdentifier())) { nextAlreadySeen.add(dep.getIdentifier()); nextPhaseIdentifiers.add(dep); } } } } } if (nextPhaseIdentifiers.isEmpty()) { ServiceModuleLoader.installModuleResolvedService(startContext.getChildTarget(), moduleIdentifier); } else { installService(startContext.getChildTarget(), moduleIdentifier, phaseNumber + 1, nextPhaseIdentifiers, nextAlreadySeen); } }
@Override public void start(final StartContext startContext) throws StartException { Set<ModuleDependency> nextPhaseIdentifiers = new HashSet<>(); final Set<ModuleIdentifier> nextAlreadySeen = new HashSet<>(alreadyResolvedModules); for (final ModuleDefinition spec : moduleSpecs) { if (spec != null) { //this can happen for optional dependencies for (ModuleDependency dep : spec.getDependencies()) { if (dep.isOptional()) continue; // we don't care about optional dependencies if (ServiceModuleLoader.isDynamicModule(dep.getIdentifier())) { if (!alreadyResolvedModules.contains(dep.getIdentifier())) { nextAlreadySeen.add(dep.getIdentifier()); nextPhaseIdentifiers.add(dep); } } } } } if (nextPhaseIdentifiers.isEmpty()) { ServiceModuleLoader.installModuleResolvedService(startContext.getChildTarget(), moduleIdentifier); } else { installService(startContext.getChildTarget(), moduleIdentifier, phaseNumber + 1, nextPhaseIdentifiers, nextAlreadySeen); } }
if (!dependency.isOptional()) { throw UndertowLogger.ROOT_LOGGER.errorLoadingSCIFromModule(dependency.getIdentifier().toString(), e);
if (!dependency.isOptional()) { throw UndertowLogger.ROOT_LOGGER.errorLoadingSCIFromModule(dependency.getIdentifier().toString(), e);
boolean optional = moduleDep.isOptional(); DependencySpec depSpec = DependencySpec.createModuleDependencySpec(importFilter, exportFilter, moduleLoader, moduleId, optional); LOGGER.debugf(" +%s", depSpec);
boolean optional = moduleDep.isOptional(); DependencySpec depSpec = DependencySpec.createModuleDependencySpec(importFilter, exportFilter, moduleLoader, moduleId, optional); LOGGER.debugf(" +%s", depSpec);
.getModuleLoader(), dependency.getIdentifier(), dependency.isOptional()); specBuilder.addDependency(depSpec); logger.debug("Adding dependency " + dependency + " to module " + specBuilder.getIdentifier());
.getModuleLoader(), dependency.getIdentifier(), dependency.isOptional()); specBuilder.addDependency(depSpec); logger.debug("Adding dependency " + dependency + " to module " + specBuilder.getIdentifier());
.getModuleLoader(), dependency.getIdentifier(), dependency.isOptional()); specBuilder.addDependency(depSpec); logger.debugf("Adding dependency %s to module %s", dependency, specBuilder.getIdentifier());
.getModuleLoader(), dependency.getIdentifier(), dependency.isOptional()); specBuilder.addDependency(depSpec); logger.debugf("Adding dependency %s to module %s", dependency, specBuilder.getIdentifier());