/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.jooby.internal.ehcache; import net.sf.ehcache.config.Configuration; import net.sf.ehcache.config.DiskStoreConfiguration; import net.sf.ehcache.config.FactoryConfiguration; import net.sf.ehcache.config.SizeOfPolicyConfiguration; import net.sf.ehcache.config.TerracottaClientConfiguration; import com.typesafe.config.Config; public class ConfigurationBuilder extends EhCacheBuilder { private Configuration eh; public ConfigurationBuilder() { this.eh = new Configuration(); } public Configuration build(final Config config) { sint("ehcache", config, "defaultTransactionTimeoutInSeconds", eh::setDefaultTransactionTimeoutInSeconds); siseconds("ehcache", config, "defaultTransactionTimeout", eh::setDefaultTransactionTimeoutInSeconds); sbool("ehcache", config, "dynamicConfig", eh::setDynamicConfig); sbytes("ehcache", config, "maxBytesLocalDisk", eh::setMaxBytesLocalDisk); sbytes("ehcache", config, "maxBytesLocalHeap", eh::setMaxBytesLocalHeap); sbytes("ehcache", config, "maxBytesLocalOffHeap", eh::setMaxBytesLocalOffHeap); sstr("ehcache", config, "monitoring", eh::setMonitoring); sstr("ehcache", config, "name", eh::setName); eh.setUpdateCheck(false); sconf("ehcache", config, "cacheManagerEventListenerFactory", this::cacheManagerEventListenerFactory); sconf("ehcache", config, "cacheManagerPeerListenerFactory", this::cacheManagerPeerListenerFactory); sconf("ehcache", config, "cacheManagerPeerProviderFactory", this::cacheManagerPeerProviderFactory); sconf("ehcache", config, "diskStore", this::diskStore); sconf("ehcache", config, "sizeOfPolicy", this::sizeOfPolicy); sconf("ehcache", config, "terracottaConfig", this::terracotaConfig); sconf("ehcache", config, "transactionManagerLookup", this::transactionManagerLookup); return eh; } private void cacheManagerEventListenerFactory(final Config conf) { eh.addCacheManagerEventListenerFactory( newFactory("ehcache.cacheManagerEventListenerFactory", conf, FactoryConfiguration::new) ); } private void cacheManagerPeerListenerFactory(final Config conf) { if (conf.hasPath("class")) { eh.addCacheManagerPeerListenerFactory( newFactory("ehcache.cacheManagerPeerListenerFactory", conf, FactoryConfiguration::new) ); } else { each(conf, (name, c) -> { eh.addCacheManagerPeerListenerFactory( newFactory("ehcache.cacheManagerPeerListenerFactory." + name, c, FactoryConfiguration::new) ); }); } } private void cacheManagerPeerProviderFactory(final Config conf) { if (conf.hasPath("class")) { eh.addCacheManagerPeerProviderFactory( newFactory("ehcache.cacheManagerPeerProviderFactory", conf, FactoryConfiguration::new) ); } else { each(conf, (name, c) -> { eh.addCacheManagerPeerProviderFactory( newFactory("ehcache.cacheManagerPeerProviderFactory." + name, c, FactoryConfiguration::new) ); }); } } private void diskStore(final Config conf) { DiskStoreConfiguration diskStore = new DiskStoreConfiguration(); diskStore.setPath(conf.getString("path")); eh.addDiskStore(diskStore); } private void sizeOfPolicy(final Config conf) { SizeOfPolicyConfiguration sizeOfPolicy = sizeOfPolicy("ehcache.sizeOfPolicy", conf); eh.addSizeOfPolicy(sizeOfPolicy); } private void terracotaConfig(final Config config) { TerracottaClientConfiguration terracota = new TerracottaClientConfiguration(); sbool("ehcache.terracottaConfig", config, "rejoin", terracota::setRejoin); sstr("ehcache.terracottaConfig", config, "url", terracota::setUrl); sbool("ehcache.terracottaConfig", config, "wanEnabledTSA", terracota::setWanEnabledTSA); eh.addTerracottaConfig(terracota); } private void transactionManagerLookup(final Config conf) { eh.addTransactionManagerLookup( newFactory("ehcache.transactionManagerLookup", conf, FactoryConfiguration::new) ); } }