From cf0bfb2ee109d7cb38063aa2984b46aa8eef41fc Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 2 Apr 2012 10:28:26 +0000 Subject: [PATCH] cache i18n values git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1308291 13f79535-47bb-0310-9956-ffa450edef68 --- .../rest/services/DefaultCommonServices.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultCommonServices.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultCommonServices.java index 4a7940e0c..b8fc56e43 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultCommonServices.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultCommonServices.java @@ -29,6 +29,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.ws.rs.core.Response; import java.io.ByteArrayInputStream; @@ -36,6 +37,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Properties; +import java.util.concurrent.ConcurrentHashMap; /** * @author Olivier Lamy @@ -52,9 +54,21 @@ public class DefaultCommonServices @Inject private UtilServices utilServices; + private Map cachei18n = new ConcurrentHashMap(); + @Inject protected CronExpressionValidator cronExpressionValidator; + @PostConstruct + public void init() + throws ArchivaRestServiceException + { + + // preload i18n en and fr + getAllI18nResources( "en" ); + getAllI18nResources( "fr" ); + } + public String getI18nResources( String locale ) throws ArchivaRestServiceException { @@ -133,6 +147,13 @@ public class DefaultCommonServices public String getAllI18nResources( String locale ) throws ArchivaRestServiceException { + + String cachedi18n = cachei18n.get( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ) ); + if ( cachedi18n != null ) + { + return cachedi18n; + } + try { @@ -140,7 +161,9 @@ public class DefaultCommonServices StringBuilder resourceName = new StringBuilder( RESOURCE_NAME ); loadResource( all, resourceName, locale ); - return fromProperties( all ); + String i18n = fromProperties( all ); + cachei18n.put( StringUtils.isEmpty( locale ) ? "en" : StringUtils.lowerCase( locale ), i18n ); + return i18n; } catch ( IOException e ) { -- 2.39.5