Author: lindner Date: Tue Oct 27 21:34:20 2009 New Revision: 830351 URL: http://svn.apache.org/viewvc?rev=830351&view=rev Log: SHINDIG-1199 | Patch from Jon Weygandt | OpenSocialI18NGadgetRewriter's creation of JsLibrary should be consistent with JsFeatureLoader
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriter.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriterTest.java Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java?rev=830351&r1=830350&r2=830351&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java Tue Oct 27 21:34:20 2009 @@ -21,6 +21,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.inject.Inject; +import com.google.inject.Singleton; import org.apache.shindig.common.util.ResourceLoader; import org.apache.shindig.common.xml.XmlException; @@ -53,6 +54,7 @@ * loader.loadFeatures("res://features/", registry); * loader.loadFeatures("/home/user/my-features/", registry); */ +...@singleton public class JsFeatureLoader { public final static char FILE_SEPARATOR = ','; @@ -316,7 +318,7 @@ } } - protected JsLibrary createJsLibrary(JsLibrary.Type type, String content, String feature, + public JsLibrary createJsLibrary(JsLibrary.Type type, String content, String feature, HttpFetcher fetcher) throws GadgetException { return JsLibrary.create(type, content, feature, fetcher); } Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriter.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriter.java?rev=830351&r1=830350&r2=830351&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriter.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriter.java Tue Oct 27 21:34:20 2009 @@ -22,6 +22,7 @@ import org.apache.shindig.common.xml.DomUtil; import org.apache.shindig.gadgets.Gadget; import org.apache.shindig.gadgets.GadgetException; +import org.apache.shindig.gadgets.JsFeatureLoader; import org.apache.shindig.gadgets.JsLibrary; import org.apache.shindig.gadgets.rewrite.GadgetRewriter; import org.apache.shindig.gadgets.rewrite.MutableContent; @@ -29,10 +30,12 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; +import com.google.inject.Inject; + import java.io.IOException; -import java.util.HashMap; import java.util.Locale; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * Produce data constants that are needed by the opensocial-i18n @@ -41,8 +44,14 @@ public class OpenSocialI18NGadgetRewriter implements GadgetRewriter { private static final String I18N_FEATURE_NAME = "opensocial-i18n"; private static final String DATA_PATH = "features/i18n/data/"; - private Map<Locale, String> i18nConstantsCache = new HashMap<Locale, String>(); + private Map<Locale, String> i18nConstantsCache = new ConcurrentHashMap<Locale, String>(); + private JsFeatureLoader jsFeatureLoader; + @Inject + public OpenSocialI18NGadgetRewriter(JsFeatureLoader jsFeatureLoader) { + this.jsFeatureLoader = jsFeatureLoader; + } + public void rewrite(Gadget gadget, MutableContent mutableContent) { // Don't touch sanitized gadgets. if (gadget.sanitizeOutput()) { @@ -73,10 +82,10 @@ } else { // load gadgets.i18n.DateTimeConstants and gadgets.i18n.NumberFormatConstants String localeName = getLocaleNameForLoadingI18NConstants(locale); - JsLibrary dateTimeConstants = JsLibrary.create(JsLibrary.Type.RESOURCE, + JsLibrary dateTimeConstants = jsFeatureLoader.createJsLibrary(JsLibrary.Type.RESOURCE, DATA_PATH + "DateTimeConstants__" + localeName + ".js", "opensocial-i18n", null); - JsLibrary numberConstants = JsLibrary.create(JsLibrary.Type.RESOURCE, + JsLibrary numberConstants = jsFeatureLoader.createJsLibrary(JsLibrary.Type.RESOURCE, DATA_PATH + "NumberFormatConstants__" + localeName + ".js", "opensocial-i18n", null); inlineJs.append(dateTimeConstants.getContent()) @@ -94,7 +103,7 @@ String country = locale.getCountry(); if (!language.equalsIgnoreCase("ALL")) { try { - String content = attemptToLoadResource(language); + attemptToLoadResource(language); localeName = language; } catch (IOException e) { } @@ -102,7 +111,7 @@ if (!country.equalsIgnoreCase("ALL")) { try { - String content = attemptToLoadResource(localeName + '_' + country); + attemptToLoadResource(localeName + '_' + country); localeName += '_' + country; } catch (IOException e) { } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriterTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriterTest.java?rev=830351&r1=830350&r2=830351&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriterTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/OpenSocialI18NGadgetRewriterTest.java Tue Oct 27 21:34:20 2009 @@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals; -import org.apache.shindig.common.util.ResourceLoader; +import org.apache.shindig.gadgets.JsFeatureLoader; import org.junit.Before; import org.junit.Test; @@ -111,6 +111,7 @@ private static class FakeOpenSocialI18NGadgetRewriter extends OpenSocialI18NGadgetRewriter { private Map<String, String> resources = new HashMap<String,String>(); public FakeOpenSocialI18NGadgetRewriter() { + super(new JsFeatureLoader(null)); resources.put("features/i18n/data/DateTimeConstants__en.js", "content for en"); resources.put("features/i18n/data/DateTimeConstants__en_US.js", "content for en_US"); resources.put("features/i18n/data/DateTimeConstants__zh.js", "content for zh");