Example usage for org.hibernate.service ServiceRegistry getService

List of usage examples for org.hibernate.service ServiceRegistry getService

Introduction

In this page you can find the example usage for org.hibernate.service ServiceRegistry getService.

Prototype

<R extends Service> R getService(Class<R> serviceRole);

Source Link

Document

Retrieve a service by role.

Usage

From source file:com.blazebit.persistence.integration.hibernate.Hibernate43Integrator.java

License:Apache License

@Override
public void prepareServices(final StandardServiceRegistryBuilder serviceRegistryBuilder) {
    final StrategySelector strategySelector = serviceRegistryBuilder.getBootstrapServiceRegistry()
            .getService(StrategySelector.class);
    serviceRegistryBuilder.addService(StrategySelector.class, new StrategySelector() {
        @Override/*from w w  w.  j  a  va  2  s.c om*/
        public <T> void registerStrategyImplementor(Class<T> aClass, String s, Class<? extends T> aClass1) {
            strategySelector.registerStrategyImplementor(aClass, s, aClass1);
        }

        @Override
        public <T> void unRegisterStrategyImplementor(Class<T> aClass, Class<? extends T> aClass1) {
            strategySelector.unRegisterStrategyImplementor(aClass, aClass1);
        }

        @Override
        public <T> Class<? extends T> selectStrategyImplementor(Class<T> aClass, String s) {
            return strategySelector.selectStrategyImplementor(aClass, s);
        }

        @Override
        public <T> T resolveStrategy(Class<T> aClass, Object o) {
            if (MultiTableBulkIdStrategy.class == aClass) {
                if (o == null) {
                    ServiceRegistry serviceRegistry = SERVICE_REGISTRY_ACCESS.get();
                    SERVICE_REGISTRY_ACCESS.remove();
                    return (T) new CustomMultiTableBulkIdStrategy(serviceRegistry.getService(JdbcServices.class)
                            .getDialect().supportsTemporaryTables() ? TemporaryTableBulkIdStrategy.INSTANCE
                                    : new PersistentTableBulkIdStrategy());
                } else {
                    LOG.warning(
                            "Can't replace hibernate.hql.bulk_id_strategy because it was overridden by the user with: "
                                    + o);
                }
            }
            return strategySelector.resolveStrategy(aClass, o);
        }

        @Override
        public <T> T resolveDefaultableStrategy(Class<T> aClass, Object o, T t) {
            return strategySelector.resolveDefaultableStrategy(aClass, o, t);
        }
    });
    serviceRegistryBuilder.addInitiator(new StandardServiceInitiator<Database>() {
        @Override
        public Database initiateService(@SuppressWarnings("rawtypes") Map configurationValues,
                ServiceRegistryImplementor registry) {
            return null;
        }

        @Override
        public Class<Database> getServiceInitiated() {
            return Database.class;
        }
    });
}

From source file:com.blazebit.persistence.integration.hibernate.Hibernate4Integrator.java

License:Apache License

@Override
public void contribute(TypeContributions typeContributions, ServiceRegistry serviceRegistry) {
    ((StandardServiceRegistryImpl) serviceRegistry).configureService(new ServiceBinding<>(
            (ServiceBinding.ServiceLifecycleOwner) serviceRegistry, Hibernate4Integrator.class, this));
    Object o = configuration.get("hibernate.hql.bulk_id_strategy");
    if (o == null) {
        serviceRegistry.getService(JdbcServices.class).getDialect().getDefaultProperties()
                .put("hibernate.hql.bulk_id_strategy",
                        new CustomMultiTableBulkIdStrategy(serviceRegistry.getService(JdbcServices.class)
                                .getDialect().supportsTemporaryTables() ? TemporaryTableBulkIdStrategy.INSTANCE
                                        : new PersistentTableBulkIdStrategy()));
    } else {//  ww  w  .  j a  va2  s. c  o  m
        LOG.warning("Can't replace hibernate.hql.bulk_id_strategy because it was overridden by the user with: "
                + o);
    }
}

From source file:com.tsoft.app.domain.identifier.StringSequenceIdentifier.java

@Override
public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
    final JdbcEnvironment jdbcEnvironment = serviceRegistry.getService(JdbcEnvironment.class);
    final Dialect dialect = jdbcEnvironment.getDialect();

    final ConfigurationService configurationService = serviceRegistry.getService(ConfigurationService.class);
    String globalEntityIdentifierPrefix = configurationService.getSetting("entity.identifier.prefix",
            String.class, "SEQ_");

    sequencePrefix = ConfigurationHelper.getString(SEQUENCE_PREFIX, params, globalEntityIdentifierPrefix);

    final String sequencePerEntitySuffix = ConfigurationHelper.getString(
            SequenceStyleGenerator.CONFIG_SEQUENCE_PER_ENTITY_SUFFIX, params,
            SequenceStyleGenerator.DEF_SEQUENCE_SUFFIX);

    final String defaultSequenceName = ConfigurationHelper
            .getBoolean(SequenceStyleGenerator.CONFIG_PREFER_SEQUENCE_PER_ENTITY, params, false)
                    ? params.getProperty(JPA_ENTITY_NAME) + sequencePerEntitySuffix
                    : SequenceStyleGenerator.DEF_SEQUENCE_NAME;

    sequenceCallSyntax = dialect.getSequenceNextValString(
            ConfigurationHelper.getString(SequenceStyleGenerator.SEQUENCE_PARAM, params, defaultSequenceName));
}

