Package org.hibernate.service.internal
Class AbstractServiceRegistryImpl
java.lang.Object
org.hibernate.service.internal.AbstractServiceRegistryImpl
- All Implemented Interfaces:
AutoCloseable
,ServiceRegistry
,ServiceBinding.ServiceLifecycleOwner
,ServiceRegistryImplementor
- Direct Known Subclasses:
SessionFactoryServiceRegistryImpl
,StandardServiceRegistryImpl
public abstract class AbstractServiceRegistryImpl
extends Object
implements ServiceRegistryImplementor, ServiceBinding.ServiceLifecycleOwner
Basic implementation of the
ServiceRegistry
and ServiceRegistryImplementor
contracts.-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractServiceRegistryImpl
(@Nullable ServiceRegistryImplementor parent) protected
AbstractServiceRegistryImpl
(@Nullable ServiceRegistryImplementor parent, boolean autoCloseRegistry) AbstractServiceRegistryImpl
(BootstrapServiceRegistry bootstrapServiceRegistry) AbstractServiceRegistryImpl
(BootstrapServiceRegistry bootstrapServiceRegistry, boolean autoCloseRegistry) -
Method Summary
Modifier and TypeMethodDescriptionprotected <R extends Service>
@Nullable RcreateService
(ServiceBinding<R> serviceBinding) protected <R extends Service>
voidcreateServiceBinding
(ProvidedService<R> providedService) protected <R extends Service>
voidcreateServiceBinding
(ServiceInitiator<R> initiator) void
When a registry is created with a parent, the parent is notified of the child via this callback.void
destroy()
Release resources<T extends Service>
@Nullable TfromRegistryOrChildren
(Class<T> serviceRole) static <T extends Service>
@Nullable TfromRegistryOrChildren
(Class<T> serviceRole, ServiceRegistryImplementor serviceRegistry, @Nullable Set<ServiceRegistryImplementor> childRegistries) @Nullable ServiceRegistry
Retrieve this registry's parent registry.<R extends Service>
@Nullable RgetService
(Class<R> serviceRole) Retrieve a service by role, returning null if there is no such service.protected void
<R extends Service>
voidinjectDependencies
(ServiceBinding<R> serviceBinding) boolean
isActive()
<R extends Service>
@Nullable ServiceBinding<R>locateServiceBinding
(Class<R> serviceRole) Locate the binding for the given role.protected <R extends Service>
@Nullable ServiceBinding<R>locateServiceBinding
(Class<R> serviceRole, boolean checkParent) void
Not intended for general use.void
When a registry is created with a parent, the parent is notified of the child via this callback.protected <R extends Service>
voidregisterService
(ServiceBinding<R> serviceBinding, R service) void
resetParent
(@Nullable BootstrapServiceRegistry newParent) Not intended for general use.<R extends Service>
voidstartService
(ServiceBinding<R> serviceBinding) <R extends Service>
voidstopService
(ServiceBinding<R> binding) protected void
visitServiceBindings
(Consumer<ServiceBinding<?>> action) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.hibernate.service.spi.ServiceBinding.ServiceLifecycleOwner
configureService, initiateService
Methods inherited from interface org.hibernate.service.ServiceRegistry
requireService
Methods inherited from interface org.hibernate.service.spi.ServiceRegistryImplementor
close
-
Field Details
-
ALLOW_CRAWLING
- See Also:
-
-
Constructor Details
-
AbstractServiceRegistryImpl
-
AbstractServiceRegistryImpl
protected AbstractServiceRegistryImpl(@Nullable ServiceRegistryImplementor parent, boolean autoCloseRegistry) -
AbstractServiceRegistryImpl
-
AbstractServiceRegistryImpl
public AbstractServiceRegistryImpl(BootstrapServiceRegistry bootstrapServiceRegistry, boolean autoCloseRegistry)
-
-
Method Details
-
initialize
protected void initialize() -
createServiceBinding
-
createServiceBinding
-
visitServiceBindings
-
getParentServiceRegistry
Description copied from interface:ServiceRegistry
Retrieve this registry's parent registry.- Specified by:
getParentServiceRegistry
in interfaceServiceRegistry
- Returns:
- The parent registry. May be null.
-
locateServiceBinding
Description copied from interface:ServiceRegistryImplementor
Locate the binding for the given role. Should, generally speaking, look into parent registry if one.- Specified by:
locateServiceBinding
in interfaceServiceRegistryImplementor
- Type Parameters:
R
- generic return type.- Parameters:
serviceRole
- The service role for which to locate a binding.- Returns:
- The located binding; may be
null
-
locateServiceBinding
protected <R extends Service> @Nullable ServiceBinding<R> locateServiceBinding(Class<R> serviceRole, boolean checkParent) -
getService
Description copied from interface:ServiceRegistry
Retrieve a service by role, returning null if there is no such service. If service is not found, but aServiceInitiator
is registered for this service role, the service will be initialized and returned. Most of the time, use ofServiceRegistry.requireService(Class)
is preferred, being much less likely to cause aNullPointerException
in the client.- Specified by:
getService
in interfaceServiceRegistry
- Type Parameters:
R
- The service role type- Parameters:
serviceRole
- The service role- Returns:
- The requested service or null if the service was not found.
-
registerService
-
createService
-
injectDependencies
- Specified by:
injectDependencies
in interfaceServiceBinding.ServiceLifecycleOwner
-
startService
- Specified by:
startService
in interfaceServiceBinding.ServiceLifecycleOwner
-
isActive
public boolean isActive() -
destroy
public void destroy()Description copied from interface:ServiceRegistryImplementor
Release resources- Specified by:
destroy
in interfaceServiceRegistryImplementor
-
stopService
- Specified by:
stopService
in interfaceServiceBinding.ServiceLifecycleOwner
-
registerChild
Description copied from interface:ServiceRegistryImplementor
When a registry is created with a parent, the parent is notified of the child via this callback.- Specified by:
registerChild
in interfaceServiceRegistryImplementor
-
deRegisterChild
Description copied from interface:ServiceRegistryImplementor
When a registry is created with a parent, the parent is notified of the child via this callback.- Specified by:
deRegisterChild
in interfaceServiceRegistryImplementor
-
resetParent
Not intended for general use. We need the ability to stop and "reactivate" a registry to allow experimentation with technologies such as GraalVM, Quarkus and Cri-O. -
fromRegistryOrChildren
- Specified by:
fromRegistryOrChildren
in interfaceServiceRegistryImplementor
-
fromRegistryOrChildren
public static <T extends Service> @Nullable T fromRegistryOrChildren(Class<T> serviceRole, ServiceRegistryImplementor serviceRegistry, @Nullable Set<ServiceRegistryImplementor> childRegistries) -
reactivate
Not intended for general use. We need the ability to stop and "reactivate" a registry to allow experimentation with technologies such as GraalVM, Quarkus and Cri-O.
-