create static read method for GuavaCacheConfigurationReader

This commit is contained in:
Sebastian Sdorra
2013-03-25 11:07:47 +01:00
parent 0ea4b43a58
commit f8bb0cf109
2 changed files with 71 additions and 50 deletions

View File

@@ -85,7 +85,7 @@ public class GuavaCacheConfigurationReader
* Constructs ...
*
*/
public GuavaCacheConfigurationReader()
private GuavaCacheConfigurationReader()
{
try
{
@@ -107,54 +107,9 @@ public class GuavaCacheConfigurationReader
*
* @return
*/
public GuavaCacheManagerConfiguration read()
public static GuavaCacheManagerConfiguration read()
{
URL defaultConfigUrl = getDefaultResource();
if (defaultConfigUrl == null)
{
throw new IllegalStateException(
"could not find default cache configuration");
}
GuavaCacheManagerConfiguration config = readConfiguration(defaultConfigUrl,
true);
Iterator<URL> it = getModuleResources();
while (it.hasNext())
{
GuavaCacheManagerConfiguration moduleConfig =
readConfiguration(it.next(), false);
if (moduleConfig != null)
{
config = merge(config, moduleConfig);
}
}
File manualFile = getManualFileResource();
if (manualFile.exists())
{
try
{
GuavaCacheManagerConfiguration manualConfig =
readConfiguration(manualFile.toURI().toURL(), false);
config = merge(config, manualConfig);
}
catch (MalformedURLException ex)
{
logger.error("malformed url", ex);
}
}
else
{
logger.warn("could not find manual configuration at {}", manualFile);
}
return config;
return new GuavaCacheConfigurationReader().doRead();
}
//~--- get methods ----------------------------------------------------------
@@ -222,6 +177,62 @@ public class GuavaCacheConfigurationReader
return map;
}
/**
* Method description
*
*
* @return
*/
private GuavaCacheManagerConfiguration doRead()
{
URL defaultConfigUrl = getDefaultResource();
if (defaultConfigUrl == null)
{
throw new IllegalStateException(
"could not find default cache configuration");
}
GuavaCacheManagerConfiguration config = readConfiguration(defaultConfigUrl,
true);
Iterator<URL> it = getModuleResources();
while (it.hasNext())
{
GuavaCacheManagerConfiguration moduleConfig =
readConfiguration(it.next(), false);
if (moduleConfig != null)
{
config = merge(config, moduleConfig);
}
}
File manualFile = getManualFileResource();
if (manualFile.exists())
{
try
{
GuavaCacheManagerConfiguration manualConfig =
readConfiguration(manualFile.toURI().toURL(), false);
config = merge(config, manualConfig);
}
catch (MalformedURLException ex)
{
logger.error("malformed url", ex);
}
}
else
{
logger.warn("could not find manual configuration at {}", manualFile);
}
return config;
}
/**
* Method description
*

View File

@@ -33,6 +33,7 @@ package sonia.scm.cache;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
import com.google.inject.Singleton;
@@ -67,9 +68,18 @@ public class GuavaCacheManager implements CacheManager
*/
public GuavaCacheManager()
{
GuavaCacheConfigurationReader reader = new GuavaCacheConfigurationReader();
GuavaCacheManagerConfiguration config = reader.read();
this(GuavaCacheConfigurationReader.read());
}
/**
* Constructs ...
*
*
* @param config
*/
@VisibleForTesting
protected GuavaCacheManager(GuavaCacheManagerConfiguration config)
{
defaultConfiguration = config.getDefaultCache();
for (GuavaNamedCacheConfiguration ncc : config.getCaches())