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.",