You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2008/03/03 21:23:50 UTC
svn commit: r633261 - in /tiles/framework/trunk/tiles-core/src:
main/java/org/apache/tiles/definition/ test/java/org/apache/tiles/definition/
Author: apetrelli
Date: Mon Mar 3 12:23:38 2008
New Revision: 633261
URL: http://svn.apache.org/viewvc?rev=633261&view=rev
Log:
TILES-89
Deprecated DefinitionsFactory.readDefinitions.
Modified code and tests accordingly.
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestReloadableDefinitionsFactory.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java?rev=633261&r1=633260&r2=633261&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactory.java Mon Mar 3 12:23:38 2008
@@ -100,7 +100,9 @@
* @return The read definitions.
* @throws DefinitionsFactoryException if an error occurs reading the
* sources.
+ * @deprecated Let the Definitions Factory use it.
*/
+ @Deprecated
Definitions readDefinitions()
throws DefinitionsFactoryException;
}
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java?rev=633261&r1=633260&r2=633261&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/UrlDefinitionsFactory.java Mon Mar 3 12:23:38 2008
@@ -127,7 +127,7 @@
localeResolver = new DefaultLocaleResolver();
}
localeResolver.init(params);
- definitions = readDefinitions();
+ loadDefinitions();
}
/**
@@ -272,24 +272,12 @@
* @return The definitions holder object, filled with base definitions.
* @throws DefinitionsFactoryException if an error occurs reading the
* sources.
+ * @deprecated Let the Definitions Factory use it.
*/
+ @Deprecated
public Definitions readDefinitions()
throws DefinitionsFactoryException {
- Definitions definitions = createDefinitions();
- try {
- for (Object source1 : sources) {
- URL source = (URL) source1;
- URLConnection connection = source.openConnection();
- connection.connect();
- lastModifiedDates.put(source.toExternalForm(),
- connection.getLastModified());
- Map<String, Definition> defsMap = reader
- .read(connection.getInputStream());
- definitions.addDefinitions(defsMap);
- }
- } catch (IOException e) {
- throw new DefinitionsFactoryException("I/O error accessing source.", e);
- }
+ loadDefinitions();
return definitions;
}
@@ -347,6 +335,38 @@
}
/**
+ * Creates a {@link Definitions} set by reading
+ * configuration data from the applied sources.
+ *
+ * @throws DefinitionsFactoryException if an error occurs reading the
+ * sources.
+ * @since 2.1.0
+ */
+ protected synchronized void loadDefinitions()
+ throws DefinitionsFactoryException {
+ if (definitions == null) {
+ definitions = createDefinitions();
+ } else {
+ definitions.reset();
+ }
+
+ try {
+ for (Object source1 : sources) {
+ URL source = (URL) source1;
+ URLConnection connection = source.openConnection();
+ connection.connect();
+ lastModifiedDates.put(source.toExternalForm(),
+ connection.getLastModified());
+ Map<String, Definition> defsMap = reader
+ .read(connection.getInputStream());
+ definitions.addDefinitions(defsMap);
+ }
+ } catch (IOException e) {
+ throw new DefinitionsFactoryException("I/O error accessing source.", e);
+ }
+ }
+
+ /**
* Calculate the postfixes along the search path from the base bundle to the
* bundle specified by baseName and locale.
* Method copied from java.util.ResourceBundle
@@ -402,13 +422,10 @@
/** {@inheritDoc} */
- public void refresh() throws DefinitionsFactoryException {
+ public synchronized void refresh() throws DefinitionsFactoryException {
LOG.debug("Updating Tiles definitions. . .");
- synchronized (definitions) {
- Definitions newDefs = readDefinitions();
- definitions.reset();
- definitions.addDefinitions(newDefs.getBaseDefinitions());
- }
+ processedLocales.clear();
+ loadDefinitions();
}
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestReloadableDefinitionsFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestReloadableDefinitionsFactory.java?rev=633261&r1=633260&r2=633261&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestReloadableDefinitionsFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestReloadableDefinitionsFactory.java Mon Mar 3 12:23:38 2008
@@ -30,6 +30,10 @@
import java.net.URL;
import java.util.HashMap;
+import org.apache.tiles.Definition;
+import org.apache.tiles.context.TilesRequestContext;
+import org.easymock.EasyMock;
+
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
@@ -129,16 +133,18 @@
writer.write(xml);
writer.close();
- factory.init(new HashMap<String, String>());
factory.addSource(url);
+ factory.init(new HashMap<String, String>());
+ TilesRequestContext context = EasyMock.createMock(TilesRequestContext.class);
+ EasyMock.expect(context.getSessionScope()).andReturn(
+ new HashMap<String, Object>()).anyTimes();
+ EasyMock.expect(context.getRequestLocale()).andReturn(null).anyTimes();
+ EasyMock.replay(context);
- // Parse files.
- Definitions definitions = factory.readDefinitions();
-
- assertNotNull("rewrite.test definition not found.",
- definitions.getDefinition("rewrite.test"));
+ Definition definition = factory.getDefinition("rewrite.test", context);
+ assertNotNull("rewrite.test definition not found.", definition);
assertEquals("Incorrect initial template value", "/test.jsp",
- definitions.getDefinition("rewrite.test").getTemplate());
+ definition.getTemplate());
ReloadableDefinitionsFactory reloadable = (ReloadableDefinitionsFactory) factory;
assertEquals("Factory should be fresh.", false,
@@ -167,10 +173,10 @@
assertEquals("Factory should be stale.", true,
reloadable.refreshRequired());
- definitions = factory.readDefinitions();
- assertNotNull("rewrite.test definition not found.",
- definitions.getDefinition("rewrite.test"));
+ reloadable.refresh();
+ definition = factory.getDefinition("rewrite.test", context);
+ assertNotNull("rewrite.test definition not found.", definition);
assertEquals("Incorrect initial template value", "/newtest.jsp",
- definitions.getDefinition("rewrite.test").getTemplate());
+ definition.getTemplate());
}
}
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java?rev=633261&r1=633260&r2=633261&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/TestUrlDefinitionsFactory.java Mon Mar 3 12:23:38 2008
@@ -111,13 +111,13 @@
"org/apache/tiles/config/defs3.xml");
assertNotNull("Could not load defs3 file.", url3);
- factory.init(Collections.EMPTY_MAP);
factory.addSource(url1);
factory.addSource(url2);
factory.addSource(url3);
+ factory.init(Collections.EMPTY_MAP);
// Parse files.
- Definitions definitions = factory.readDefinitions();
+ Definitions definitions = factory.getDefinitions();
assertNotNull("test.def1 definition not found.", definitions.getDefinition("test.def1"));
assertNotNull("test.def2 definition not found.", definitions.getDefinition("test.def2"));
@@ -245,13 +245,13 @@
"org/apache/tiles/config/defs3.xml");
assertNotNull("Could not load defs3 file.", url3);
- factory.init(Collections.EMPTY_MAP);
factory.addSource(url1);
factory.addSource(url2);
factory.addSource(url3);
+ factory.init(Collections.EMPTY_MAP);
// Parse files.
- Definitions definitions = factory.readDefinitions();
+ Definitions definitions = factory.getDefinitions();
factory.addDefinitions(definitions,
new MockOnlyLocaleTilesContext(Locale.US));
factory.addDefinitions(definitions,
@@ -288,11 +288,11 @@
"org/apache/tiles/config/defs1.xml");
assertNotNull("Could not load defs1 file.", url1);
- factory.init(Collections.EMPTY_MAP);
factory.addSource(url1);
+ factory.init(Collections.EMPTY_MAP);
// Parse files.
- Definitions definitions = factory.readDefinitions();
+ Definitions definitions = factory.getDefinitions();
TilesRequestContext tilesContext =
new MockOnlyLocaleTilesContext(Locale.US);
assertFalse("Locale should not be processed.",