/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.infinispan.impl;
import org.hibernate.ogm.datastore.keyvalue.options.spi.CacheMappingOption;
import org.hibernate.ogm.datastore.spi.BaseSchemaDefiner;
import org.hibernate.ogm.datastore.spi.DatastoreProvider;
import org.hibernate.ogm.options.spi.OptionsService;
import org.hibernate.service.spi.ServiceRegistryImplementor;
/**
* Triggers initialization of the caches in the Infinispan store.
*
* @author Gunnar Morling
*/
public class CacheInitializer extends BaseSchemaDefiner {
@Override
public void initializeSchema(SchemaDefinitionContext context) {
ServiceRegistryImplementor serviceRegistry = context.getSessionFactory().getServiceRegistry();
OptionsService optionsService = serviceRegistry.getService( OptionsService.class );
InfinispanEmbeddedDatastoreProvider provider = (InfinispanEmbeddedDatastoreProvider) serviceRegistry.getService( DatastoreProvider.class );
provider.initializePersistenceStrategy(
optionsService.context().getGlobalOptions().getUnique( CacheMappingOption.class ),
context.getAllEntityKeyMetadata(),
context.getAllAssociationKeyMetadata(),
context.getAllIdSourceKeyMetadata()
);
}
}