You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by nl...@apache.org on 2012/03/06 21:44:31 UTC

svn commit: r1297705 [1/3] - in /tiles/framework/trunk: tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/ tiles-parent/tiles-core/src/main/java/org/apache/tiles/factory/ tiles-parent/tiles-core/src/main/java/org/apache/tiles/util/ ...

Author: nlebas
Date: Tue Mar  6 20:44:30 2012
New Revision: 1297705

URL: http://svn.apache.org/viewvc?rev=1297705&view=rev
Log:
Created a new interface ApplicationResource to replace URLs in ApplicationContext.
Moved all l10n postfix management into PostfixedApplicationResource.
l10n is now a feature of the request API.

Added:
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationResource.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/locale/
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/locale/LocaleUtil.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/locale/PostfixedApplicationResource.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/locale/URLApplicationResource.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/locale/
    tiles/framework/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/locale/LocaleUtilTest.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/locale/PostfixedApplicationResourceTest.java
Removed:
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/URLReader.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/util/LocaleUtil.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/util/URLUtil.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/util/LocaleUtilTest.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/util/URLUtilTest.java
Modified:
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAO.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAOTest.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAOTest.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
    tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
    tiles/framework/trunk/tiles-parent/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
    tiles/framework/trunk/tiles-parent/tiles-extras/src/main/java/org/apache/tiles/extras/module/ModularTilesInitializer.java
    tiles/framework/trunk/tiles-parent/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
    tiles/framework/trunk/tiles-parent/tiles-test-pom/tiles-test-alt/src/main/java/org/apache/tiles/test/alt/TestAlternateTilesContainerFactory.java
    tiles/framework/trunk/tiles-parent/tiles-test-pom/tiles-test-common/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
    tiles/framework/trunk/tiles-parent/tiles-test-pom/tiles-test-db/src/main/java/org/apache/tiles/test/db/LocaleDbDefinitionDAO.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContext.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextWrapper.java
    tiles/framework/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationContextWrapperTest.java
    tiles/framework/trunk/tiles-request/tiles-request-mustache/src/main/java/org/apache/tiles/request/render/MustacheRenderer.java
    tiles/framework/trunk/tiles-request/tiles-request-mustache/src/test/java/org/apache/tiles/request/render/MustacheRendererTest.java
    tiles/framework/trunk/tiles-request/tiles-request-portlet-wildcard/src/main/java/org/apache/tiles/request/portlet/wildcard/WildcardPortletApplicationContext.java
    tiles/framework/trunk/tiles-request/tiles-request-portlet-wildcard/src/test/java/org/apache/tiles/request/portlet/wildcard/WildcardPortletApplicationContextTest.java
    tiles/framework/trunk/tiles-request/tiles-request-portlet/src/main/java/org/apache/tiles/request/portlet/PortletApplicationContext.java
    tiles/framework/trunk/tiles-request/tiles-request-portlet/src/test/java/org/apache/tiles/request/portlet/PortletApplicationContextTest.java
    tiles/framework/trunk/tiles-request/tiles-request-servlet-wildcard/src/main/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContext.java
    tiles/framework/trunk/tiles-request/tiles-request-servlet-wildcard/src/test/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContextTest.java
    tiles/framework/trunk/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletApplicationContext.java
    tiles/framework/trunk/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletApplicationContextTest.java

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java Tue Mar  6 20:44:30 2012
@@ -24,8 +24,7 @@ package org.apache.tiles.definition.dao;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
@@ -36,6 +35,8 @@ import org.apache.tiles.Definition;
 import org.apache.tiles.definition.DefinitionsFactoryException;
 import org.apache.tiles.definition.DefinitionsReader;
 import org.apache.tiles.definition.RefreshMonitor;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * @since 2.1.0
  */
 public abstract class BaseLocaleUrlDefinitionDAO implements