From source file:net.e6tech.elements.persist.hibernate.ModifiedTableGenerator.java

License:Apache License

@Override
public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
    identifierType = type;//w w w  .j av a  2  s . c  om

    final JdbcEnvironment jdbcEnvironment = serviceRegistry.getService(JdbcEnvironment.class);

    qualifiedTableName = determineGeneratorTableName(params, jdbcEnvironment);
    segmentColumnName = determineSegmentColumnName(params, jdbcEnvironment);
    valueColumnName = determineValueColumnName(params, jdbcEnvironment);

    segmentValue = determineSegmentValue(params);

    segmentValueLength = determineSegmentColumnSize(params);
    initialValue = determineInitialValue(params);
    incrementSize = determineIncrementSize(params);

    final String optimizationStrategy = ConfigurationHelper.getString(OPT_PARAM, params,
            OptimizerFactory.determineImplicitOptimizerName(incrementSize, params));
    optimizer = OptimizerFactory.buildOptimizer(optimizationStrategy, identifierType.getReturnedClass(),
            incrementSize, ConfigurationHelper.getInt(INITIAL_PARAM, params, -1));
}

From source file:net.krotscheck.jersey2.hibernate.factory.HibernateSessionFactoryFactory.java

License:Apache License

/**
 * This method automatically adds discovered hibernate event listeners into
 * the hibernate service registry.//from ww  w  . j av  a2s  .c o m
 *
 * @param registry The service registry.
 */
private void injectEventListeners(final ServiceRegistry registry) {

    EventListenerRegistry eventRegistry = registry.getService(EventListenerRegistry.class);

    List<PostInsertEventListener> postInsertEvents = locator.getAllServices(PostInsertEventListener.class);
    for (PostInsertEventListener piEventListener : postInsertEvents) {
        logger.trace("Registering PostInsert: " + piEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_INSERT, piEventListener);
    }

    List<PostUpdateEventListener> postUpdateEvents = locator.getAllServices(PostUpdateEventListener.class);
    for (PostUpdateEventListener puEventListener : postUpdateEvents) {
        logger.trace("Registering PostUpdate: " + puEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_UPDATE, puEventListener);
    }

    List<PostDeleteEventListener> postDeleteEvents = locator.getAllServices(PostDeleteEventListener.class);
    for (PostDeleteEventListener pdEventListener : postDeleteEvents) {
        logger.trace("Registering PostDelete: " + pdEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_DELETE, pdEventListener);
    }

    List<PreInsertEventListener> preInsertEvents = locator.getAllServices(PreInsertEventListener.class);
    for (PreInsertEventListener piEventListener : preInsertEvents) {
        logger.trace("Registering PreInsert: " + piEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.PRE_INSERT, piEventListener);
    }

    List<PreUpdateEventListener> preUpdateEvents = locator.getAllServices(PreUpdateEventListener.class);
    for (PreUpdateEventListener puEventListener : preUpdateEvents) {
        logger.trace("Registering PreUpdate: " + puEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.PRE_UPDATE, puEventListener);
    }

    List<PreDeleteEventListener> preDeleteEvents = locator.getAllServices(PreDeleteEventListener.class);
    for (PreDeleteEventListener pdEventListener : preDeleteEvents) {
        logger.trace("Registering PreDelete: " + pdEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.PRE_DELETE, pdEventListener);
    }

    List<PostCommitInsertEventListener> pciEvents = locator.getAllServices(PostCommitInsertEventListener.class);
    for (PostCommitInsertEventListener cpiEventListener : pciEvents) {
        logger.trace("Registering PostCommitInsert: " + cpiEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_COMMIT_INSERT, cpiEventListener);
    }

    List<PostCommitUpdateEventListener> pcuEvents = locator.getAllServices(PostCommitUpdateEventListener.class);
    for (PostCommitUpdateEventListener cpuEventListener : pcuEvents) {
        logger.trace("Registering PostCommitUpdate: " + cpuEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_COMMIT_UPDATE, cpuEventListener);
    }

    List<PostCommitDeleteEventListener> pcdEvents = locator.getAllServices(PostCommitDeleteEventListener.class);
    for (PostCommitDeleteEventListener cpdEventListener : pcdEvents) {
        logger.trace("Registering PostCommitDelete: " + cpdEventListener.getClass().getCanonicalName());
        eventRegistry.appendListeners(EventType.POST_COMMIT_DELETE, cpdEventListener);
    }
}

