private static EmbeddedCacheManager createCustomCacheManager()

in infinispan-embedded/src/main/java/org/hibernate/ogm/datastore/infinispan/persistencestrategy/impl/LocalCacheManager.java [72:126]


	private static EmbeddedCacheManager createCustomCacheManager(URL configUrl, JtaPlatform platform, Set<String> cacheNames, KeyProvider<?, ?, ?> keyProvider) {
		Set<String> allCacheNames = new HashSet<>();//To include both the requires ones and the ones found in the configuration files
		allCacheNames.addAll( cacheNames );
		TransactionManagerLookupDelegator transactionManagerLookupDelegator = new TransactionManagerLookupDelegator( platform );
		try {
			InputStream configurationFile = configUrl.openStream();
			try {
				InfinispanConfigurationParser ispnConfiguration = new InfinispanConfigurationParser();
				ConfigurationBuilderHolder configurationBuilderHolder = ispnConfiguration.parseFile( configurationFile );
				EmbeddedCacheManager tmpCacheManager = new DefaultCacheManager( configurationBuilderHolder, false );

				// override global configuration from the config file to inject externalizers
				SerializationConfigurationBuilder serializationConfiguration = configurationBuilderHolder
					.getGlobalConfigurationBuilder()
					.serialization();

				ExternalizersIntegration.registerOgmExternalizers( serializationConfiguration );
				allCacheNames.addAll( tmpCacheManager.getCacheNames() );

				GlobalConfiguration globalConfiguration = serializationConfiguration.build();
				Configuration defaultCacheConfiguration = defaultCacheConfiguration( transactionManagerLookupDelegator, tmpCacheManager, globalConfiguration );

				EmbeddedCacheManager cacheManager = new DefaultCacheManager( globalConfiguration, defaultCacheConfiguration, false );

				// override the named cache configuration defined in the configuration file to
				// inject the platform TransactionManager
				for ( String cacheName : allCacheNames ) {
					if ( !isDefaultCacheName( globalConfiguration, cacheName ) ) {
						Configuration config = tmpCacheManager.getCacheConfiguration( cacheName );
						if ( config == null ) {
							config = defaultCacheConfiguration;
						}
						else {
							config = updateConfiguration( cacheName, transactionManagerLookupDelegator, config );
						}
						if ( config == null ) {
							throw LOG.missingCacheConfiguration( cacheName );
						}
						cacheManager.defineConfiguration( cacheName, config );
					}
				}

				cacheManager.start();
				return cacheManager;
			}
			finally {
				if ( configurationFile != null ) {
					configurationFile.close();
				}
			}
		}
		catch (Exception e) {
			throw raiseConfigurationError( e, configUrl.toString() );
		}
	}