diff --git a/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationResource.java b/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationResource.java
index 6f5c05b..a604762 100644
--- a/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationResource.java
+++ b/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationResource.java
@@ -28,38 +28,38 @@
 /**
  * A (localized) resource accessible through the ApplicationContext.
  * Typically this is a file inside the web application's war.
- * 
+ *
  * @version $Rev$ $Date$
  */
 public interface ApplicationResource {
 
     /**
      * Get the path name for this resource.
-     * You can access this ressource by passing the path to 
+     * You can access this ressource by passing the path to
      * {@link ApplicationContext#getResource(String) getResource}.
-     * 
+     *
      * @return the path including localization.
      */
     String getLocalePath();
 
     /**
-     * Get the path name for this resource. Multiple versions of 
+     * Get the path name for this resource. Multiple versions of
      * a resource can share the same path if the locale part is different.
-     * 
+     *
      * @return the path excluding localization.
      */
     String getPath();
 
     /**
      * Get the Locale for this resource.
-     * 
+     *
      * @return the Locale.
      */
     Locale getLocale();
 
     /**
      * Get the path name of another version of the resource.
-     * 
+     *
      * @param locale the Locale for the new version.
      * @return the path including localization.
      */
@@ -67,7 +67,7 @@
 
     /**
      * Get a java.io.InputStream to read the contents of this resource.
-     * 
+     *
      * @return the InputStream.
      * @throws IOException if the contents cannot be read.
      */
@@ -75,8 +75,8 @@
 
     /**
      * Get the last modification date for this resource.
-     * 
-     * @return the difference, measured in milliseconds, between the current 
+     *
+     * @return the difference, measured in milliseconds, between the current
      * time and midnight, January 1, 1970 UTC.
      * @throws IOException if the last modification date cannot be found.
      */
diff --git a/tiles-request-api/src/main/java/org/apache/tiles/request/attribute/package-info.java b/tiles-request-api/src/main/java/org/apache/tiles/request/attribute/package-info.java
index 5b70eee..0eebcc1 100644
--- a/tiles-request-api/src/main/java/org/apache/tiles/request/attribute/package-info.java
+++ b/tiles-request-api/src/main/java/org/apache/tiles/request/attribute/package-info.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 /**
- * Methods to get, set and remove attributes from different sources (like HTTP requests 
+ * Methods to get, set and remove attributes from different sources (like HTTP requests
  * or sessions).
  * By implementing {@link org.apache.tiles.request.attribute.AttributeExtractor},
  * you can use a Map from {@link org.apache.tiles.request.collection} to manipulate the
diff --git a/tiles-request-api/src/main/java/org/apache/tiles/request/collection/package-info.java b/tiles-request-api/src/main/java/org/apache/tiles/request/collection/package-info.java
index 02818bf..cfd47eb 100644
--- a/tiles-request-api/src/main/java/org/apache/tiles/request/collection/package-info.java
+++ b/tiles-request-api/src/main/java/org/apache/tiles/request/collection/package-info.java
@@ -19,9 +19,9 @@
  * under the License.
  */
 /**
- * Special collections and maps for attributes (like HTTP request 
+ * Special collections and maps for attributes (like HTTP request
  * or session attributes).
- * These can be used to access another object's attributes through 
+ * These can be used to access another object's attributes through
  * a Map interface.
  * <ul>
  * <li> {@link org.apache.tiles.request.collection.ScopeMap} provides
diff --git a/tiles-request-api/src/main/java/org/apache/tiles/request/package-info.java b/tiles-request-api/src/main/java/org/apache/tiles/request/package-info.java
index 65d2558..8d57c32 100644
--- a/tiles-request-api/src/main/java/org/apache/tiles/request/package-info.java
+++ b/tiles-request-api/src/main/java/org/apache/tiles/request/package-info.java
@@ -19,20 +19,20 @@
  * under the License.
  */
 /**
- * This package defines the concept of "request" as the event causing a 
+ * This package defines the concept of "request" as the event causing a
  * document to be generated from a template. The process is also called
- * "rendering the template". Typical examples are servlet requests or 
- * portlet requests. 
- * 
- * This API is independent of the underlying technology, allowing the user 
- * to deal with similarities in servlets and portlets, or various template 
+ * "rendering the template". Typical examples are servlet requests or
+ * portlet requests.
+ *
+ * This API is independent of the underlying technology, allowing the user
+ * to deal with similarities in servlets and portlets, or various template
  * technologies, in a uniform way.
- * 
+ *
  * It is based on 3 main interfaces:
  * <ul>
- * <li>{@link org.apache.tiles.request.Request} is the main abstraction, 
+ * <li>{@link org.apache.tiles.request.Request} is the main abstraction,
  * encapsulating the parameters of the template (as attributes and scopes)
- * and the target document (as java.io.OutputStream). 
+ * and the target document (as java.io.OutputStream).
  * {@link org.apache.tiles.request.DispatchRequest} holds some features common
  * to servlets and portlets that are unlikely to be found outside of a JavaEE
  * web environment.
diff --git a/tiles-request-api/src/main/java/org/apache/tiles/request/render/package-info.java b/tiles-request-api/src/main/java/org/apache/tiles/request/render/package-info.java
index 1796814..25bb125 100644
--- a/tiles-request-api/src/main/java/org/apache/tiles/request/render/package-info.java
+++ b/tiles-request-api/src/main/java/org/apache/tiles/request/render/package-info.java
@@ -19,16 +19,16 @@
  * under the License.
  */
 /**
- * Classes to allow rendering of a template (described by its path) 
+ * Classes to allow rendering of a template (described by its path)
  * in a uniform way.
- * 
+ *
  * Besides the top level interface {@link org.apache.tiles.request.render.Renderer},
  * the package contains:
  * <ul>
- * <li>trivial examples: {@link org.apache.tiles.request.render.StringRenderer} 
+ * <li>trivial examples: {@link org.apache.tiles.request.render.StringRenderer}
  * and {@link org.apache.tiles.request.render.DispatchRenderer}.
  * <li>usual design patterns: {@link org.apache.tiles.request.render.ChainedDelegateRenderer},
- * {@link org.apache.tiles.request.render.PublisherRenderer}, and 
+ * {@link org.apache.tiles.request.render.PublisherRenderer}, and
  * {@link org.apache.tiles.request.render.RendererFactory}.
  * </ul>
  */
diff --git a/tiles-request-api/src/test/java/org/apache/tiles/request/locale/URLApplicationResourceTest.java b/tiles-request-api/src/test/java/org/apache/tiles/request/locale/URLApplicationResourceTest.java
index d9be5bc..fdb0bcf 100644
--- a/tiles-request-api/src/test/java/org/apache/tiles/request/locale/URLApplicationResourceTest.java
+++ b/tiles-request-api/src/test/java/org/apache/tiles/request/locale/URLApplicationResourceTest.java
@@ -192,21 +192,21 @@
         assertEquals("file:/", resource.getURL().toString());
         assertEquals(File.separator, resource.getFile().toString());
     }
