private static StandardServiceRegistry getStandardServiceRegistry(ServiceRegistry serviceRegistry) { if ( serviceRegistry == null ) { throw new HibernateException( "ServiceRegistry passed to MetadataBuilder cannot be null" ); } if ( StandardServiceRegistry.class.isInstance( serviceRegistry ) ) { return ( StandardServiceRegistry ) serviceRegistry; } else if ( BootstrapServiceRegistry.class.isInstance( serviceRegistry ) ) { log.debugf( "ServiceRegistry passed to MetadataBuilder was a BootstrapServiceRegistry; this likely wont end well" + "if attempt is made to build SessionFactory" ); return new StandardServiceRegistryBuilder( (BootstrapServiceRegistry) serviceRegistry ).build(); } else { throw new HibernateException( String.format( "Unexpected type of ServiceRegistry [%s] encountered in attempt to build MetadataBuilder", serviceRegistry.getClass().getName() ) ); } }
/** * Constructs a StandardServiceRegistryImpl. Should not be instantiated directly; use * {@link org.hibernate.boot.registry.StandardServiceRegistryBuilder} instead * * @param autoCloseRegistry See discussion on * {@link org.hibernate.boot.registry.StandardServiceRegistryBuilder#disableAutoClose} * @param bootstrapServiceRegistry The bootstrap service registry. * @param serviceInitiators Any StandardServiceInitiators provided by the user to the builder * @param providedServices Any standard services provided directly to the builder * @param configurationValues Configuration values * * @see org.hibernate.boot.registry.StandardServiceRegistryBuilder */ @SuppressWarnings( {"unchecked"}) public StandardServiceRegistryImpl( boolean autoCloseRegistry, BootstrapServiceRegistry bootstrapServiceRegistry, List<StandardServiceInitiator> serviceInitiators, List<ProvidedService> providedServices, Map<?, ?> configurationValues) { super( bootstrapServiceRegistry, autoCloseRegistry ); this.configurationValues = configurationValues; // process initiators for ( ServiceInitiator initiator : serviceInitiators ) { createServiceBinding( initiator ); } // then, explicitly provided service instances for ( ProvidedService providedService : providedServices ) { createServiceBinding( providedService ); } }
public AbstractServiceRegistryImpl( BootstrapServiceRegistry bootstrapServiceRegistry, boolean autoCloseRegistry) { if ( ! ServiceRegistryImplementor.class.isInstance( bootstrapServiceRegistry ) ) { throw new IllegalArgumentException( "ServiceRegistry parent needs to implement ServiceRegistryImplementor" ); } this.parent = (ServiceRegistryImplementor) bootstrapServiceRegistry; this.allowCrawling = ConfigurationHelper.getBoolean( ALLOW_CRAWLING, Environment.getProperties(), true ); this.autoCloseRegistry = autoCloseRegistry; this.parent.registerChild( this ); }
protected static boolean isExpectedServiceRegistryType(ServiceRegistry serviceRegistry) { return BootstrapServiceRegistry.class.isInstance( serviceRegistry ) || StandardServiceRegistry.class.isInstance( serviceRegistry ); }
public ConfigLoader(BootstrapServiceRegistry bootstrapServiceRegistry) { this.bootstrapServiceRegistry = bootstrapServiceRegistry; }
public AbstractServiceRegistryImpl(BootstrapServiceRegistry bootstrapServiceRegistry) { this( bootstrapServiceRegistry, true ); }
private SessionFactory newSessionFactory() { final BootstrapServiceRegistryBuilder bsrb = new BootstrapServiceRegistryBuilder() .enableAutoClose(); Integrator integrator = integrator(); if (integrator != null) { bsrb.applyIntegrator(integrator); } final BootstrapServiceRegistry bsr = bsrb.build(); final StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(bsr) .applySettings(properties()) .build(); final MetadataSources metadataSources = new MetadataSources(serviceRegistry); for (Class annotatedClass : entities()) { metadataSources.addAnnotatedClass(annotatedClass); } String[] packages = packages(); if (packages != null) { for (String annotatedPackage : packages) { metadataSources.addPackage(annotatedPackage); } } String[] resources = resources(); if (resources != null) { for (String resource : resources) { metadataSources.addResource(resource); } } final MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(); metadataBuilder.enableNewIdentifierGeneratorSupport(true); metadataBuilder.applyImplicitNamingStrategy(ImplicitNamingStrategyLegacyJpaImpl.INSTANCE); MetadataImplementor metadata = (MetadataImplementor) metadataBuilder.build(); final SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); Interceptor interceptor = interceptor(); if (interceptor != null) { sfb.applyInterceptor(interceptor); } return sfb.build(); }
private StandardServiceRegistry getServiceRegistry(MetadataSources metadataSources) { ServiceRegistry registry = metadataSources.getServiceRegistry(); return new StandardServiceRegistryBuilder((BootstrapServiceRegistry) registry) .applySetting(AvailableSettings.DIALECT, H2Dialect.class).build(); }
private SessionFactory newSessionFactory() { final BootstrapServiceRegistryBuilder bsrb = new BootstrapServiceRegistryBuilder() .enableAutoClose(); Integrator integrator = integrator(); if (integrator != null) { bsrb.applyIntegrator( integrator ); } final BootstrapServiceRegistry bsr = bsrb.build(); final StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder(bsr) .applySettings(properties()) .build(); final MetadataSources metadataSources = new MetadataSources(serviceRegistry); for (Class annotatedClass : entities()) { metadataSources.addAnnotatedClass(annotatedClass); } String[] packages = packages(); if (packages != null) { for (String annotatedPackage : packages) { metadataSources.addPackage(annotatedPackage); } } String[] resources = resources(); if (resources != null) { for (String resource : resources) { metadataSources.addResource(resource); } } final MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder(); metadataBuilder.enableNewIdentifierGeneratorSupport(true); metadataBuilder.applyImplicitNamingStrategy(ImplicitNamingStrategyLegacyJpaImpl.INSTANCE); final List<Type> additionalTypes = additionalTypes(); if (additionalTypes != null) { additionalTypes.stream().forEach(type -> { metadataBuilder.applyTypes((typeContributions, serviceRegistry1) -> { if(type instanceof BasicType) { typeContributions.contributeType((BasicType) type); } else if (type instanceof UserType ){ typeContributions.contributeType((UserType) type); } else if (type instanceof CompositeUserType) { typeContributions.contributeType((CompositeUserType) type); } }); }); } MetadataImplementor metadata = (MetadataImplementor) metadataBuilder.build(); final SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); Interceptor interceptor = interceptor(); if(interceptor != null) { sfb.applyInterceptor(interceptor); } return sfb.build(); }
@Override public void configure(final Env env, final Config conf, final Binder binder) { Key<DataSource> dskey = Key.get(DataSource.class, Names.named(name)); DataSource ds = env.get(dskey) .orElseThrow(() -> new NoSuchElementException("DataSource missing: " + dskey)); BootstrapServiceRegistryBuilder bsrb = new BootstrapServiceRegistryBuilder(); bsrb.applyIntegrator(new JpaIntegrator()); this.bsrb.accept(bsrb, conf); String ddl_auto = env.name().equals("dev") ? "update" : "none"; BootstrapServiceRegistry bsr = bsrb.build(); StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder(bsr); ssrb.applySetting(AvailableSettings.HBM2DDL_AUTO, ddl_auto); ssrb.applySettings(settings(env, conf)); this.ssrb.accept(ssrb, conf); ssrb.applySetting(AvailableSettings.DATASOURCE, ds); ssrb.applySetting(org.hibernate.jpa.AvailableSettings.DELAY_CDI_ACCESS, true); StandardServiceRegistry serviceRegistry = ssrb.build(); MetadataSources sources = new MetadataSources(serviceRegistry); this.sources.forEach(src -> src.accept(sources, conf)); this.metaSources.accept(sources, conf); /** scan package? */ List<URL> packages = sources.getAnnotatedPackages() .stream() .map(pkg -> getClass().getResource("/" + pkg.replace('.', '/'))) .collect(Collectors.toList()); Metadata metadata = sources.getMetadataBuilder() .applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE) .applyScanEnvironment(new ScanEnvImpl(packages)) .build(); SessionFactoryBuilder sfb = metadata.getSessionFactoryBuilder(); this.sfb.accept(sfb, conf); sfb.applyName(name); CompletableFuture<Registry> registry = new CompletableFuture<>(); sfb.applyBeanManager(GuiceBeanManager.beanManager(registry)); SessionFactory sessionFactory = sfb.build(); this.sf.accept(sessionFactory, conf); Provider<Session> session = new SessionProvider(sessionFactory); ServiceKey serviceKey = env.serviceKey(); serviceKey.generate(SessionFactory.class, name, k -> binder.bind(k).toInstance(sessionFactory)); serviceKey.generate(EntityManagerFactory.class, name, k -> binder.bind(k).toInstance(sessionFactory)); /** Session/Entity Manager . */ serviceKey.generate(Session.class, name, k -> binder.bind(k).toProvider(session)); serviceKey.generate(EntityManager.class, name, k -> binder.bind(k).toProvider(session)); /** Unit of work . */ Provider<UnitOfWork> uow = new UnitOfWorkProvider(sessionFactory); serviceKey.generate(UnitOfWork.class, name, k -> binder.bind(k).toProvider(uow)); bindings.forEach(it -> it.accept(binder)); env.onStart(r -> { registry.complete(r); listeners.forEach(it -> it.accept((SessionFactoryImplementor) sessionFactory, r)); }); env.onStop(sessionFactory::close); }
/** * Constructs a StandardServiceRegistryImpl. Should not be instantiated directly; use * {@link org.hibernate.boot.registry.StandardServiceRegistryBuilder} instead * * @param bootstrapServiceRegistry The bootstrap service registry. * @param serviceInitiators Any StandardServiceInitiators provided by the user to the builder * @param providedServices Any standard services provided directly to the builder * @param configurationValues Configuration values * * @see org.hibernate.boot.registry.StandardServiceRegistryBuilder */ @SuppressWarnings( {"unchecked"}) public StandardServiceRegistryImpl( BootstrapServiceRegistry bootstrapServiceRegistry, List<StandardServiceInitiator> serviceInitiators, List<ProvidedService> providedServices, Map<?, ?> configurationValues) { this( true, bootstrapServiceRegistry, serviceInitiators, providedServices, configurationValues ); }
/** * Creates the standard service registry builder. Subclasses can override to customize the creation of the StandardServiceRegistry * * @param bootstrapServiceRegistry The {@link BootstrapServiceRegistry} * @return The {@link StandardServiceRegistryBuilder} */ protected StandardServiceRegistryBuilder createStandardServiceRegistryBuilder(BootstrapServiceRegistry bootstrapServiceRegistry) { return new StandardServiceRegistryBuilder(bootstrapServiceRegistry); }