WriteBehindConfiguration buildWith(BatchingConfiguration batching) { return new DefaultWriteBehindConfiguration(threadPoolAlias, concurrency, queueSize, batching); }
/** * Builds the {@link WriteBehindConfiguration} * * @return the write behind configuration */ @Override public WriteBehindConfiguration build() { return buildWith(new DefaultBatchingConfiguration(maxDelay, maxDelayUnit, batchSize, coalescing)); } }
@Override public WriteBehindProvider create(ServiceCreationConfiguration<WriteBehindProvider> configuration) { if (configuration == null) { return new Provider(); } else if (configuration instanceof WriteBehindProviderConfiguration) { return new Provider(((WriteBehindProviderConfiguration) configuration).getThreadPoolAlias()); } else { throw new IllegalArgumentException("WriteBehind configuration must not be provided at CacheManager level"); } }
/** * Adds a {@link WriteBehindProviderConfiguration}, that specifies the thread pool to use, to the returned builder. * * @param threadPoolAlias the thread pool alias * @return a new builder with the added configuration * * @see PooledExecutionServiceConfigurationBuilder */ public CacheManagerBuilder<T> withDefaultWriteBehindThreadPool(String threadPoolAlias) { WriteBehindProviderConfiguration config = configBuilder.findServiceByClass(WriteBehindProviderConfiguration.class); if (config == null) { return new CacheManagerBuilder<>(this, configBuilder.addService(new WriteBehindProviderConfiguration(threadPoolAlias))); } else { ConfigurationBuilder builder = configBuilder.removeService(config); return new CacheManagerBuilder<>(this, builder.addService(new WriteBehindProviderConfiguration(threadPoolAlias))); } }
@Test public void parseServiceConfigurationNonBatching() throws Exception { CacheConfiguration<?, ?> cacheConfiguration = new XmlConfiguration(getClass().getResource("/configs/writebehind-cache.xml")).getCacheConfigurations().get("bar"); DefaultWriteBehindConfiguration writeBehindConfig = findSingletonAmongst(DefaultWriteBehindConfiguration.class, cacheConfiguration.getServiceConfigurations()); assertThat(writeBehindConfig).isNotNull(); assertThat(writeBehindConfig.getConcurrency()).isEqualTo(1); assertThat(writeBehindConfig.getMaxQueueSize()).isEqualTo(10); assertThat(writeBehindConfig.getBatchingConfiguration()).isNull(); }
@Test public void parseServiceCreationConfiguration() throws SAXException, JAXBException, ParserConfigurationException, IOException, ClassNotFoundException { Configuration xmlConfig = new XmlConfiguration(getClass().getResource("/configs/writebehind-cache.xml")); assertThat(xmlConfig.getServiceCreationConfigurations()).hasSize(1); ServiceCreationConfiguration<?> configuration = xmlConfig.getServiceCreationConfigurations().iterator().next(); assertThat(configuration).isExactlyInstanceOf(WriteBehindProviderConfiguration.class); WriteBehindProviderConfiguration providerConfiguration = (WriteBehindProviderConfiguration) configuration; assertThat(providerConfiguration.getThreadPoolAlias()).isEqualTo("write-behind-pool"); }
@Test public void unparseServiceCreationConfiguration() { ConfigType configType = new ConfigType(); Configuration config = ConfigurationBuilder.newConfigurationBuilder() .addService(new WriteBehindProviderConfiguration("foo")).build(); configType = new WriteBehindProviderConfigurationParser().unparseServiceCreationConfiguration(config, configType); assertThat(configType.getWriteBehind().getThreadPool()).isEqualTo("foo"); } }
@Test public void parseServiceConfigurationBatching() throws Exception { CacheConfiguration<?, ?> cacheConfiguration = new XmlConfiguration(getClass().getResource("/configs/writebehind-cache.xml")).getCacheConfigurations().get("template1"); DefaultWriteBehindConfiguration writeBehindConfig = findSingletonAmongst(DefaultWriteBehindConfiguration.class, cacheConfiguration.getServiceConfigurations()); assertThat(writeBehindConfig).isNotNull(); assertThat(writeBehindConfig.getConcurrency()).isEqualTo(1); assertThat(writeBehindConfig.getMaxQueueSize()).isEqualTo(10); WriteBehindConfiguration.BatchingConfiguration batchingConfiguration = writeBehindConfig.getBatchingConfiguration(); assertThat(batchingConfiguration).isNotNull(); assertThat(batchingConfiguration.getBatchSize()).isEqualTo(2); assertThat(batchingConfiguration.isCoalescing()).isEqualTo(false); assertThat(batchingConfiguration.getMaxDelay()).isEqualTo(10); assertThat(batchingConfiguration.getMaxDelayUnit()).isEqualTo(TimeUnit.SECONDS); }
WriteBehindConfiguration buildWith(BatchingConfiguration batching) { return new DefaultWriteBehindConfiguration(threadPoolAlias, concurrency, queueSize, batching); }
/** * Builds the {@link WriteBehindConfiguration} * * @return the write behind configuration */ @Override public WriteBehindConfiguration build() { return buildWith(new DefaultBatchingConfiguration(maxDelay, maxDelayUnit, batchSize, coalescing)); } }
@Override public WriteBehindProvider create(ServiceCreationConfiguration<WriteBehindProvider> configuration) { if (configuration == null) { return new Provider(); } else if (configuration instanceof WriteBehindProviderConfiguration) { return new Provider(((WriteBehindProviderConfiguration) configuration).getThreadPoolAlias()); } else { throw new IllegalArgumentException("WriteBehind configuration must not be provided at CacheManager level"); } }
/** * Adds a {@link WriteBehindProviderConfiguration}, that specifies the thread pool to use, to the returned builder. * * @param threadPoolAlias the thread pool alias * @return a new builder with the added configuration * * @see PooledExecutionServiceConfigurationBuilder */ public CacheManagerBuilder<T> withDefaultWriteBehindThreadPool(String threadPoolAlias) { WriteBehindProviderConfiguration config = configBuilder.findServiceByClass(WriteBehindProviderConfiguration.class); if (config == null) { return new CacheManagerBuilder<>(this, configBuilder.addService(new WriteBehindProviderConfiguration(threadPoolAlias))); } else { ConfigurationBuilder builder = configBuilder.removeService(config); return new CacheManagerBuilder<>(this, builder.addService(new WriteBehindProviderConfiguration(threadPoolAlias))); } }