-    
+
     @Test
     public void testGetLastModified() throws IOException {
     	URL url = getClass().getClassLoader().getResource("org/apache/tiles/request/test/locale/resource.txt");
     	URLApplicationResource resource = new URLApplicationResource("org/apache/tiles/request/test/locale/resource.txt", url);
     	assertTrue(resource.getLastModified() > 0);
     }
-    
+
     @Test
     public void testGetLastModifiedWithSpace() throws IOException {
     	URL url = getClass().getClassLoader().getResource("org/apache/tiles/request/test/locale/resource with space.txt");
     	URLApplicationResource resource = new URLApplicationResource("org/apache/tiles/request/test/locale/resource with space.txt", url);
     	assertTrue(resource.getLastModified() > 0);
     }
-    
+
     @Test
     public void testGetInputStream() throws IOException {
     	URL url = getClass().getClassLoader().getResource("org/apache/tiles/request/test/locale/resource.txt");
@@ -215,7 +215,7 @@
     	assertNotNull(is);
     	is.close();
     }
-    
+
     @Test
     public void testGetInputStreamWithSpace() throws IOException {
     	URL url = getClass().getClassLoader().getResource("org/apache/tiles/request/test/locale/resource with space.txt");
diff --git a/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java b/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java
index 6d18903..9cf51e8 100644
--- a/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java
+++ b/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagRuntime.java
@@ -34,14 +34,14 @@
 import freemarker.template.TemplateModel;
 
 /**
- * A Runtime for implementing a Freemarker Template Directive.   
+ * A Runtime for implementing a Freemarker Template Directive.
  */
 public class FreemarkerAutotagRuntime implements AutotagRuntime<Request>, TemplateDirectiveModel {
 
     private Environment env;
     private TemplateDirectiveBody body;
     private Map<String, TemplateModel> params;
-    
+
     /** {@inheritDoc} */
     @SuppressWarnings("unchecked")
     @Override
@@ -62,7 +62,7 @@
     public ModelBody createModelBody() {
         return new FreemarkerModelBody(env.getOut(), body);
     }
-    
+
     /** {@inheritDoc} */
     @Override
     public <T> T getParameter(String name, Class<T> type, T defaultValue) {
diff --git a/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java b/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
index 6a85415..91d7409 100644
--- a/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
+++ b/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
@@ -89,7 +89,7 @@
         Configuration configuration = createMock(Configuration.class);
         Set<String> names = new HashSet<String>();
         names.add("testGetKeys");
-        
+
         Writer writer = new StringWriter();
 
         expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
diff --git a/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java b/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java
index 7b710f2..3c601bc 100644
--- a/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java
+++ b/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/autotag/JspAutotagRuntime.java
@@ -35,7 +35,7 @@
     /** {@inheritDoc} */
     @Override
     public void doTag() {
-        // do nothing like the parent implementation, 
+        // do nothing like the parent implementation,
         // but don't throw exceptions either
     }
 
diff --git a/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java b/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java
index ded3e28..afb24be 100644
--- a/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java
+++ b/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java
@@ -50,4 +50,4 @@
     public void setValue(String key, Object value) {
         scope.put(key, value);
     }
-}
\ No newline at end of file
+}