-        DefinitionDAO<Locale>, RefreshMonitor, URLReader {
+        DefinitionDAO<Locale>, RefreshMonitor {
 
     /**
      * The logging object.
@@ -60,7 +61,7 @@ public abstract class BaseLocaleUrlDefin
      *
      * @since 2.1.0
      */
-    protected List<URL> sourceURLs;
+    protected List<ApplicationResource> sources;
 
     /**
      * Contains the dates that the URL sources were last modified.
@@ -77,18 +78,31 @@ public abstract class BaseLocaleUrlDefin
     protected DefinitionsReader reader;
 
     /**
+     * ApplicationContext to locate the source files.
+     * 
+     * @since 3.0.0
+     */
+    protected ApplicationContext applicationContext;
+    
+    /**
      * Constructor.
      */
-    public BaseLocaleUrlDefinitionDAO() {
+    public BaseLocaleUrlDefinitionDAO(ApplicationContext applicationContext) {
+        this.applicationContext = applicationContext;
         lastModifiedDates = new HashMap<String, Long>();
     }
 
-    /**  {@inheritDoc}*/
-    public void setSourceURLs(List<URL> sourceURLs) {
-        this.sourceURLs = sourceURLs;
+    public void setSources(List<ApplicationResource> sources) {
+        // filter out any sources that are already localized
+        ArrayList<ApplicationResource> defaultSources = new ArrayList<ApplicationResource>();
+        for(ApplicationResource source: sources) {
+            if(Locale.ROOT.equals(source.getLocale())) {
+                defaultSources.add(source);
+            }
+        }
+        this.sources = defaultSources;
     }
 
-    /**  {@inheritDoc}*/
     public void setReader(DefinitionsReader reader) {
         this.reader = reader;
     }
@@ -97,15 +111,13 @@ public abstract class BaseLocaleUrlDefin
     public boolean refreshRequired() {
         boolean status = false;
 
-        Set<String> urls = lastModifiedDates.keySet();
+        Set<String> paths = lastModifiedDates.keySet();
 
         try {
-            for (String urlPath : urls) {
-                Long lastModifiedDate = lastModifiedDates.get(urlPath);
-                URL url = new URL(urlPath);
-                URLConnection connection = url.openConnection();
-                connection.connect();
-                long newModDate = connection.getLastModified();
+            for (String path : paths) {
+                Long lastModifiedDate = lastModifiedDates.get(path);
+                ApplicationResource resource = applicationContext.getResource(path);
+                long newModDate = resource.getLastModified();
                 if (newModDate != lastModifiedDate) {
                     status = true;
                     break;
@@ -121,38 +133,25 @@ public abstract class BaseLocaleUrlDefin
     /**
      * Loads definitions from an URL without loading from "parent" URLs.
      *
-     * @param url The URL to read.
+     * @param resource The URL to read.
      * @return The definition map that has been read.
      */
-    protected Map<String, Definition> loadDefinitionsFromURL(URL url) {
+    protected Map<String, Definition> loadDefinitionsFromResource(ApplicationResource resource) {
         Map<String, Definition> defsMap = null;
 
-        URLConnection connection = null;
-        try {
-            connection = url.openConnection();
-        } catch (IOException e) {
-            // File not found. continue.
-            if (log.isDebugEnabled()) {
-                log.debug("I/O exception thrown when opening URL connection to "
-                        + url.toString() + ", continue");
-            }
-            return null;
-        }
-
         InputStream stream = null;
         try {
-            connection.connect();
-            lastModifiedDates.put(url.toExternalForm(), connection
+            lastModifiedDates.put(resource.getLocalePath(), resource
                     .getLastModified());
 
             // Definition must be collected, starting from the base
             // source up to the last localized file.
-            stream = connection.getInputStream();
+            stream = resource.getInputStream();
             defsMap = reader.read(stream);
         } catch (FileNotFoundException e) {
             // File not found. continue.
             if (log.isDebugEnabled()) {
-                log.debug("File " + url.toString() + " not found, continue");
+                log.debug("File " + resource.toString() + " not found, continue");
             }
         } catch (IOException e) {
             throw new DefinitionsFactoryException(
@@ -164,7 +163,7 @@ public abstract class BaseLocaleUrlDefin
                 }
             } catch (IOException e) {
                 throw new DefinitionsFactoryException(
-                        "I/O error closing " + url.toString(), e);
+                        "I/O error closing " + resource.toString(), e);
             }
         }
 

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java Tue Mar  6 20:44:30 2012
@@ -21,18 +21,17 @@
 
 package org.apache.tiles.definition.dao;
 
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Locale;
 import java.util.Map;
 
 import org.apache.tiles.Definition;
-import org.apache.tiles.definition.DefinitionsFactoryException;
 import org.apache.tiles.definition.pattern.PatternDefinitionResolver;
 import org.apache.tiles.definition.pattern.PatternDefinitionResolverAware;
-import org.apache.tiles.util.LocaleUtil;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
+import org.apache.tiles.request.locale.LocaleUtil;
 
 /**
  * <p>
@@ -86,7 +85,8 @@ public class CachingLocaleUrlDefinitionD
      *
      * @since 2.1.0
      */
-    public CachingLocaleUrlDefinitionDAO() {
+    public CachingLocaleUrlDefinitionDAO(ApplicationContext applicationContext) {
+        super(applicationContext);
         locale2definitionMap = new HashMap<Locale, Map<String, Definition>>();
     }
 
@@ -100,7 +100,7 @@ public class CachingLocaleUrlDefinitionD
     public Definition getDefinition(String name, Locale customizationKey) {
         Definition retValue = null;
         if (customizationKey == null) {
-            customizationKey = LocaleUtil.NULL_LOCALE;
+            customizationKey = Locale.ROOT;
         }
         Map<String, Definition> definitions = getDefinitions(customizationKey);
         if (definitions != null) {
@@ -123,7 +123,7 @@ public class CachingLocaleUrlDefinitionD
     /** {@inheritDoc} */
     public Map<String, Definition> getDefinitions(Locale customizationKey) {
         if (customizationKey == null) {
-            customizationKey = LocaleUtil.NULL_LOCALE;
+            customizationKey = Locale.ROOT;
         }
         Map<String, Definition> retValue = locale2definitionMap
                 .get(customizationKey);
@@ -134,11 +134,11 @@ public class CachingLocaleUrlDefinitionD
     }
 
     /**
-     * Sets the flag to check URL refresh. If not called, the default is
+     * Sets the flag to check source refresh. If not called, the default is
      * <code>false</code>.
      *
      * @param checkRefresh When <code>true</code>, enables automatic checking
-     * of URLs changing.
+     * of sources changing.
      * @since 2.1.0
      */
     public void setCheckRefresh(boolean checkRefresh) {
@@ -159,10 +159,10 @@ public class CachingLocaleUrlDefinitionD
     }
 
     /**
-     * Checks if URLs have changed. If yes, it clears the cache. Then continues
+     * Checks if sources have changed. If yes, it clears the cache. Then continues
      * loading definitions.
      *
-     * @param customizationKey The locale to use when loading URLs.
+     * @param customizationKey The locale to use when loading sources.
      * @return The loaded definitions.
      * @since 2.1.0
      */
@@ -178,7 +178,7 @@ public class CachingLocaleUrlDefinitionD
     /**
      * Tries to load definitions if necessary.
      *
-     * @param customizationKey The locale to use when loading URLs.
+     * @param customizationKey The locale to use when loading sources.
      * @return The loaded definitions.
      * @since 2.1.0
      */
@@ -189,18 +189,18 @@ public class CachingLocaleUrlDefinitionD
             return localeDefsMap;
         }
 
-        return loadDefinitionsFromURLs(customizationKey);
+        return loadDefinitionsFromResources(customizationKey);
     }
 
     /**
-     * Loads definitions from the URLs.
+     * Loads definitions from the sources.
      *
-     * @param customizationKey The locale to use when loading URLs.
+     * @param customizationKey The locale to use when loading Resources.
      * @return The loaded definitions.
      * @since 2.1.0
      */
-    protected Map<String, Definition> loadDefinitionsFromURLs(Locale customizationKey) {
-        Map<String, Definition> localeDefsMap = loadRawDefinitionsFromURLs(customizationKey);
+    protected Map<String, Definition> loadDefinitionsFromResources(Locale customizationKey) {
+        Map<String, Definition> localeDefsMap = loadRawDefinitionsFromResources(customizationKey);
         Map<String, Definition> defsMap = definitionResolver
                 .storeDefinitionPatterns(copyDefinitionMap(localeDefsMap),
                         customizationKey);
@@ -209,17 +209,16 @@ public class CachingLocaleUrlDefinitionD
     }
 
     /**
-     * Loads the raw definitions from the URLs associated with a locale.
+     * Loads the raw definitions from the sources associated with a locale.
      *
-     * @param customizationKey The locale to use when loading URLs.
+     * @param customizationKey The locale to use when loading Resources.
      * @return The loaded definitions.
      * @since 2.1.3
      */
-    protected Map<String, Definition> loadRawDefinitionsFromURLs(
+    protected Map<String, Definition> loadRawDefinitionsFromResources(
             Locale customizationKey) {
         Map<String, Definition> localeDefsMap;
 
-        String postfix = LocaleUtil.calculatePostfix(customizationKey);
         Locale parentLocale = LocaleUtil.getParentLocale(customizationKey);
         localeDefsMap = new LinkedHashMap<String, Definition>();
         if (parentLocale != null) {
@@ -228,20 +227,14 @@ public class CachingLocaleUrlDefinitionD
                 localeDefsMap.putAll(parentDefs);
             }
         }
-        // For each source, the URL must be loaded.
-        for (URL url : sourceURLs) {
-            String path = url.toExternalForm();
-
-            String newPath = LocaleUtil.concatPostfix(path, postfix);
-            try {
-                URL newUrl = new URL(newPath);
-                Map<String, Definition> defsMap = loadDefinitionsFromURL(newUrl);
+        // For each source, the resource must be loaded.
+        for (ApplicationResource resource : sources) {
+            ApplicationResource newResource = applicationContext.getResource(resource, customizationKey);
+            if (newResource != null) {
+                Map<String, Definition> defsMap = loadDefinitionsFromResource(newResource);
                 if (defsMap != null) {
                     localeDefsMap.putAll(defsMap);
                 }
-            } catch (MalformedURLException e) {
-                throw new DefinitionsFactoryException("Error parsing URL "
-                        + newPath, e);
             }
         }
         return localeDefsMap;

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAO.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAO.java Tue Mar  6 20:44:30 2012
@@ -20,16 +20,16 @@
  */
 package org.apache.tiles.definition.dao;
 
-import java.net.MalformedURLException;
-import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import org.apache.tiles.Definition;
-import org.apache.tiles.definition.DefinitionsFactoryException;
-import org.apache.tiles.util.LocaleUtil;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
+import org.apache.tiles.request.locale.LocaleUtil;
 
 /**
  * A definition DAO that uses {@link Locale} as a customization key and loads
@@ -40,6 +40,10 @@ import org.apache.tiles.util.LocaleUtil;
  */
 public class LocaleUrlDefinitionDAO extends BaseLocaleUrlDefinitionDAO {
 
+    public LocaleUrlDefinitionDAO(ApplicationContext applicationContext) {
+        super(applicationContext);
+    }
+
     /**
      * <p>
      * Returns a definition, given its name and the customization key.
@@ -60,28 +64,42 @@ public class LocaleUrlDefinitionDAO exte
 
     /** {@inheritDoc} */
     public Map<String, Definition> getDefinitions(Locale customizationKey) {
-        List<String> postfixes = LocaleUtil.calculatePostfixes(customizationKey);
+        ArrayList<Locale> postfixes = computeLocales(customizationKey);
         Map<String, Definition> localeDefsMap = new HashMap<String, Definition>();
-        for (Object postfix : postfixes) {
+        // process the postfixes from the root to the most specific
+        for (Locale postfix : postfixes) {
             // For each postfix, all the sources must be loaded.
-            for (URL url : sourceURLs) {
-                String path = url.toExternalForm();
-
-                String newPath = LocaleUtil.concatPostfix(path,
-                        (String) postfix);
-                try {
-                    URL newUrl = new URL(newPath);
-                    Map<String, Definition> defsMap = loadDefinitionsFromURL(newUrl);
+            for (ApplicationResource resource : sources) {
+                ApplicationResource newResource = applicationContext.getResource(resource, postfix);
+                if (newResource != null) {
+                    Map<String, Definition> defsMap = loadDefinitionsFromResource(newResource);
                     if (defsMap != null) {
                         localeDefsMap.putAll(defsMap);
                     }
-                } catch (MalformedURLException e) {
-                    throw new DefinitionsFactoryException("Error parsing URL "
-                        + newPath, e);
                 }
             }
         }
-
         return localeDefsMap;
     }
+
+    /**
+     * Returns a list of locales from root to the customizationKey.
+     * @param customizationKey the target Locale.
+     * @return the list of its ancestors.
+     */
+    private ArrayList<Locale> computeLocales(Locale customizationKey) {
+        Locale postfix;
+        if(customizationKey == null) {
+            postfix = Locale.ROOT;
+        } else {
+            postfix = customizationKey;
+        }
+        ArrayList<Locale> postfixes = new ArrayList<Locale>();
+        while (postfix != null) {
+            postfixes.add(postfix);
+            postfix = LocaleUtil.getParentLocale(postfix);
+        }
+        Collections.reverse(postfixes);
+        return postfixes;
+    }
 }

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java Tue Mar  6 20:44:30 2012
@@ -29,6 +29,7 @@ import java.util.Set;
 
 import org.apache.tiles.Definition;
 import org.apache.tiles.definition.NoSuchDefinitionException;
+import org.apache.tiles.request.ApplicationContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,10 +53,14 @@ public class ResolvingLocaleUrlDefinitio
      */
     private final Logger log = LoggerFactory.getLogger(ResolvingLocaleUrlDefinitionDAO.class);
 
+    public ResolvingLocaleUrlDefinitionDAO(ApplicationContext applicationContext) {
+        super(applicationContext);
+    }
+
     /** {@inheritDoc} */
     @Override
     protected Map<String, Definition> loadParentDefinitions(Locale parentLocale) {
-        return loadRawDefinitionsFromURLs(parentLocale);
+        return loadRawDefinitionsFromResources(parentLocale);
     }
 
     @Override

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java Tue Mar  6 20:44:30 2012
@@ -20,8 +20,6 @@
  */
 package org.apache.tiles.factory;
 
-import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -48,6 +46,7 @@ import org.apache.tiles.preparer.BasicPr
 import org.apache.tiles.preparer.PreparerFactory;
 import org.apache.tiles.renderer.DefinitionRenderer;
 import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
 import org.apache.tiles.request.render.BasicRendererFactory;
 import org.apache.tiles.request.render.ChainedDelegateRenderer;
 import org.apache.tiles.request.render.DispatchRenderer;
@@ -163,7 +162,7 @@ public class BasicTilesContainerFactory 
      */
     protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext,
             LocaleResolver resolver) {
-        ResolvingLocaleUrlDefinitionDAO dao = new ResolvingLocaleUrlDefinitionDAO();
+        ResolvingLocaleUrlDefinitionDAO dao = new ResolvingLocaleUrlDefinitionDAO(applicationContext);
         return dao;
     }
 
@@ -180,7 +179,7 @@ public class BasicTilesContainerFactory 
         BaseLocaleUrlDefinitionDAO definitionDao = instantiateLocaleDefinitionDao(
                 applicationContext, resolver);
         definitionDao.setReader(createDefinitionsReader(applicationContext));
-        definitionDao.setSourceURLs(getSourceURLs(applicationContext));
+        definitionDao.setSources(getSources(applicationContext));
         if (definitionDao instanceof PatternDefinitionResolverAware) {
             ((PatternDefinitionResolverAware<Locale>) definitionDao)
                     .setPatternDefinitionResolver(createPatternDefinitionResolver(Locale.class));
@@ -212,20 +211,15 @@ public class BasicTilesContainerFactory 
     }
 
     /**
-     * Returns a list containing the URLs to be parsed. By default, it returns a
-     * list containing the URL point to "/WEB-INF/tiles.xml".
+     * Returns a list containing the resources to be parsed. By default, it returns a
+     * list containing the resource at "/WEB-INF/tiles.xml".
      * @param applicationContext The Tiles application context.
-     * @return The source URLs.
+     * @return The resources.
      * @since 2.1.1
      */
-    protected List<URL> getSourceURLs(ApplicationContext applicationContext) {
-        List<URL> retValue = new ArrayList<URL>(1);
-        try {
-            retValue.add(applicationContext.getResource("/WEB-INF/tiles.xml"));
-        } catch (IOException e) {
-            throw new TilesContainerFactoryException(
-                    "Cannot get URL: /WEB-INF/tiles.xml", e);
-        }
+    protected List<ApplicationResource> getSources(ApplicationContext applicationContext) {
+        List<ApplicationResource> retValue = new ArrayList<ApplicationResource>(1);
+        retValue.add(applicationContext.getResource("/WEB-INF/tiles.xml"));
         return retValue;
     }
 

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAOTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAOTest.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAOTest.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAOTest.java Tue Mar  6 20:44:30 2012
@@ -7,13 +7,10 @@ import static org.easymock.EasyMock.*;
 import static org.easymock.classextension.EasyMock.*;
 import static org.junit.Assert.*;
 
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.InputStream;
 import java.net.MalformedURLException;
-import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -23,11 +20,14 @@ import java.util.Map;
 
 import org.apache.tiles.Attribute;
 import org.apache.tiles.Definition;
-import org.apache.tiles.definition.DefinitionsFactory;
 import org.apache.tiles.definition.DefinitionsReader;
 import org.apache.tiles.definition.RefreshMonitor;
 import org.apache.tiles.definition.digester.DigesterDefinitionsReader;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
 import org.apache.tiles.request.Request;
+import org.apache.tiles.request.locale.PostfixedApplicationResource;
+import org.apache.tiles.request.locale.URLApplicationResource;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -38,6 +38,37 @@ import org.junit.Test;
  */
 public class BaseLocaleUrlDefinitionDAOTest {
 
+    private static final class MutableApplicationResource extends PostfixedApplicationResource {
+        private long lastModified = System.currentTimeMillis();
+        private String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"
+                + "<!DOCTYPE tiles-definitions PUBLIC "
+                + "\"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN\" "
+                + "\"http://tiles.apache.org/dtds/tiles-config_3_0.dtd\">\n\n" + "<tiles-definitions>"
+                + "<definition name=\"rewrite.test\" template=\"/test.jsp\">"
+                + "<put-attribute name=\"testparm\" value=\"testval\"/>" + "</definition>" //
+                + "</tiles-definitions>";
+
+        private MutableApplicationResource(String localePath) {
+            super(localePath);
+        }
+
+        public void modify(String xml) {
+            lastModified = System.currentTimeMillis();
+            this.xml = xml;
+        }
+
+        @Override
+        public long getLastModified() {
+            return lastModified;
+        }
+
+        @Override
+        public InputStream getInputStream() throws IOException {
+
+            return new ByteArrayInputStream(xml.getBytes("ISO-8859-1"));
+        }
+    }
+
     /**
      * The time (in milliseconds) to wait to be sure that the system updates the
      * modify date of a file.
@@ -47,14 +78,22 @@ public class BaseLocaleUrlDefinitionDAOT
     /**
      * The dao to test.
      */
+    private ApplicationContext applicationContext;
+
     private BaseLocaleUrlDefinitionDAO dao;
+    private MutableApplicationResource resource;
 
     /**
      * Sets up the test.
+     * @throws IOException 
      */
     @Before
-    public void setUp() {
-        dao = createMockBuilder(BaseLocaleUrlDefinitionDAO.class).withConstructor().createMock();
+    public void setUp() throws IOException {
+        resource = new MutableApplicationResource("org/apache/tiles/config/temp-defs.xml");
+        applicationContext = createMock(ApplicationContext.class);
+        expect(applicationContext.getResource("org/apache/tiles/config/temp-defs.xml")).andReturn(resource).anyTimes();
+        replay(applicationContext);
+        dao = createMockBuilder(BaseLocaleUrlDefinitionDAO.class).withConstructor(applicationContext).createMock();
     }
 
     /**
@@ -68,105 +107,42 @@ public class BaseLocaleUrlDefinitionDAOT
         // Set up multiple data sources.
         Map<String, Attribute> attribs = new HashMap<String, Attribute>();
         attribs.put("testparm", new Attribute("testval"));
-        Definition rewriteTest = new Definition("rewrite.test",
-                Attribute.createTemplateAttribute("/test.jsp"), attribs);
+        Definition rewriteTest = new Definition("rewrite.test", Attribute.createTemplateAttribute("/test.jsp"), attribs);
         expect(dao.getDefinition("rewrite.test", null)).andReturn(rewriteTest);
 
         replay(dao);
-        URL url = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/temp-defs.xml");
-
-        URI uri = null;
-        String urlPath = null;
-
-        // The following madness is necessary b/c of the way Windows hanndles
-        // URLs.
-        // We must add a slash to the protocol if Windows does not. But we
-        // cannot
-        // add a slash to Unix paths b/c they already have one.
-        if (url.getPath().startsWith("/")) {
-            urlPath = "file:" + url.getPath();
-        } else {
-            urlPath = "file:/" + url.getPath();
-        }
 
-        // The following second madness is necessary b/c sometimes spaces
-        // are encoded as '%20', sometimes they are not. For example in
-        // Windows 2000 under Eclipse they are encoded, under the prompt of
-        // Windows 2000 they are not.
-        // It seems to be in the different behaviour of
-        // sun.misc.Launcher$AppClassLoader (called under Eclipse) and
-        // java.net.URLClassLoader (under maven).
-        // And an URL accepts spaces while URIs need '%20'.
-        try {
-            uri = new URI(urlPath);
-        } catch (URISyntaxException e) {
-            uri = new URI(urlPath.replaceAll(" ", "%20"));
-        }
-
-        List<URL> sourceURLs = new ArrayList<URL>();
-        sourceURLs.add(uri.toURL());
-        dao.setSourceURLs(sourceURLs);
+        List<ApplicationResource> sources = new ArrayList<ApplicationResource>();
+        sources.add(resource);
+        dao.setSources(sources);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         dao.setReader(reader);
 
-        String xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"
-                + "<!DOCTYPE tiles-definitions PUBLIC "
-                + "\"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN\" "
-                + "\"http://tiles.apache.org/dtds/tiles-config_3_0.dtd\">\n\n"
-                + "<tiles-definitions>"
-                + "<definition name=\"rewrite.test\" template=\"/test.jsp\">"
-                + "<put-attribute name=\"testparm\" value=\"testval\"/>"
-                + "</definition>" + "</tiles-definitions>";
-
-        File file = new File(uri);
-        FileOutputStream fileOut = new FileOutputStream(file);
-        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
-                fileOut));
-        writer.write(xml);
-        writer.close();
-
-        Map<String, String> params = new HashMap<String, String>();
-        params.put(DefinitionsFactory.DEFINITIONS_CONFIG, urlPath);
         Request context = createMock(Request.class);
-        expect(context.getContext("session")).andReturn(
-                new HashMap<String, Object>()).anyTimes();
+        expect(context.getContext("session")).andReturn(new HashMap<String, Object>()).anyTimes();
         expect(context.getRequestLocale()).andReturn(null).anyTimes();
         replay(context);
 
-        Definition definition = dao.getDefinition("rewrite.test",
-                null);
+        Definition definition = dao.getDefinition("rewrite.test", null);
         assertNotNull("rewrite.test definition not found.", definition);
-        assertEquals("Incorrect initial template value", "/test.jsp",
-                definition.getTemplateAttribute().getValue());
+        assertEquals("Incorrect initial template value", "/test.jsp", definition.getTemplateAttribute().getValue());
 
         RefreshMonitor reloadable = dao;
-        dao.loadDefinitionsFromURL(url);
-        assertEquals("Factory should be fresh.", false, reloadable
-                .refreshRequired());
+        dao.loadDefinitionsFromResource(resource);
+        assertEquals("Factory should be fresh.", false, reloadable.refreshRequired());
 
         // Make sure the system actually updates the timestamp.
         Thread.sleep(SLEEP_MILLIS);
 
         // Set up multiple data sources.
-        xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"
-                + "<!DOCTYPE tiles-definitions PUBLIC "
+        resource.modify("<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n" + "<!DOCTYPE tiles-definitions PUBLIC "
                 + "\"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN\" "
-                + "\"http://tiles.apache.org/dtds/tiles-config_3_0.dtd\">\n\n"
-                + "<tiles-definitions>"
+                + "\"http://tiles.apache.org/dtds/tiles-config_3_0.dtd\">\n\n" + "<tiles-definitions>"
                 + "<definition name=\"rewrite.test\" template=\"/newtest.jsp\">"
-                + "<put-attribute name=\"testparm\" value=\"testval\"/>"
-                + "</definition>" + "</tiles-definitions>";
-
-        file = new File(uri);
-        fileOut = new FileOutputStream(file);
-        writer = new BufferedWriter(new OutputStreamWriter(fileOut));
-        writer.write(xml);
-        writer.close();
-        file = new File(uri);
+                + "<put-attribute name=\"testparm\" value=\"testval\"/>" + "</definition>" //
+                + "</tiles-definitions>");
 
-        assertEquals("Factory should be stale.", true, reloadable
-                .refreshRequired());
+        assertEquals("Factory should be stale.", true, reloadable.refreshRequired());
 
         verify(context, dao);
     }
@@ -177,13 +153,14 @@ public class BaseLocaleUrlDefinitionDAOT
      */
     @Test
     public void testLoadDefinitionsFromURLFileNotFound() throws MalformedURLException {
-        URL url = new URL("file:///hello/there.txt");
+        URLApplicationResource resource = new URLApplicationResource("/hello/there.txt", new URL(
+                "file:///hello/there.txt"));
         replay(dao);
         DefinitionsReader reader = createMock(DefinitionsReader.class);
         replay(reader);
 
         dao.setReader(reader);
-        assertNull(dao.loadDefinitionsFromURL(url));
+        assertNull(dao.loadDefinitionsFromResource(resource));
         verify(dao, reader);
     }
 

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java Tue Mar  6 20:44:30 2012
@@ -24,8 +24,8 @@ package org.apache.tiles.definition.dao;
 import static org.easymock.EasyMock.*;
 
 import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
@@ -44,6 +44,8 @@ import org.apache.tiles.definition.patte
 import org.apache.tiles.definition.pattern.PatternDefinitionResolver;
 import org.apache.tiles.definition.pattern.wildcard.WildcardDefinitionPatternMatcherFactory;
 import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
+import org.apache.tiles.request.locale.URLApplicationResource;
 
 /**
  * Tests {@link CachingLocaleUrlDefinitionDAO}.
@@ -57,11 +59,52 @@ public class CachingLocaleUrlDefinitionD
      */
     private CachingLocaleUrlDefinitionDAO definitionDao;
 
+    private ApplicationContext applicationContext;
+
+    private ApplicationResource url1;
+
+    private ApplicationResource url2;
+
+    private ApplicationResource url3;
+
+    private ApplicationResource urlWildcard;
+
+    private ApplicationResource url21;
+
+    private ApplicationResource setupUrl(String filename, Locale... locales) throws IOException {
+        ApplicationResource url = new URLApplicationResource("org/apache/tiles/config/" + filename + ".xml", this
+                .getClass().getClassLoader().getResource("org/apache/tiles/config/" + filename + ".xml"));
+        assertNotNull("Could not load " + filename + " file.", url);
+        expect(applicationContext.getResource(url.getLocalePath())).andReturn(url).anyTimes();
+        expect(applicationContext.getResource(url, Locale.ROOT)).andReturn(url).anyTimes();
+        Map<Locale, ApplicationResource> localeResources = new HashMap<Locale, ApplicationResource>();
+        for (Locale locale : locales) {
+            ApplicationResource urlLocale = new URLApplicationResource("org/apache/tiles/config/" + filename + "_"
+                    + locale.toString() + ".xml", this.getClass().getClassLoader()
+                    .getResource("org/apache/tiles/config/" + filename + "_" + locale.toString() + ".xml"));
+            assertNotNull("Could not load " + filename + "_" + locale.toString() + " file.", urlLocale);
+            localeResources.put(locale, urlLocale);
+        }
+        for (Locale locale : new Locale[] { Locale.CANADA_FRENCH, Locale.FRENCH, Locale.US, Locale.ENGLISH,
+                Locale.CHINA, Locale.CHINESE, Locale.ITALY, Locale.ITALIAN }) {
+            ApplicationResource urlLocale = localeResources.get(locale);
+            expect(applicationContext.getResource(url, locale)).andReturn(urlLocale).anyTimes();
+        }
+        return url;
+    }
+
     /** {@inheritDoc} */
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        definitionDao = new CachingLocaleUrlDefinitionDAO();
+        applicationContext = createMock(ApplicationContext.class);
+        url1 = setupUrl("defs1", Locale.FRENCH, Locale.CANADA_FRENCH, Locale.US);
+        url2 = setupUrl("defs2");
+        url3 = setupUrl("defs3");
+        urlWildcard = setupUrl("defs-wildcard");
+        url21 = setupUrl("tiles-defs-2.1", Locale.ITALIAN);
+        replay(applicationContext);
+        definitionDao = new CachingLocaleUrlDefinitionDAO(applicationContext);
         WildcardDefinitionPatternMatcherFactory definitionPatternMatcherFactory =
             new WildcardDefinitionPatternMatcherFactory();
         PatternDefinitionResolver<Locale> definitionResolver = new BasicPatternDefinitionResolver<Locale>(
@@ -74,22 +117,11 @@ public class CachingLocaleUrlDefinitionD
      * Tests {@link LocaleUrlDefinitionDAO#getDefinition(String, Locale)}.
      */
     public void testGetDefinition() {
-        // Set up multiple data sources.
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        assertNotNull("Could not load defs1 file.", url1);
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        assertNotNull("Could not load defs2 file.", url2);
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
-        assertNotNull("Could not load defs3 file.", url3);
-
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         definitionDao.setReader(reader);
 
@@ -155,22 +187,11 @@ public class CachingLocaleUrlDefinitionD
      * Tests {@link LocaleUrlDefinitionDAO#getDefinitions(Locale)}.
      */
     public void testGetDefinitions() {
-        // Set up multiple data sources.
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        assertNotNull("Could not load defs1 file.", url1);
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        assertNotNull("Could not load defs2 file.", url2);
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
-        assertNotNull("Could not load defs3 file.", url3);
-
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         definitionDao.setReader(reader);
 
@@ -238,26 +259,16 @@ public class CachingLocaleUrlDefinitionD
     }
 
     /**
-     * Tests {@link LocaleUrlDefinitionDAO#setSourceURLs(List)}.
+     * Tests {@link LocaleUrlDefinitionDAO#setSources(List)}.
      */
     public void testSetSourceURLs() {
-        // Set up multiple data sources.
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        assertNotNull("Could not load defs1 file.", url1);
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        assertNotNull("Could not load defs2 file.", url2);
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
-        assertNotNull("Could not load defs3 file.", url3);
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         assertEquals("The source URLs are not set correctly", sourceURLs,
-                definitionDao.sourceURLs);
+                definitionDao.sources);
     }
 
     /**
@@ -276,51 +287,43 @@ public class CachingLocaleUrlDefinitionD
      * @throws IOException If something goes wrong.
      */
     public void testInit() throws IOException {
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
         ApplicationContext applicationContext = createMock(ApplicationContext.class);
-        Set<URL> urlSet = new HashSet<URL>();
+        Set<ApplicationResource> urlSet = new HashSet<ApplicationResource>();
         urlSet.add(url1);
         expect(applicationContext.getResources("/WEB-INF/tiles.xml"))
                 .andReturn(urlSet);
         replay(applicationContext);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         definitionDao.setReader(reader);
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         assertEquals("The reader is not of the correct class",
                 DigesterDefinitionsReader.class, definitionDao.reader
                         .getClass());
         assertEquals("The source URLs are not correct", sourceURLs,
-                definitionDao.sourceURLs);
+                definitionDao.sources);
         reset(applicationContext);
 
         definitionDao.setReader(new MockDefinitionsReader());
         assertEquals("The reader is not of the correct class",
                 MockDefinitionsReader.class, definitionDao.reader.getClass());
-        sourceURLs = new ArrayList<URL>();
+        sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         assertEquals("The source URLs are not correct", sourceURLs,
-                definitionDao.sourceURLs);
+                definitionDao.sources);
     }
 
     /**
      * Tests wildcard mappings.
      */
     public void testWildcardMapping() {
-        URL url = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs-wildcard.xml");
-        List<URL> urls = new ArrayList<URL>();
-        urls.add(url);
-        definitionDao.setSourceURLs(urls);
+        List<ApplicationResource> urls = new ArrayList<ApplicationResource>();
+        urls.add(urlWildcard);
+        definitionDao.setSources(urls);
         definitionDao.setReader(new DigesterDefinitionsReader());
 
         Definition definition = definitionDao.getDefinition("test.defName.subLayered", Locale.ITALY);
@@ -360,11 +363,9 @@ public class CachingLocaleUrlDefinitionD
      * when loading multiple files for a locale.
      */
     public void testListAttributeLocaleInheritance() {
-        URL url = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/tiles-defs-2.1.xml");
-        List<URL> urls = new ArrayList<URL>();
-        urls.add(url);
-        definitionDao.setSourceURLs(urls);
+        List<ApplicationResource> urls = new ArrayList<ApplicationResource>();
+        urls.add(url21);
+        definitionDao.setSources(urls);
         ApplicationContext applicationContext = createMock(ApplicationContext.class);
         definitionDao.setReader(new DigesterDefinitionsReader());
         replay(applicationContext);

Modified: tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAOTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAOTest.java?rev=1297705&r1=1297704&r2=1297705&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAOTest.java (original)
+++ tiles/framework/trunk/tiles-parent/tiles-core/src/test/java/org/apache/tiles/definition/dao/LocaleUrlDefinitionDAOTest.java Tue Mar  6 20:44:30 2012
@@ -24,13 +24,11 @@ package org.apache.tiles.definition.dao;
 import static org.easymock.EasyMock.*;
 
 import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Set;
 
 import junit.framework.TestCase;
 
@@ -39,6 +37,8 @@ import org.apache.tiles.definition.Defin
 import org.apache.tiles.definition.MockDefinitionsReader;
 import org.apache.tiles.definition.digester.DigesterDefinitionsReader;
 import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
+import org.apache.tiles.request.locale.URLApplicationResource;
 
 /**
  * Tests {@link LocaleUrlDefinitionDAO}.
@@ -52,91 +52,95 @@ public class LocaleUrlDefinitionDAOTest 
      */
     private LocaleUrlDefinitionDAO definitionDao;
 
+    private ApplicationContext applicationContext;
+
+    private ApplicationResource url1;
+
+    private ApplicationResource url2;
+
+    private ApplicationResource url3;
+
+    private ApplicationResource setupUrl(String filename, Locale... locales) throws IOException {
+        ApplicationResource url = new URLApplicationResource("org/apache/tiles/config/" + filename + ".xml", this
+                .getClass().getClassLoader().getResource("org/apache/tiles/config/" + filename + ".xml"));
+        assertNotNull("Could not load " + filename + " file.", url);
+        expect(applicationContext.getResource(url.getLocalePath())).andReturn(url).anyTimes();
+        expect(applicationContext.getResource(url, Locale.ROOT)).andReturn(url).anyTimes();
+        Map<Locale, ApplicationResource> localeResources = new HashMap<Locale, ApplicationResource>();
+        for (Locale locale : locales) {
+            ApplicationResource urlLocale = new URLApplicationResource("org/apache/tiles/config/" + filename + "_"
+                    + locale.toString() + ".xml", this.getClass().getClassLoader()
+                    .getResource("org/apache/tiles/config/" + filename + "_" + locale.toString() + ".xml"));
+            assertNotNull("Could not load " + filename + "_" + locale.toString() + " file.", urlLocale);
+            localeResources.put(locale, urlLocale);
+        }
+        for (Locale locale : new Locale[] { Locale.CANADA_FRENCH, Locale.FRENCH, Locale.US, Locale.ENGLISH,
+                Locale.CHINA, Locale.CHINESE }) {
+            ApplicationResource urlLocale = localeResources.get(locale);
+            expect(applicationContext.getResource(url, locale)).andReturn(urlLocale).anyTimes();
+        }
+        return url;
+    }
+
     /** {@inheritDoc} */
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        definitionDao = new LocaleUrlDefinitionDAO();
+
+        applicationContext = createMock(ApplicationContext.class);
+        url1 = setupUrl("defs1", Locale.FRENCH, Locale.CANADA_FRENCH, Locale.US);
+        url2 = setupUrl("defs2");
+        url3 = setupUrl("defs3");
+        replay(applicationContext);
+        definitionDao = new LocaleUrlDefinitionDAO(applicationContext);
     }
 
     /**
      * Tests {@link LocaleUrlDefinitionDAO#getDefinition(String, Locale)}.
      */
     public void testGetDefinition() {
-        // Set up multiple data sources.
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        assertNotNull("Could not load defs1 file.", url1);
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        assertNotNull("Could not load defs2 file.", url2);
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
-        assertNotNull("Could not load defs3 file.", url3);
-
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         definitionDao.setReader(reader);
-
-        assertNotNull("test.def1 definition not found.", definitionDao
-                .getDefinition("test.def1", null));
-        assertNotNull("test.def2 definition not found.", definitionDao
-                .getDefinition("test.def2", null));
-        assertNotNull("test.def3 definition not found.", definitionDao
-                .getDefinition("test.def3", null));
-        assertNotNull("test.common definition not found.", definitionDao
-                .getDefinition("test.common", null));
+        assertNotNull("test.def1 definition not found.", definitionDao.getDefinition("test.def1", null));
+        assertNotNull("test.def2 definition not found.", definitionDao.getDefinition("test.def2", null));
+        assertNotNull("test.def3 definition not found.", definitionDao.getDefinition("test.def3", null));
+        assertNotNull("test.common definition not found.", definitionDao.getDefinition("test.common", null));
         assertNotNull("test.common definition in US locale not found.",
                 definitionDao.getDefinition("test.common", Locale.US));
         assertNotNull("test.common definition in FRENCH locale not found.",
                 definitionDao.getDefinition("test.common", Locale.FRENCH));
         assertNotNull("test.common definition in CHINA locale not found.",
                 definitionDao.getDefinition("test.common", Locale.CHINA));
-        assertNotNull(
-                "test.common.french definition in FRENCH locale not found.",
-                definitionDao.getDefinition("test.common.french",
-                        Locale.FRENCH));
-        assertNotNull(
-                "test.common.french definition in CANADA_FRENCH locale not found.",
-                definitionDao.getDefinition("test.common.french",
-                        Locale.CANADA_FRENCH));
-        assertNotNull("test.def.toextend definition not found.", definitionDao
-                .getDefinition("test.def.toextend", null));
+        assertNotNull("test.common.french definition in FRENCH locale not found.",
+                definitionDao.getDefinition("test.common.french", Locale.FRENCH));
+        assertNotNull("test.common.french definition in CANADA_FRENCH locale not found.",
+                definitionDao.getDefinition("test.common.french", Locale.CANADA_FRENCH));
+        assertNotNull("test.def.toextend definition not found.", definitionDao.getDefinition("test.def.toextend", null));
         assertNotNull("test.def.overridden definition not found.",
                 definitionDao.getDefinition("test.def.overridden", null));
-        assertNotNull(
-                "test.def.overridden definition in FRENCH locale not found.",
-                definitionDao.getDefinition("test.def.overridden",
-                        Locale.FRENCH));
+        assertNotNull("test.def.overridden definition in FRENCH locale not found.",
+                definitionDao.getDefinition("test.def.overridden", Locale.FRENCH));
 
-        assertEquals("Incorrect default country value", "default",
-                definitionDao.getDefinition("test.def1", null).getAttribute(
-                        "country").getValue());
-        assertEquals("Incorrect US country value", "US", definitionDao
-                .getDefinition("test.def1", Locale.US).getAttribute("country")
-                .getValue());
+        assertEquals("Incorrect default country value", "default", definitionDao.getDefinition("test.def1", null)
+                .getAttribute("country").getValue());
+        assertEquals("Incorrect US country value", "US", definitionDao.getDefinition("test.def1", Locale.US)
+                .getAttribute("country").getValue());
         assertEquals("Incorrect France country value", "France", definitionDao
-                .getDefinition("test.def1", Locale.FRENCH).getAttribute(
-                        "country").getValue());
-        assertEquals("Incorrect Chinese country value (should be default)",
-                "default", definitionDao.getDefinition("test.def1",
-                        Locale.CHINA).getAttribute("country").getValue());
+                .getDefinition("test.def1", Locale.FRENCH).getAttribute("country").getValue());
+        assertEquals("Incorrect Chinese country value (should be default)", "default",
+                definitionDao.getDefinition("test.def1", Locale.CHINA).getAttribute("country").getValue());
         assertEquals("Incorrect default country value", "default",
-                definitionDao.getDefinition("test.def.overridden", null)
-                        .getAttribute("country").getValue());
-        assertEquals("Incorrect default title value",
-                "Definition to be overridden", definitionDao.getDefinition(
-                        "test.def.overridden", null).getAttribute("title")
-                        .getValue());
-        assertEquals("Incorrect France country value", "France", definitionDao
-                .getDefinition("test.def.overridden", Locale.FRENCH)
-                .getAttribute("country").getValue());
-        assertNull("Definition in French not found", definitionDao
-                .getDefinition("test.def.overridden", Locale.FRENCH)
+                definitionDao.getDefinition("test.def.overridden", null).getAttribute("country").getValue());
+        assertEquals("Incorrect default title value", "Definition to be overridden",
+                definitionDao.getDefinition("test.def.overridden", null).getAttribute("title").getValue());
+        assertEquals("Incorrect France country value", "France",
+                definitionDao.getDefinition("test.def.overridden", Locale.FRENCH).getAttribute("country").getValue());
+        assertNull("Definition in French not found", definitionDao.getDefinition("test.def.overridden", Locale.FRENCH)
                 .getAttribute("title"));
     }
 
@@ -144,109 +148,63 @@ public class LocaleUrlDefinitionDAOTest 
      * Tests {@link LocaleUrlDefinitionDAO#getDefinitions(Locale)}.
      */
     public void testGetDefinitions() {
-        // Set up multiple data sources.
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        assertNotNull("Could not load defs1 file.", url1);
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        assertNotNull("Could not load defs2 file.", url2);
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
-        assertNotNull("Could not load defs3 file.", url3);
-
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
+        definitionDao.setSources(sourceURLs);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         definitionDao.setReader(reader);
 
-        Map<String, Definition> defaultDefinitions = definitionDao
-                .getDefinitions(null);
-        Map<String, Definition> usDefinitions = definitionDao
-                .getDefinitions(Locale.US);
-        Map<String, Definition> frenchDefinitions = definitionDao
-                .getDefinitions(Locale.FRENCH);
-        Map<String, Definition> chinaDefinitions = definitionDao
-                .getDefinitions(Locale.CHINA);
-        Map<String, Definition> canadaFrenchDefinitions = definitionDao
-                .getDefinitions(Locale.CANADA_FRENCH);
-
-        assertNotNull("test.def1 definition not found.", defaultDefinitions
-                .get("test.def1"));
-        assertNotNull("test.def2 definition not found.", defaultDefinitions
-                .get("test.def2"));
-        assertNotNull("test.def3 definition not found.", defaultDefinitions
-                .get("test.def3"));
-        assertNotNull("test.common definition not found.", defaultDefinitions
-                .get("test.common"));
-        assertNotNull("test.common definition in US locale not found.",
-                usDefinitions.get("test.common"));
-        assertNotNull("test.common definition in FRENCH locale not found.",
-                frenchDefinitions.get("test.common"));
-        assertNotNull("test.common definition in CHINA locale not found.",
-                chinaDefinitions.get("test.common"));
-        assertNotNull(
-                "test.common.french definition in FRENCH locale not found.",
+        Map<String, Definition> defaultDefinitions = definitionDao.getDefinitions(null);
+        Map<String, Definition> usDefinitions = definitionDao.getDefinitions(Locale.US);
+        Map<String, Definition> frenchDefinitions = definitionDao.getDefinitions(Locale.FRENCH);
+        Map<String, Definition> chinaDefinitions = definitionDao.getDefinitions(Locale.CHINA);
+        Map<String, Definition> canadaFrenchDefinitions = definitionDao.getDefinitions(Locale.CANADA_FRENCH);
+
+        assertNotNull("test.def1 definition not found.", defaultDefinitions.get("test.def1"));
+        assertNotNull("test.def2 definition not found.", defaultDefinitions.get("test.def2"));
+        assertNotNull("test.def3 definition not found.", defaultDefinitions.get("test.def3"));
+        assertNotNull("test.common definition not found.", defaultDefinitions.get("test.common"));
+        assertNotNull("test.common definition in US locale not found.", usDefinitions.get("test.common"));
+        assertNotNull("test.common definition in FRENCH locale not found.", frenchDefinitions.get("test.common"));
+        assertNotNull("test.common definition in CHINA locale not found.", chinaDefinitions.get("test.common"));
+        assertNotNull("test.common.french definition in FRENCH locale not found.",
                 frenchDefinitions.get("test.common.french"));
-        assertNotNull(
-                "test.common.french definition in CANADA_FRENCH locale not found.",
+        assertNotNull("test.common.french definition in CANADA_FRENCH locale not found.",
                 canadaFrenchDefinitions.get("test.common.french"));
-        assertNotNull("test.def.toextend definition not found.",
-                defaultDefinitions.get("test.def.toextend"));
-        assertNotNull("test.def.overridden definition not found.",
-                defaultDefinitions.get("test.def.overridden"));
-        assertNotNull(
-                "test.def.overridden definition in FRENCH locale not found.",
+        assertNotNull("test.def.toextend definition not found.", defaultDefinitions.get("test.def.toextend"));
+        assertNotNull("test.def.overridden definition not found.", defaultDefinitions.get("test.def.overridden"));
+        assertNotNull("test.def.overridden definition in FRENCH locale not found.",
                 frenchDefinitions.get("test.def.overridden"));
 
         assertEquals("Incorrect default country value", "default",
-                defaultDefinitions.get("test.def1").getAttribute("country")
-                        .getValue());
-        assertEquals("Incorrect US country value", "US", usDefinitions.get(
-                "test.def1").getAttribute("country").getValue());
-        assertEquals("Incorrect France country value", "France",
-                frenchDefinitions.get("test.def1").getAttribute("country")
-                        .getValue());
-        assertEquals("Incorrect Chinese country value (should be default)",
-                "default", chinaDefinitions.get("test.def1").getAttribute(
-                        "country").getValue());
-        assertEquals("Incorrect default country value", "default",
-                defaultDefinitions.get("test.def.overridden").getAttribute(
-                        "country").getValue());
-        assertEquals("Incorrect default title value",
-                "Definition to be overridden", defaultDefinitions.get(
-                        "test.def.overridden").getAttribute("title").getValue());
+                defaultDefinitions.get("test.def1").getAttribute("country").getValue());
+        assertEquals("Incorrect US country value", "US", usDefinitions.get("test.def1").getAttribute("country")
+                .getValue());
         assertEquals("Incorrect France country value", "France",
-                frenchDefinitions.get("test.def.overridden").getAttribute(
-                        "country").getValue());
-        assertNull("Definition in French not found", frenchDefinitions.get(
-                "test.def.overridden").getAttribute("title"));
+                frenchDefinitions.get("test.def1").getAttribute("country").getValue());
+        assertEquals("Incorrect Chinese country value (should be default)", "default", chinaDefinitions
+                .get("test.def1").getAttribute("country").getValue());
+        assertEquals("Incorrect default country value", "default", defaultDefinitions.get("test.def.overridden")
+                .getAttribute("country").getValue());
+        assertEquals("Incorrect default title value", "Definition to be overridden",
+                defaultDefinitions.get("test.def.overridden").getAttribute("title").getValue());
+        assertEquals("Incorrect France country value", "France", frenchDefinitions.get("test.def.overridden")
+                .getAttribute("country").getValue());
+        assertNull("Definition in French not found", frenchDefinitions.get("test.def.overridden").getAttribute("title"));
     }
 
     /**
-     * Tests {@link LocaleUrlDefinitionDAO#setSourceURLs(List)}.
+     * Tests {@link LocaleUrlDefinitionDAO#setSources(List)}.
      */
     public void testSetSourceURLs() {
-        // Set up multiple data sources.
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        assertNotNull("Could not load defs1 file.", url1);
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        assertNotNull("Could not load defs2 file.", url2);
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
-        assertNotNull("Could not load defs3 file.", url3);
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
-        assertEquals("The source URLs are not set correctly", sourceURLs,
-                definitionDao.sourceURLs);
+        definitionDao.setSources(sourceURLs);
+        assertEquals("The source URLs are not set correctly", sourceURLs, definitionDao.sources);
     }
 
     /**
@@ -254,9 +212,10 @@ public class LocaleUrlDefinitionDAOTest 
      */
     public void testSetReader() {
         DefinitionsReader reader = createMock(DefinitionsReader.class);
+        replay(reader);
         definitionDao.setReader(reader);
-        assertEquals("There reader has not been set correctly", reader,
-                definitionDao.reader);
+        assertEquals("There reader has not been set correctly", reader, definitionDao.reader);
+        verify(reader);
     }
 
     /**
@@ -265,39 +224,29 @@ public class LocaleUrlDefinitionDAOTest 
      * @throws IOException If something goes wrong.
      */
     public void testInit() throws IOException {
-        URL url1 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs1.xml");
-        URL url2 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs2.xml");
-        URL url3 = this.getClass().getClassLoader().getResource(
-                "org/apache/tiles/config/defs3.xml");
         ApplicationContext applicationContext = createMock(ApplicationContext.class);
-        Set<URL> urlSet = new HashSet<URL>();
+        List<ApplicationResource> urlSet = new ArrayList<ApplicationResource>();
         urlSet.add(url1);
-        expect(applicationContext.getResources("/WEB-INF/tiles.xml"))
-                .andReturn(urlSet);
+        expect(applicationContext.getResources("/WEB-INF/tiles.xml")).andReturn(urlSet);
         replay(applicationContext);
         DefinitionsReader reader = new DigesterDefinitionsReader();
         definitionDao.setReader(reader);
-        List<URL> sourceURLs = new ArrayList<URL>();
+        List<ApplicationResource> sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
-        definitionDao.setSourceURLs(sourceURLs);
-        assertEquals("The reader is not of the correct class",
-                DigesterDefinitionsReader.class, definitionDao.reader
-                        .getClass());
-        assertEquals("The source URLs are not correct", sourceURLs,
-                definitionDao.sourceURLs);
+        definitionDao.setSources(sourceURLs);
+        assertEquals("The reader is not of the correct class", DigesterDefinitionsReader.class,
+                definitionDao.reader.getClass());
+        assertEquals("The source URLs are not correct", sourceURLs, definitionDao.sources);
         reset(applicationContext);
 
         definitionDao.setReader(new MockDefinitionsReader());
-        assertEquals("The reader is not of the correct class",
-                MockDefinitionsReader.class, definitionDao.reader.getClass());
-        sourceURLs = new ArrayList<URL>();
+        assertEquals("The reader is not of the correct class", MockDefinitionsReader.class,
+                definitionDao.reader.getClass());
+        sourceURLs = new ArrayList<ApplicationResource>();
         sourceURLs.add(url1);
         sourceURLs.add(url2);
         sourceURLs.add(url3);
-        definitionDao.setSourceURLs(sourceURLs);
-        assertEquals("The source URLs are not correct", sourceURLs,
-                definitionDao.sourceURLs);
+        definitionDao.setSources(sourceURLs);
+        assertEquals("The source URLs are not correct", sourceURLs, definitionDao.sources);
     }
 }