From source file:net.krotscheck.jersey2.hibernate.factory.HibernateSessionFactoryFactoryTest.java

License:Apache License

/**
 * Test the application event injectors.
 */// w w w  .j av  a  2  s.  c  om
@Test
public void testEventInjection() {

    // Create a fake application.
    SessionFactory factoryFactory = locator.getService(SessionFactory.class);
    Assert.assertNotNull(factoryFactory);

    ServiceRegistry serviceRegistry = ((SessionFactoryImpl) factoryFactory).getServiceRegistry();
    EventListenerRegistry eventRegistry = serviceRegistry.getService(EventListenerRegistry.class);

    EventListenerGroup<PreInsertEventListener> priGroup = eventRegistry
            .getEventListenerGroup(EventType.PRE_INSERT);
    assertContainsListener(priGroup);

    EventListenerGroup<PostInsertEventListener> poiGroup = eventRegistry
            .getEventListenerGroup(EventType.POST_INSERT);
    assertContainsListener(poiGroup);

    EventListenerGroup<PreUpdateEventListener> pruGroup = eventRegistry
            .getEventListenerGroup(EventType.PRE_UPDATE);
    assertContainsListener(pruGroup);

    EventListenerGroup<PostUpdateEventListener> pouGroup = eventRegistry
            .getEventListenerGroup(EventType.POST_UPDATE);
    assertContainsListener(pouGroup);

    EventListenerGroup<PreDeleteEventListener> prdGroup = eventRegistry
            .getEventListenerGroup(EventType.PRE_DELETE);
    assertContainsListener(prdGroup);

    EventListenerGroup<PostDeleteEventListener> podGroup = eventRegistry
            .getEventListenerGroup(EventType.POST_DELETE);
    assertContainsListener(podGroup);

    EventListenerGroup<PostInsertEventListener> pciGroup = eventRegistry
            .getEventListenerGroup(EventType.POST_COMMIT_INSERT);
    assertContainsListener(pciGroup);

    EventListenerGroup<PostUpdateEventListener> pcuGroup = eventRegistry
            .getEventListenerGroup(EventType.POST_COMMIT_UPDATE);
    assertContainsListener(pcuGroup);

    EventListenerGroup<PostDeleteEventListener> pcdGroup = eventRegistry
            .getEventListenerGroup(EventType.POST_COMMIT_DELETE);
    assertContainsListener(pcdGroup);
}

From source file:org.babyfish.hibernate.internal.SessionFactoryImplWrapper.java

License:Open Source License

static CurrentXSessionContext buildCurrentXSessionContext(XSessionFactoryImplementor sessionFactory) {
    ServiceRegistry serviceRegistry = sessionFactory.getServiceRegistry();
    TransactionFactory<?> transactionFactory = serviceRegistry.getService(TransactionFactory.class);
    boolean canAccessTransactionManager;
    try {/*from  w  w w  .  ja v  a2  s  .  com*/
        canAccessTransactionManager = serviceRegistry.getService(JtaPlatform.class)
                .retrieveTransactionManager() != null;
    } catch (Exception ex) {
        canAccessTransactionManager = false;
    }
    String impl = sessionFactory.getProperties().getProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS);
    if (impl == null) {
        if (canAccessTransactionManager) {
            impl = "jta";
        } else {
            return null;
        }
    }

    if ("jta".equals(impl)) {
        if (!transactionFactory.compatibleWithJtaSynchronization()) {
            LOG.autoFlushWillNotWork();
        }
        return new JTAXSessionContext(sessionFactory);
    } else if ("thread".equals(impl)) {
        return new ThreadLocalXSessionContext(sessionFactory);
    } else if ("managed".equals(impl)) {
        return new ManagedXSessionContext(sessionFactory);
    } else {
        try {
            Class<?> implClass = serviceRegistry.getService(ClassLoaderService.class).classForName(impl);
            if (!CurrentXSessionContext.class.isAssignableFrom(implClass)) {
                throw new HibernateException("The class specified by \""
                        + Environment.CURRENT_SESSION_CONTEXT_CLASS + "\" must be derived class of \""
                        + CurrentXSessionContext.class.getName() + "\"");
            }
            return (CurrentXSessionContext) implClass
                    .getConstructor(new Class[] { XSessionFactoryImplementor.class })
                    .newInstance(sessionFactory);
        } catch (Throwable t) {
            LOG.unableToConstructCurrentSessionContext(impl, t);
            return null;
        }
    }
}

