You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2007/11/05 20:39:50 UTC
svn commit: r592131 - in /wicket/trunk/jdk-1.4/wicket/src:
main/java/org/apache/wicket/Localizer.java
test/java/org/apache/wicket/CachingDisabledLocalizerTest.java
test/java/org/apache/wicket/LocalizerTest.java
Author: jdonnerstag
Date: Mon Nov 5 11:39:49 2007
New Revision: 592131
URL: http://svn.apache.org/viewvc?rev=592131&view=rev
Log:
wicket-1128: Make disabling the Localizer cache more obvious
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/CachingDisabledLocalizerTest.java (with props)
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Localizer.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/LocalizerTest.java
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Localizer.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Localizer.java?rev=592131&r1=592130&r2=592131&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Localizer.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Localizer.java Mon Nov 5 11:39:49 2007
@@ -51,12 +51,12 @@
{
private static final Logger logger = LoggerFactory.getLogger(Localizer.class);
- /** Cache properties */
- private Map cache = new ConcurrentHashMap();
-
/** ConcurrentHashMap does not allow null values */
private static final String NULL_VALUE = "<null-value>";
+ /** Cache properties */
+ private Map cache = newCache();
+
/**
* Create the utils instance class backed by the configuration information contained within the
* supplied application object.
@@ -70,7 +70,10 @@
*/
public final void clearCache()
{
- cache = new ConcurrentHashMap();
+ if (cache != null)
+ {
+ cache = new ConcurrentHashMap();
+ }
}
/**
@@ -182,12 +185,11 @@
if (!addedToPage)
{
- logger
- .warn(
- "Tried to retrieve a localized string for a component that has not yet been added to the page. "
- + "This can sometimes lead to an invalid or no localized resource returned. "
- + "Make sure you are not calling Component#getString() inside your Component's constructor. "
- + "Offending component: {}", component);
+ logger.warn(
+ "Tried to retrieve a localized string for a component that has not yet been added to the page. "
+ + "This can sometimes lead to an invalid or no localized resource returned. "
+ + "Make sure you are not calling Component#getString() inside your Component's constructor. "
+ + "Offending component: {}", component);
}
}
@@ -197,13 +199,13 @@
// If this component is not yet added to page we do not want to check
// cache as we can generate an invalid cache key
- if (addedToPage)
+ if ((cache != null) && addedToPage)
{
cacheKey = getCacheKey(key, component);
}
// Value not found are cached as well (value = null)
- if (cacheKey != null && cache.containsKey(cacheKey))
+ if ((cacheKey != null) && cache.containsKey(cacheKey))
{
string = getFromCache(cacheKey);
}
@@ -257,8 +259,8 @@
message.append(component.getPageRelativePath());
message.append(" [class=").append(component.getClass().getName()).append("]");
}
- throw new MissingResourceException(message.toString(), (component != null ? component
- .getClass().getName() : ""), key);
+ throw new MissingResourceException(message.toString(), (component != null
+ ? component.getClass().getName() : ""), key);
}
return "[Warning: String resource for '" + key + "' not found]";
@@ -348,5 +350,32 @@
return PropertyVariableInterpolator.interpolate(string, model.getObject());
}
return string;
+ }
+
+ /**
+ * By default the cache is enabled. Disabling the cache will disable it and clear the cache.
+ *
+ * @param value
+ */
+ public final void setEnableCache(boolean value)
+ {
+ if (value == false)
+ {
+ cache = null;
+ }
+ else if (cache == null)
+ {
+ cache = newCache();
+ }
+ }
+
+ /**
+ * Create a new cache
+ *
+ * @return
+ */
+ private Map newCache()
+ {
+ return new ConcurrentHashMap();
}
}
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/CachingDisabledLocalizerTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/CachingDisabledLocalizerTest.java?rev=592131&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/CachingDisabledLocalizerTest.java (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/CachingDisabledLocalizerTest.java Mon Nov 5 11:39:49 2007
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket;
+
+
+/**
+ * Test cases for the <code>Localizer</code> class.
+ *
+ * @author Chris Turner
+ */
+public class CachingDisabledLocalizerTest extends LocalizerTest
+{
+ /**
+ * Create the test case.
+ *
+ * @param message
+ * The test name
+ */
+ public CachingDisabledLocalizerTest(String message)
+ {
+ super(message);
+ }
+
+ /**
+ *
+ * @throws Exception
+ */
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ localizer.setEnableCache(false);
+ }
+}
Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/CachingDisabledLocalizerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/LocalizerTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/LocalizerTest.java?rev=592131&r1=592130&r2=592131&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/LocalizerTest.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/LocalizerTest.java Mon Nov 5 11:39:49 2007
@@ -69,7 +69,7 @@
private IResourceSettings settings;
- private Localizer localizer;
+ protected Localizer localizer;
/**
* Create the test case.
@@ -98,8 +98,8 @@
*/
public void testGetStringValidString()
{
- Assert.assertEquals("Expected string should be returned", "This is a test", localizer
- .getString("test.string", null, null, "DEFAULT"));
+ Assert.assertEquals("Expected string should be returned", "This is a test",
+ localizer.getString("test.string", null, null, "DEFAULT"));
}
/**
@@ -109,7 +109,7 @@
{
settings.setUseDefaultOnMissingResource(true);
Assert.assertEquals("Default string should be returned", "DEFAULT", localizer.getString(
- "unknown.string", null, null, "DEFAULT"));
+ "unknown.string", null, null, "DEFAULT"));
}
/**
@@ -121,8 +121,8 @@
settings.setThrowExceptionOnMissingResource(false);
Assert.assertEquals("Wrapped key should be returned on no default",
- "[Warning: String resource for 'unknown.string' not found]", localizer.getString(
- "unknown.string", null, null, null));
+ "[Warning: String resource for 'unknown.string' not found]", localizer.getString(
+ "unknown.string", null, null, null));
}
/**
@@ -133,8 +133,8 @@
settings.setUseDefaultOnMissingResource(false);
settings.setThrowExceptionOnMissingResource(false);
Assert.assertEquals("Wrapped key should be returned on not using default and no exception",
- "[Warning: String resource for 'unknown.string' not found]", localizer.getString(
- "unknown.string", null, null, "DEFAULT"));
+ "[Warning: String resource for 'unknown.string' not found]", localizer.getString(
+ "unknown.string", null, null, "DEFAULT"));
}
/**
@@ -163,8 +163,8 @@
ValueMap vm = new ValueMap();
vm.put("user", "John Doe");
Model model = new Model(vm);
- Assert.assertEquals("Property substitution should occur", "Welcome, John Doe", localizer
- .getString("test.substitute", null, model, null));
+ Assert.assertEquals("Property substitution should occur", "Welcome, John Doe",
+ localizer.getString("test.substitute", null, model, null));
}
/**
@@ -183,7 +183,7 @@
Session.get().setLocale(Locale.ENGLISH);
MyMockPage page = new MyMockPage();
Application.get().getResourceSettings().addStringResourceLoader(
- new ComponentStringResourceLoader());
+ new ComponentStringResourceLoader());
Localizer localizer = Application.get().getResourceSettings().getLocalizer();
assertEquals("value 1", localizer.getString("null", page.drop1));
@@ -203,13 +203,13 @@
HashMap model = new HashMap();
model.put("user", "juergen");
- Assert.assertEquals("Expected string should be returned", "Welcome, juergen", localizer
- .getString("test.substitute", null, new PropertyModel(model, null),
- "DEFAULT {user}"));
-
- Assert.assertEquals("Expected string should be returned", "DEFAULT juergen", localizer
- .getString("test.substituteDoesNotExist", null, new PropertyModel(model, null),
- "DEFAULT ${user}"));
+ Assert.assertEquals("Expected string should be returned", "Welcome, juergen",
+ localizer.getString("test.substitute", null, new PropertyModel(model, null),
+ "DEFAULT {user}"));
+
+ Assert.assertEquals("Expected string should be returned", "DEFAULT juergen",
+ localizer.getString("test.substituteDoesNotExist", null,
+ new PropertyModel(model, null), "DEFAULT ${user}"));
}
/**
@@ -232,8 +232,8 @@
// should work properly in a component constructor (without parent)
// as well
- Assert.assertEquals("Expected string should be returned", "This is a test", localizer
- .getString("test.string", this, "DEFAULT"));
+ Assert.assertEquals("Expected string should be returned", "This is a test",
+ localizer.getString("test.string", this, "DEFAULT"));
}
}