/** * 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))); } }
@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"); } }
@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 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"); }
/** * 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))); } }
@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"); } }