Index: src/main/java/org/xwiki/cache/config/CacheConfiguration.java =================================================================== --- src/main/java/org/xwiki/cache/config/CacheConfiguration.java (revision 25396) +++ src/main/java/org/xwiki/cache/config/CacheConfiguration.java (working copy) @@ -21,6 +21,8 @@ import java.util.HashMap; +import org.xwiki.cache.eviction.EntryEvictionConfiguration; + /** * Contains all informations used to create the cache. *
@@ -39,11 +41,47 @@ * Since this class is a Map it needs to be serializable and thus have a unique id for Serialization. */ private static final long serialVersionUID = -7298684313672163845L; - + /** * The configuration identifier. */ private String configurationId; + + /** + * Creates empty CacheConfiguration instance. + */ + public CacheConfiguration() { + } + + /** + * Creates CacheConfiguration instance with given eviction configuration. + * + * @param evictionConfiguration describes details of entry eviction method. + */ + public CacheConfiguration(EntryEvictionConfiguration evictionConfiguration) { + this(evictionConfiguration, null); + } + + /** + * Creates CacheConfiguration instance with given eviction configuration + * and id. + * + * @param evictionConfiguration describes details of entry eviction method. + * @param configurationId the configuration identifier. + */ + public CacheConfiguration(EntryEvictionConfiguration evictionConfiguration, String configurationId) { + setEvictionConfiguration(evictionConfiguration); + setConfigurationId(configurationId); + } + + /** + * Sets details of entry eviction method. + * + * @param evictionConfiguration describes details of entry eviction method. + */ + private void setEvictionConfiguration(EntryEvictionConfiguration evictionConfiguration) { + put(EntryEvictionConfiguration.CONFIGURATIONID, evictionConfiguration); + } /** * @param configurationId the configuration identifier. Index: src/main/java/org/xwiki/cache/eviction/LRUEvictionConfiguration.java =================================================================== --- src/main/java/org/xwiki/cache/eviction/LRUEvictionConfiguration.java (revision 25396) +++ src/main/java/org/xwiki/cache/eviction/LRUEvictionConfiguration.java (working copy) @@ -37,7 +37,19 @@ */ public LRUEvictionConfiguration() { - setAlgotithm(Algorithm.LRU); + setAlgorithm(Algorithm.LRU); + } + + /** + * Create a new EntryEvictionConfiguration with given capacity, + * eviction will be based on LRU algorithm. + * + * @param maxEntries the maximum entries the cache can contain. + */ + public LRUEvictionConfiguration(int maxEntries) + { + this(); + setMaxEntries(maxEntries); } /** Index: src/main/java/org/xwiki/cache/eviction/EntryEvictionConfiguration.java =================================================================== --- src/main/java/org/xwiki/cache/eviction/EntryEvictionConfiguration.java (revision 25396) +++ src/main/java/org/xwiki/cache/eviction/EntryEvictionConfiguration.java (working copy) @@ -76,7 +76,7 @@ /** * @param mode the ordering/storing algorithm used by the cache. */ - public void setAlgotithm(Algorithm mode) + public void setAlgorithm(Algorithm mode) { this.mode = mode; }