From source file:org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore.java

License:Open Source License

public synchronized SessionFactory getHibernateSessionFactory() {
    if (cdoDataStore == null) {
        if (TRACER.isEnabled()) {
            TRACER.trace("Initializing SessionFactory for HibernateStore"); //$NON-NLS-1$
        }/*from w w w.j av  a 2 s . c om*/

        currentHibernateStore.set(this);

        identifierPropertyNameByEntity = new HashMap<String, String>();

        try {
            initDataStore();

            // this has to be done before the classmapping is iterated
            // otherwise it is not initialized
            SessionFactory hibernateSessionFactory = cdoDataStore.getSessionFactory();
            ServiceRegistry serviceRegistry = ((SessionFactoryImpl) hibernateSessionFactory)
                    .getServiceRegistry();
            final EventListenerRegistry eventListenerRegistry = serviceRegistry
                    .getService(EventListenerRegistry.class);
            eventListenerRegistry.setListeners(EventType.MERGE, new CDOMergeEventListener());

            final Iterator<?> iterator = cdoDataStore.getConfiguration().getClassMappings();
            while (iterator.hasNext()) {
                final PersistentClass pc = (PersistentClass) iterator.next();
                if (pc.getIdentifierProperty() == null) {
                    // happens for featuremaps for now...
                    continue;
                }

                identifierPropertyNameByEntity.put(pc.getEntityName(), pc.getIdentifierProperty().getName());
            }
        } catch (Throwable t) {
            t.printStackTrace(System.err);
            if (TRACER.isEnabled()) {
                TRACER.trace(t);
            }
            throw new RuntimeException(t);
        } finally {
            currentHibernateStore.set(null);
        }
    }

    return cdoDataStore.getSessionFactory();
}

From source file:org.infinispan.hibernate.cache.commons.InfinispanRegionFactory.java

License:LGPL

private ConfigurationBuilderHolder loadConfiguration(ServiceRegistry serviceRegistry, String configFile) {
    final FileLookup fileLookup = FileLookupFactory.newInstance();
    final ClassLoader infinispanClassLoader = InfinispanRegionFactory.class.getClassLoader();
    return serviceRegistry.getService(ClassLoaderService.class)
            .workWithClassLoader(new ClassLoaderService.Work<ConfigurationBuilderHolder>() {
                @Override/*  w w  w.  j  a va  2  s  .co  m*/
                public ConfigurationBuilderHolder doWork(ClassLoader classLoader) {
                    InputStream is = null;
                    try {
                        is = fileLookup.lookupFile(configFile, classLoader);
                        if (is == null) {
                            // when it's not a user-provided configuration file, it might be a default configuration file,
                            // and if that's included in [this] module might not be visible to the ClassLoaderService:
                            classLoader = infinispanClassLoader;
                            // This time use lookupFile*Strict* so to provide an exception if we can't find it yet:
                            is = FileLookupFactory.newInstance().lookupFileStrict(configFile, classLoader);
                        }
                        final ParserRegistry parserRegistry = new ParserRegistry(infinispanClassLoader);
                        final ConfigurationBuilderHolder holder = parseWithOverridenClassLoader(parserRegistry,
                                is, infinispanClassLoader);

                        return holder;
                    } catch (IOException e) {
                        throw log.unableToCreateCacheManager(e);
                    } finally {
                        Util.close(is);
                    }
                }
            });
}

From source file:org.infinispan.hibernate.cache.v53.InfinispanRegionFactory.java

License:LGPL

private ConfigurationBuilderHolder loadConfiguration(ServiceRegistry serviceRegistry, String configFile) {
    final FileLookup fileLookup = FileLookupFactory.newInstance();
    final ClassLoader infinispanClassLoader = InfinispanRegionFactory.class.getClassLoader();
    return serviceRegistry.getService(ClassLoaderService.class).workWithClassLoader(classLoader -> {
        InputStream is = null;//ww w .  j a v  a2  s.  com
        try {
            is = fileLookup.lookupFile(configFile, classLoader);
            if (is == null) {
                // when it's not a user-provided configuration file, it might be a default configuration file,
                // and if that's included in [this] module might not be visible to the ClassLoaderService:
                classLoader = infinispanClassLoader;
                // This time use lookupFile*Strict* so to provide an exception if we can't find it yet:
                is = FileLookupFactory.newInstance().lookupFileStrict(configFile, classLoader);
            }
            final ParserRegistry parserRegistry = new ParserRegistry(infinispanClassLoader);
            final ConfigurationBuilderHolder holder = parseWithOverridenClassLoader(parserRegistry, is,
                    infinispanClassLoader);

            return holder;
        } catch (IOException e) {
            throw log.unableToCreateCacheManager(e);
        } finally {
            Util.close(is);
        }
    });
}