protected <R extends Service> void registerService(ServiceBinding<R> serviceBinding, R service) { serviceBinding.setService( service ); synchronized ( serviceBindingList ) { serviceBindingList.add( serviceBinding ); } }
this.autoCloseRegistry = autoCloseRegistry; this.classLoaderServiceBinding = new ServiceBinding<ClassLoaderService>( this, ClassLoaderService.class, ); this.strategySelectorBinding = new ServiceBinding<StrategySelector>( this, StrategySelector.class, ); this.integratorServiceBinding = new ServiceBinding<IntegratorService>( this, IntegratorService.class,
@Override public synchronized <R extends Service> void configureService(ServiceBinding<R> serviceBinding) { if ( Configurable.class.isInstance( serviceBinding.getService() ) ) { ( (Configurable) serviceBinding.getService() ).configure( configurationValues ); } }
@Override @SuppressWarnings({ "unchecked" }) public <R extends Service> void startService(ServiceBinding<R> serviceBinding) { if ( Startable.class.isInstance( serviceBinding.getService() ) ) { ( (Startable) serviceBinding.getService() ).start(); } if ( Manageable.class.isInstance( serviceBinding.getService() ) ) { getService( JmxService.class ).registerService( (Manageable) serviceBinding.getService(), serviceBinding.getServiceRole() ); } }
@SuppressWarnings( {"unchecked"}) protected <R extends Service> R createService(ServiceBinding<R> serviceBinding) { final ServiceInitiator<R> serviceInitiator = serviceBinding.getServiceInitiator(); if ( serviceInitiator == null ) { // this condition should never ever occur throw new UnknownServiceException( serviceBinding.getServiceRole() ); } try { R service = serviceBinding.getLifecycleOwner().initiateService( serviceInitiator ); // IMPL NOTE : the register call here is important to avoid potential stack overflow issues // from recursive calls through #configureService if ( service != null ) { registerService( serviceBinding, service ); } return service; } catch ( ServiceException e ) { throw e; } catch ( Exception e ) { throw new ServiceException( "Unable to create requested service [" + serviceBinding.getServiceRole().getName() + "]", e ); } }
private <R extends Service> R initializeService(ServiceBinding<R> serviceBinding) { if ( log.isTraceEnabled() ) { log.tracev( "Initializing service [role={0}]", serviceBinding.getServiceRole().getName() ); } // PHASE 1 : create service R service = createService( serviceBinding ); if ( service == null ) { return null; } // PHASE 2 : inject service (***potentially recursive***) serviceBinding.getLifecycleOwner().injectDependencies( serviceBinding ); // PHASE 3 : configure service serviceBinding.getLifecycleOwner().configureService( serviceBinding ); // PHASE 4 : Start service serviceBinding.getLifecycleOwner().startService( serviceBinding ); return service; }
private synchronized void destroy(ServiceBinding serviceBinding) { serviceBinding.getLifecycleOwner().stopService( serviceBinding ); }
@SuppressWarnings( {"unchecked"}) protected <R extends Service> R createService(ServiceBinding<R> serviceBinding) { final ServiceInitiator<R> serviceInitiator = serviceBinding.getServiceInitiator(); if ( serviceInitiator == null ) { // this condition should never ever occur throw new UnknownServiceException( serviceBinding.getServiceRole() ); } try { R service = serviceBinding.getLifecycleOwner().initiateService( serviceInitiator ); // IMPL NOTE : the register call here is important to avoid potential stack overflow issues // from recursive calls through #configureService registerService( serviceBinding, service ); return service; } catch ( ServiceException e ) { throw e; } catch ( Exception e ) { throw new ServiceException( "Unable to create requested service [" + serviceBinding.getServiceRole().getName() + "]", e ); } }
if ( serviceRole.isAssignableFrom( binding.getServiceRole() ) ) { log.alternateServiceRole( serviceRole.getName(), binding.getServiceRole().getName() ); registerAlternate( serviceRole, binding.getServiceRole() ); return binding; if ( binding.getService() != null && serviceRole.isInstance( binding.getService() ) ) { log.alternateServiceRole( serviceRole.getName(), binding.getServiceRole().getName() ); registerAlternate( serviceRole, binding.getServiceRole() ); return binding;
private <R extends Service> R initializeService(ServiceBinding<R> serviceBinding) { if ( log.isTraceEnabled() ) { log.tracev( "Initializing service [role={0}]", serviceBinding.getServiceRole().getName() ); } // PHASE 1 : create service R service = createService( serviceBinding ); if ( service == null ) { return null; } // PHASE 2 : inject service (***potentially recursive***) serviceBinding.getLifecycleOwner().injectDependencies( serviceBinding ); // PHASE 3 : configure service serviceBinding.getLifecycleOwner().configureService( serviceBinding ); // PHASE 4 : Start service serviceBinding.getLifecycleOwner().startService( serviceBinding ); return service; }
@Override @SuppressWarnings( {"unchecked"}) public synchronized void destroy() { if ( active.compareAndSet( true, false ) ) { try { //First thing, make sure that the fast path read is disabled so that //threads not owning the synchronization lock can't get an invalid Service: initializedServiceByRole.clear(); synchronized (serviceBindingList) { ListIterator<ServiceBinding> serviceBindingsIterator = serviceBindingList.listIterator( serviceBindingList.size() ); while ( serviceBindingsIterator.hasPrevious() ) { final ServiceBinding serviceBinding = serviceBindingsIterator.previous(); serviceBinding.getLifecycleOwner().stopService( serviceBinding ); } serviceBindingList.clear(); } serviceBindingMap.clear(); } finally { parent.deRegisterChild( this ); } } }
protected <R extends Service> void registerService(ServiceBinding<R> serviceBinding, R service) { serviceBinding.setService( service ); synchronized ( serviceBindingList ) { serviceBindingList.add( serviceBinding ); } }
@SuppressWarnings({ "unchecked" }) protected <R extends Service> void createServiceBinding(ServiceInitiator<R> initiator) { final ServiceBinding serviceBinding = new ServiceBinding( this, initiator ); serviceBindingMap.put( initiator.getServiceInitiated(), serviceBinding ); }
@Override public <R extends Service> R getService(Class<R> serviceRole) { final ServiceBinding<R> binding = locateServiceBinding( serviceRole ); return binding == null ? null : binding.getService(); }
@SuppressWarnings( {"unchecked"}) protected <R extends Service> R createService(ServiceBinding<R> serviceBinding) { final ServiceInitiator<R> serviceInitiator = serviceBinding.getServiceInitiator(); if ( serviceInitiator == null ) { // this condition should never ever occur throw new UnknownServiceException( serviceBinding.getServiceRole() ); } try { R service = serviceBinding.getLifecycleOwner().initiateService( serviceInitiator ); // IMPL NOTE : the register call here is important to avoid potential stack overflow issues // from recursive calls through #configureService registerService( serviceBinding, service ); return service; } catch ( ServiceException e ) { throw e; } catch ( Exception e ) { throw new ServiceException( "Unable to create requested service [" + serviceBinding.getServiceRole().getName() + "]", e ); } }
@Override @SuppressWarnings({ "unchecked" }) public <R extends Service> void startService(ServiceBinding<R> serviceBinding) { if ( Startable.class.isInstance( serviceBinding.getService() ) ) { ( (Startable) serviceBinding.getService() ).start(); } if ( Manageable.class.isInstance( serviceBinding.getService() ) ) { getService( JmxService.class ).registerService( (Manageable) serviceBinding.getService(), serviceBinding.getServiceRole() ); } }
private <R extends Service> R initializeService(ServiceBinding<R> serviceBinding) { if ( LOG.isTraceEnabled() ) { LOG.tracev( "Initializing service [role={0}]", serviceBinding.getServiceRole().getName() ); } // PHASE 1 : create service R service = createService( serviceBinding ); if ( service == null ) { return null; } // PHASE 2 : inject service (***potentially recursive***) serviceBinding.getLifecycleOwner().injectDependencies( serviceBinding ); // PHASE 3 : configure service serviceBinding.getLifecycleOwner().configureService( serviceBinding ); // PHASE 4 : Start service serviceBinding.getLifecycleOwner().startService( serviceBinding ); startService( serviceBinding ); return service; }
private void applyServiceRegistrations(List<StandardServiceInitiator> serviceInitiators, List<ProvidedService> providedServices) { try { // process initiators for ( ServiceInitiator initiator : serviceInitiators ) { createServiceBinding( initiator ); } // then, explicitly provided service instances for ( ProvidedService providedService : providedServices ) { createServiceBinding( providedService ); } } catch (RuntimeException e) { visitServiceBindings( binding -> binding.getLifecycleOwner().stopService( binding ) ); throw e; } }
protected <R extends Service> void registerService(ServiceBinding<R> serviceBinding, R service) { serviceBinding.setService( service ); synchronized ( serviceBindingList ) { serviceBindingList.add( serviceBinding ); } }
this.autoCloseRegistry = autoCloseRegistry; this.classLoaderServiceBinding = new ServiceBinding<ClassLoaderService>( this, ClassLoaderService.class, this.strategySelectorBinding = new ServiceBinding<StrategySelector>( this, StrategySelector.class, ); this.integratorServiceBinding = new ServiceBinding<IntegratorService>( this, IntegratorService.class,