ServiceControllerImpl(final ServiceContainerImpl container, final ServiceName serviceId, final ServiceName[] serviceAliases, final org.jboss.msc.Service service, final Set<Dependency> requires, final Map<ServiceRegistrationImpl, WritableValueImpl> provides, final ValueInjection<?>[] injections, final ValueInjection<?>[] outInjections, final Set<StabilityMonitor> monitors, final Set<? extends ServiceListener<? super S>> listeners, final Set<LifecycleListener> lifecycleListeners, final ServiceControllerImpl<?> parent) { assert requires.size() <= MAX_DEPENDENCIES; this.container = container; this.serviceId = serviceId; this.serviceAliases = serviceAliases; this.service = service; this.injections = injections; this.outInjections = outInjections; this.requires = requires; this.provides = provides; this.listeners = new IdentityHashSet<>(listeners); this.lifecycleListeners = new IdentityHashSet<>(lifecycleListeners); this.monitors = new IdentityHashSet<>(monitors); // We also need to register this controller with monitors explicitly. // This allows inherited monitors to have registered all child controllers // and later to remove them when inherited stability monitor is cleared. for (final StabilityMonitor monitor : monitors) { monitor.addControllerNoCallback(this); } this.parent = parent; int depCount = requires.size(); stoppingDependencies = parent == null ? depCount : depCount + 1; children = new IdentityHashSet<>(); }
ServiceControllerImpl(final ServiceContainerImpl container, final ServiceName serviceId, final ServiceName[] serviceAliases, final org.jboss.msc.Service service, final Set<Dependency> requires, final Map<ServiceRegistrationImpl, WritableValueImpl> provides, final ValueInjection<?>[] injections, final ValueInjection<?>[] outInjections, final Set<StabilityMonitor> monitors, final Set<? extends ServiceListener<? super S>> listeners, final Set<LifecycleListener> lifecycleListeners, final ServiceControllerImpl<?> parent) { assert requires.size() <= MAX_DEPENDENCIES; this.container = container; this.serviceId = serviceId; this.serviceAliases = serviceAliases; this.service = service; this.injections = injections; this.outInjections = outInjections; this.requires = requires; this.provides = provides; this.listeners = new IdentityHashSet<>(listeners); this.lifecycleListeners = new IdentityHashSet<>(lifecycleListeners); this.monitors = new IdentityHashSet<>(monitors); // We also need to register this controller with monitors explicitly. // This allows inherited monitors to have registered all child controllers // and later to remove them when inherited stability monitor is cleared. for (final StabilityMonitor monitor : monitors) { monitor.addControllerNoCallback(this); } this.parent = parent; int depCount = requires.size(); stoppingDependencies = parent == null ? depCount : depCount + 1; children = new IdentityHashSet<>(); }