use of org.hibernate.engine.config.spi.ConfigurationService in project hibernate-orm by hibernate.
the class GlobalTemporaryTableBulkIdStrategy method initialize.
@Override
protected void initialize(MetadataBuildingOptions buildingOptions, SessionFactoryOptions sessionFactoryOptions) {
final StandardServiceRegistry serviceRegistry = buildingOptions.getServiceRegistry();
final ConfigurationService configService = serviceRegistry.getService(ConfigurationService.class);
this.dropIdTables = configService.getSetting(DROP_ID_TABLES, StandardConverters.BOOLEAN, false);
}
use of org.hibernate.engine.config.spi.ConfigurationService in project hibernate-orm by hibernate.
the class SchemaManagementToolCoordinator method process.
public static void process(final Metadata metadata, final ServiceRegistry serviceRegistry, final Map configurationValues, DelayedDropRegistry delayedDropRegistry) {
final ActionGrouping actions = ActionGrouping.interpret(configurationValues);
if (actions.getDatabaseAction() == Action.NONE && actions.getScriptAction() == Action.NONE) {
// no actions specified
log.debug("No actions specified; doing nothing");
return;
}
final SchemaManagementTool tool = serviceRegistry.getService(SchemaManagementTool.class);
final ConfigurationService configService = serviceRegistry.getService(ConfigurationService.class);
boolean haltOnError = configService.getSetting(AvailableSettings.HBM2DDL_HALT_ON_ERROR, Boolean.class, false);
final ExecutionOptions executionOptions = buildExecutionOptions(configurationValues, haltOnError ? ExceptionHandlerHaltImpl.INSTANCE : ExceptionHandlerLoggedImpl.INSTANCE);
performScriptAction(actions.getScriptAction(), metadata, tool, serviceRegistry, executionOptions);
performDatabaseAction(actions.getDatabaseAction(), metadata, tool, serviceRegistry, executionOptions);
if (actions.getDatabaseAction() == Action.CREATE_DROP) {
//noinspection unchecked
delayedDropRegistry.registerOnCloseAction(tool.getSchemaDropper(configurationValues).buildDelayedAction(metadata, executionOptions, buildDatabaseTargetDescriptor(configurationValues, DropSettingSelector.INSTANCE, serviceRegistry)));
}
}
use of org.hibernate.engine.config.spi.ConfigurationService in project hibernate-orm by hibernate.
the class JpaIntegrator method integrate.
/**
* Perform integration.
*
* @param metadata The "compiled" representation of the mapping information
* @param sessionFactory The session factory being created
* @param serviceRegistry The session factory's service registry
*/
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
// first, register the JPA-specific persist cascade style
try {
oldPersistCascadeStyle = CascadeStyles.getCascadeStyle("persist");
} catch (Exception e) {
}
CascadeStyles.registerCascadeStyle("persist", new PersistCascadeStyle());
// then prepare listeners
final EventListenerRegistry eventListenerRegistry = serviceRegistry.getService(EventListenerRegistry.class);
eventListenerRegistry.addDuplicationStrategy(JPA_DUPLICATION_STRATEGY);
// op listeners
eventListenerRegistry.setListeners(EventType.AUTO_FLUSH, JpaAutoFlushEventListener.INSTANCE);
eventListenerRegistry.setListeners(EventType.DELETE, new JpaDeleteEventListener());
eventListenerRegistry.setListeners(EventType.FLUSH_ENTITY, new JpaFlushEntityEventListener());
eventListenerRegistry.setListeners(EventType.FLUSH, JpaFlushEventListener.INSTANCE);
eventListenerRegistry.setListeners(EventType.MERGE, new JpaMergeEventListener());
eventListenerRegistry.setListeners(EventType.PERSIST, new JpaPersistEventListener());
eventListenerRegistry.setListeners(EventType.PERSIST_ONFLUSH, new JpaPersistOnFlushEventListener());
eventListenerRegistry.setListeners(EventType.SAVE, new JpaSaveEventListener());
eventListenerRegistry.setListeners(EventType.SAVE_UPDATE, new JpaSaveOrUpdateEventListener());
// post op listeners
eventListenerRegistry.prependListeners(EventType.POST_DELETE, new JpaPostDeleteEventListener());
eventListenerRegistry.prependListeners(EventType.POST_INSERT, new JpaPostInsertEventListener());
eventListenerRegistry.prependListeners(EventType.POST_LOAD, new JpaPostLoadEventListener());
eventListenerRegistry.prependListeners(EventType.POST_UPDATE, new JpaPostUpdateEventListener());
final ConfigurationService cfgService = serviceRegistry.getService(ConfigurationService.class);
for (Map.Entry entry : ((Map<?, ?>) cfgService.getSettings()).entrySet()) {
if (!String.class.isInstance(entry.getKey())) {
continue;
}
final String propertyName = (String) entry.getKey();
if (!propertyName.startsWith(AvailableSettings.EVENT_LISTENER_PREFIX)) {
continue;
}
final String eventTypeName = propertyName.substring(AvailableSettings.EVENT_LISTENER_PREFIX.length() + 1);
final EventType eventType = EventType.resolveEventTypeByName(eventTypeName);
final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup(eventType);
for (String listenerImpl : ((String) entry.getValue()).split(" ,")) {
eventListenerGroup.appendListener(instantiate(listenerImpl, serviceRegistry));
}
}
// handle JPA "entity listener classes"...
final ReflectionManager reflectionManager = ((MetadataImpl) metadata).getMetadataBuildingOptions().getReflectionManager();
this.callbackRegistry = new CallbackRegistryImpl();
this.jpaListenerFactory = ListenerFactoryBuilder.buildListenerFactory(sessionFactory.getSessionFactoryOptions());
this.callbackBuilder = new CallbackBuilderLegacyImpl(jpaListenerFactory, reflectionManager);
for (PersistentClass persistentClass : metadata.getEntityBindings()) {
if (persistentClass.getClassName() == null) {
// we can have non java class persisted by hibernate
continue;
}
callbackBuilder.buildCallbacksForEntity(persistentClass.getClassName(), callbackRegistry);
}
for (EventType eventType : EventType.values()) {
final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup(eventType);
for (Object listener : eventListenerGroup.listeners()) {
if (CallbackRegistryConsumer.class.isInstance(listener)) {
((CallbackRegistryConsumer) listener).injectCallbackRegistry(callbackRegistry);
}
}
}
}
use of org.hibernate.engine.config.spi.ConfigurationService in project hibernate-orm by hibernate.
the class Dialect method resolveLegacyLimitHandlerBehavior.
private void resolveLegacyLimitHandlerBehavior(ServiceRegistry serviceRegistry) {
// HHH-11194
// Temporary solution to set whether legacy limit handler behavior should be used.
final ConfigurationService configurationService = serviceRegistry.getService(ConfigurationService.class);
legacyLimitHandlerBehavior = configurationService.getSetting(AvailableSettings.USE_LEGACY_LIMIT_HANDLERS, StandardConverters.BOOLEAN, false);
}
use of org.hibernate.engine.config.spi.ConfigurationService in project hibernate-orm by hibernate.
the class TypeSafeActivator method applyCallbackListeners.
@SuppressWarnings({ "UnusedDeclaration" })
public static void applyCallbackListeners(ValidatorFactory validatorFactory, ActivationContext activationContext) {
final Set<ValidationMode> modes = activationContext.getValidationModes();
if (!(modes.contains(ValidationMode.CALLBACK) || modes.contains(ValidationMode.AUTO))) {
return;
}
final ConfigurationService cfgService = activationContext.getServiceRegistry().getService(ConfigurationService.class);
final ClassLoaderService classLoaderService = activationContext.getServiceRegistry().getService(ClassLoaderService.class);
// asks for it
if (cfgService.getSettings().get(Environment.CHECK_NULLABILITY) == null) {
activationContext.getSessionFactory().getSessionFactoryOptions().setCheckNullability(false);
}
final BeanValidationEventListener listener = new BeanValidationEventListener(validatorFactory, cfgService.getSettings(), classLoaderService);
final EventListenerRegistry listenerRegistry = activationContext.getServiceRegistry().getService(EventListenerRegistry.class);
listenerRegistry.addDuplicationStrategy(DuplicationStrategyImpl.INSTANCE);
listenerRegistry.appendListeners(EventType.PRE_INSERT, listener);
listenerRegistry.appendListeners(EventType.PRE_UPDATE, listener);
listenerRegistry.appendListeners(EventType.PRE_DELETE, listener);
listener.initialize(cfgService.getSettings(), classLoaderService);
}
Aggregations