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() );
}
}