From c941ffb7494a4651a9505574f112c7e525c28f2f Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 25 Mar 2013 08:03:32 +0100 Subject: [PATCH] improve configuration objects --- .../sonia/scm/cache/CacheConfiguration.java | 24 +++---- .../scm/cache/CacheManagerConfiguration.java | 4 +- .../main/java/sonia/scm/cache/GuavaCache.java | 26 +++++-- .../sonia/scm/cache/GuavaCacheManager.java | 2 +- .../scm/cache/NamedCacheConfiguration.java | 71 +++++++++++++++++++ 5 files changed, 102 insertions(+), 25 deletions(-) create mode 100644 scm-webapp/src/main/java/sonia/scm/cache/NamedCacheConfiguration.java diff --git a/scm-webapp/src/main/java/sonia/scm/cache/CacheConfiguration.java b/scm-webapp/src/main/java/sonia/scm/cache/CacheConfiguration.java index 8ea1ace268..a01ca2eccb 100644 --- a/scm-webapp/src/main/java/sonia/scm/cache/CacheConfiguration.java +++ b/scm-webapp/src/main/java/sonia/scm/cache/CacheConfiguration.java @@ -33,6 +33,8 @@ package sonia.scm.cache; //~--- JDK imports ------------------------------------------------------------ +import java.io.Serializable; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; @@ -44,9 +46,14 @@ import javax.xml.bind.annotation.XmlRootElement; */ @XmlRootElement(name = "cache") @XmlAccessorType(XmlAccessType.FIELD) -public class CacheConfiguration +public class CacheConfiguration implements Serializable { + /** Field description */ + private static final long serialVersionUID = -8734373158089010603L; + + //~--- get methods ---------------------------------------------------------- + /** * Method description * @@ -124,17 +131,6 @@ public class CacheConfiguration return maximumWeight; } - /** - * Method description - * - * - * @return - */ - public String getName() - { - return name; - } - /** * Method description * @@ -209,10 +205,6 @@ public class CacheConfiguration @XmlAttribute private Long maximumWeight; - /** Field description */ - @XmlAttribute - private String name; - /** Field description */ @XmlAttribute private Boolean recordStats; diff --git a/scm-webapp/src/main/java/sonia/scm/cache/CacheManagerConfiguration.java b/scm-webapp/src/main/java/sonia/scm/cache/CacheManagerConfiguration.java index 0fb3ecb30d..8d49bdd149 100644 --- a/scm-webapp/src/main/java/sonia/scm/cache/CacheManagerConfiguration.java +++ b/scm-webapp/src/main/java/sonia/scm/cache/CacheManagerConfiguration.java @@ -55,7 +55,7 @@ public class CacheManagerConfiguration * * @return */ - public List getCaches() + public List getCaches() { return caches; } @@ -75,7 +75,7 @@ public class CacheManagerConfiguration /** Field description */ @XmlElement(name = "cache") - private List caches; + private List caches; /** Field description */ @XmlElement(name = "cache") diff --git a/scm-webapp/src/main/java/sonia/scm/cache/GuavaCache.java b/scm-webapp/src/main/java/sonia/scm/cache/GuavaCache.java index 9b23f2d062..8256c93520 100644 --- a/scm-webapp/src/main/java/sonia/scm/cache/GuavaCache.java +++ b/scm-webapp/src/main/java/sonia/scm/cache/GuavaCache.java @@ -64,18 +64,28 @@ public class GuavaCache implements Cache //~--- constructors --------------------------------------------------------- - private String name; - /** * Constructs ... * * * @param configuration */ - public GuavaCache(CacheConfiguration configuration) + public GuavaCache(NamedCacheConfiguration configuration) { - this.name = configuration.getName(); - + this(configuration, configuration.getName()); + } + + /** + * Constructs ... + * + * + * @param configuration + * @param name + */ + public GuavaCache(CacheConfiguration configuration, String name) + { + this.name = name; + if (configuration.getCopyStrategy() != null) { copyStrategy = configuration.getCopyStrategy(); @@ -152,10 +162,11 @@ public class GuavaCache implements Cache @Override public void clear() { - if (logger.isDebugEnabled()) + if (logger.isDebugEnabled()) { logger.debug("clear cache {}", name); } + cache.invalidateAll(); } @@ -277,4 +288,7 @@ public class GuavaCache implements Cache /** Field description */ private CopyStrategy copyStrategy = CopyStrategy.NONE; + + /** Field description */ + private String name; } diff --git a/scm-webapp/src/main/java/sonia/scm/cache/GuavaCacheManager.java b/scm-webapp/src/main/java/sonia/scm/cache/GuavaCacheManager.java index 36fb75e535..58783f411f 100644 --- a/scm-webapp/src/main/java/sonia/scm/cache/GuavaCacheManager.java +++ b/scm-webapp/src/main/java/sonia/scm/cache/GuavaCacheManager.java @@ -118,5 +118,5 @@ public class GuavaCacheManager implements CacheManager private Map cacheMap = Maps.newConcurrentMap(); /** Field description */ - private CacheConfiguration defaultConfiguration; + private NamedCacheConfiguration defaultConfiguration; } diff --git a/scm-webapp/src/main/java/sonia/scm/cache/NamedCacheConfiguration.java b/scm-webapp/src/main/java/sonia/scm/cache/NamedCacheConfiguration.java new file mode 100644 index 0000000000..162a449b1d --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/cache/NamedCacheConfiguration.java @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. 2. Redistributions in + * binary form must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. 3. Neither the name of SCM-Manager; + * nor the names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.cache; + +//~--- JDK imports ------------------------------------------------------------ + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * + * @author Sebastian Sdorra + */ +@XmlRootElement(name = "cache") +@XmlAccessorType(XmlAccessType.FIELD) +public class NamedCacheConfiguration extends CacheConfiguration +{ + + /** Field description */ + private static final long serialVersionUID = -624795324874828475L; + + //~--- get methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @return + */ + public String getName() + { + return name; + } + + //~--- fields --------------------------------------------------------------- + + /** Field description */ + @XmlAttribute + private String name; +}