@Test
public void testCustomDataContainer() {
ConfigurationBuilder configuration = new ConfigurationBuilder();
configuration.dataContainer().dataContainer(new QueryableDataContainer());
EmbeddedCacheManager cm = TestCacheManagerFactory.createCacheManager(configuration);
try {
AdvancedCache<Object, Object> cache = cm.getCache().getAdvancedCache();
DataContainer ddc = DefaultDataContainer.unBoundedDataContainer(cache.getCacheConfiguration().locking().concurrencyLevel());
ActivationManager activationManager = mock(ActivationManager.class);
doNothing().when(activationManager).onUpdate(Mockito.any(), Mockito.anyBoolean());
TestingUtil.inject(ddc, new InternalEntryFactoryImpl(), activationManager,
TIME_SERVICE, mock(InternalExpirationManager.class));
QueryableDataContainer.setDelegate(ddc);
Assert.assertEquals(cm.getDefaultCacheConfiguration().dataContainer().dataContainer().getClass(), QueryableDataContainer.class);
DataContainer container = cache.getDataContainer();
Assert.assertEquals(container.getClass(), InternalDataContainerAdapter.class);
DataContainer delegate = ((InternalDataContainerAdapter) container).delegate();
Assert.assertEquals(delegate.getClass(), QueryableDataContainer.class);
QueryableDataContainer dataContainer = QueryableDataContainer.class.cast(delegate);
cache.put("name", "Pete");
Assert.assertTrue(checkLoggedOperations(dataContainer.getLoggedOperations(), "put(name, Pete", "compute(name,"));
} finally {
TestingUtil.killCacheManagers(cm);
}
}