Author: apetrelli
Date: Sat May  8 15:36:51 2010
New Revision: 942404

URL: http://svn.apache.org/viewvc?rev=942404&view=rev
Log:
TILESSB-31
Refactored Freemarker request support.
Moved IteratorEnumeration to tiles-request-api.

Added:
    
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/IteratorEnumeration.java
      - copied, changed from r931641, 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/util/IteratorEnumeration.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java
   (with props)
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java
   (with props)
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java
   (with props)
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java
   (with props)
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
   (with props)
Removed:
    
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/AbstractEnumerationMap.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/AbstractEnumerationMapTest.java
Modified:
    
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMapTest.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/EnvironmentScopeMap.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
    
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java

Copied: 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/IteratorEnumeration.java
 (from r931641, 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/util/IteratorEnumeration.java)
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/IteratorEnumeration.java?p2=tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/IteratorEnumeration.java&p1=tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/util/IteratorEnumeration.java&r1=931641&r2=942404&rev=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles3/tiles-core/src/main/java/org/apache/tiles/util/IteratorEnumeration.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/IteratorEnumeration.java
 Sat May  8 15:36:51 2010
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-package org.apache.tiles.util;
+package org.apache.tiles.request.collection;
 
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -74,7 +74,8 @@ public class IteratorEnumeration<E> impl
     public E nextElement() {
         return iterator.next();
     }
-
-    // Properties
-    // 
-------------------------------------------------------------------------
+    
+    public Iterator<E> getIterator() {
+        return iterator;
+    }
 }

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java?rev=942404&r1=942403&r2=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
 Sat May  8 15:36:51 2010
@@ -139,7 +139,7 @@ public class ReadOnlyEnumerationMap<V> i
     @SuppressWarnings("unchecked")
     @Override
     public boolean equals(Object o) {
-        HasKeys<V> otherRequest = ((AbstractEnumerationMap<V>) o).request;
+        HasKeys<V> otherRequest = ((ReadOnlyEnumerationMap<V>) o).request;
         boolean retValue = true;
         Set<String> otherKeys = new HashSet<String>();
         for (Enumeration<String> attribs = otherRequest.getKeys(); attribs

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMapTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMapTest.java?rev=942404&r1=942403&r2=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMapTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMapTest.java
 Sat May  8 15:36:51 2010
@@ -234,8 +234,8 @@ public class ReadOnlyEnumerationMapTest 
     @Test
     public void testEqualsObject() {
         HasKeys<Integer> otherRequest = createMock(HasKeys.class);
-        AbstractEnumerationMap<Integer> otherMap = createMockBuilder(
-                AbstractEnumerationMap.class).withConstructor(otherRequest)
+        ReadOnlyEnumerationMap<Integer> otherMap = createMockBuilder(
+                ReadOnlyEnumerationMap.class).withConstructor(otherRequest)
                 .createMock();
         Enumeration<String> keys = createMock(Enumeration.class);
         Enumeration<String> otherKeys = createMock(Enumeration.class);
@@ -273,8 +273,8 @@ public class ReadOnlyEnumerationMapTest 
     @Test
     public void testEqualsObjectFalse() {
         HasKeys<Integer> otherRequest = createMock(HasKeys.class);
-        AbstractEnumerationMap<Integer> otherMap = createMockBuilder(
-                AbstractEnumerationMap.class).withConstructor(otherRequest)
+        ReadOnlyEnumerationMap<Integer> otherMap = createMockBuilder(
+                ReadOnlyEnumerationMap.class).withConstructor(otherRequest)
                 .createMock();
         Enumeration<String> keys = createMock(Enumeration.class);
         Enumeration<String> otherKeys = createMock(Enumeration.class);

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/EnvironmentScopeMap.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/EnvironmentScopeMap.java?rev=942404&r1=942403&r2=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/EnvironmentScopeMap.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/EnvironmentScopeMap.java
 Sat May  8 15:36:51 2010
@@ -20,20 +20,13 @@
  */
 package org.apache.tiles.request.freemarker;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
-import org.apache.tiles.request.util.MapEntry;
+import org.apache.tiles.request.collection.ScopeMap;
+import org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor;
 
 import freemarker.core.Environment;
-import freemarker.template.TemplateModel;
 import freemarker.template.TemplateModelException;
-import freemarker.template.utility.DeepUnwrap;
 
 /**
  * <p>
@@ -43,7 +36,7 @@ import freemarker.template.utility.DeepU
  * @version $Rev$ $Date$
  */
 
-final class EnvironmentScopeMap implements Map<String, Object> {
+final class EnvironmentScopeMap extends ScopeMap {
 
     /**
      * The request object to use.
@@ -56,186 +49,18 @@ final class EnvironmentScopeMap implemen
      * @param request The request object to use.
      */
     public EnvironmentScopeMap(Environment request) {
+        super(new EnvironmentScopeExtractor(request));
         this.request = request;
     }
 
-    /** {...@inheritdoc} */
-    public void clear() {
-        Iterator<String> keys = keySet().iterator();
-        while (keys.hasNext()) {
-            request.setVariable(keys.next(), null);
-        }
-    }
-
-    /** {...@inheritdoc} */
-    public boolean containsKey(Object key) {
-        return getAttribute(key(key)) != null;
-    }
-
-    /** {...@inheritdoc} */
-    public boolean containsValue(Object value) {
-        if (value == null) {
-            return (false);
-        }
-        Set<String> keys;
-        keys = getAttributeNames();
-        for (String name : keys) {
-            Object next = getAttribute(name);
-            if (next == value) {
-                return (true);
-            }
-        }
-        return (false);
-    }
-
-    /** {...@inheritdoc} */
     @SuppressWarnings("unchecked")
-    public Set<Map.Entry<String, Object>> entrySet() {
-        Set<Map.Entry<String, Object>> set = new HashSet<Map.Entry<String, 
Object>>();
-        Set<String> keys;
-        keys = getAttributeNames();
-        for (String name : keys) {
-            Object next = getAttribute(name);
-            set.add(new MapEntry(name, next, false));
-        }
-        return (set);
-    }
-
-    /** {...@inheritdoc} */
-    @Override
-    public boolean equals(Object o) {
-        Environment otherRequest = ((EnvironmentScopeMap) o).request;
-        boolean retValue = true;
-        Set<String> keys;
-        try {
-            keys = getAttributeNames();
-            for (String name : keys) {
-                Object next = getAttribute(name);
-                TemplateModel otherVariable = otherRequest.getVariable(name);
-                if (otherVariable != null) {
-                    Object otherObj = DeepUnwrap.unwrap(otherVariable);
-                    retValue = (next == null && otherObj == null)
-                            || (next != null && next.equals(otherObj));
-                }
-            }
-        } catch (TemplateModelException e) {
-            throw new FreemarkerRequestException("Cannot get the entry set", 
e);
-        }
-
-        return retValue;
-    }
-
-    /** {...@inheritdoc} */
-    public Object get(Object key) {
-        return getAttribute(key(key));
-    }
-
-    /** {...@inheritdoc} */
     @Override
-    public int hashCode() {
-        return (request.hashCode());
-    }
-
-    /** {...@inheritdoc} */
-    public boolean isEmpty() {
-        return (size() < 1);
-    }
-
-    /** {...@inheritdoc} */
     public Set<String> keySet() {
-        return getAttributeNames();
-    }
-
-    /** {...@inheritdoc} */
-    public Object put(String key, Object value) {
-        if (value == null) {
-            return (remove(key));
-        }
-        String skey = key(key);
-        Object previous = getAttribute(skey);
-        setAttribute(skey, value);
-        return (previous);
-    }
-
-    /** {...@inheritdoc} */
-    public void putAll(Map<? extends String, ? extends Object> map) {
-        Iterator<? extends String> keys = map.keySet().iterator();
-        while (keys.hasNext()) {
-            String key = keys.next();
-            setAttribute(key, map.get(key));
-        }
-    }
-
-    /** {...@inheritdoc} */
-    public Object remove(Object key) {
-        String skey = key(key);
-        Object previous = getAttribute(skey);
-        setAttribute(skey, null);
-        return (previous);
-    }
-
-    /** {...@inheritdoc} */
-    public int size() {
-        return getAttributeNames().size();
-    }
-
-    /** {...@inheritdoc} */
-    public Collection<Object> values() {
-        List<Object> list = new ArrayList<Object>();
-        for(String name : getAttributeNames()) {
-            list.add(getAttribute(name));
-        }
-        return (list);
-    }
-
-    /**
-     * Returns the string representation of the key.
-     *
-     * @param key The key.
-     * @return The string representation of the key.
-     * @throws IllegalArgumentException If the key is <code>null</code>.
-     */
-    private String key(Object key) {
-        if (key == null) {
-            throw new IllegalArgumentException();
-        } else if (key instanceof String) {
-            return ((String) key);
-        } else {
-            return (key.toString());
-        }
-    }
-
-    private Object getAttribute(String name) {
-        try {
-            TemplateModel variable = request.getVariable(name);
-            if (variable != null) {
-                return DeepUnwrap.unwrap(variable);
-            }
-            return null;
-        } catch (TemplateModelException e) {
-            throw new FreemarkerRequestException(
-                    "Cannot get attribute with name '" + name + "'", e);
-        }
-    }
-
-    private void setAttribute(String name, Object value) {
-        try {
-            TemplateModel model = request.getObjectWrapper().wrap(value);
-            request.setVariable(name, model);
-        } catch (TemplateModelException e) {
-            throw new FreemarkerRequestException(
-                    "Error when wrapping an object setting the '" + name
-                            + "' attribute", e);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private Set<String> getAttributeNames() {
         try {
             return request.getKnownVariableNames();
         } catch (TemplateModelException e) {
             throw new FreemarkerRequestException(
-                    "Cannot get variable names from request", e);
+                    "Cannot get known variable names", e);
         }
     }
 }

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java?rev=942404&r1=942403&r2=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
 Sat May  8 15:36:51 2010
@@ -6,22 +6,17 @@ public class NotAvailableFreemarkerServl
         NotAvailableFeatureException {
 
     public NotAvailableFreemarkerServletException() {
-        // TODO Auto-generated constructor stub
     }
 
     public NotAvailableFreemarkerServletException(String message) {
         super(message);
-        // TODO Auto-generated constructor stub
     }
 
     public NotAvailableFreemarkerServletException(Throwable e) {
         super(e);
-        // TODO Auto-generated constructor stub
     }
 
     public NotAvailableFreemarkerServletException(String message, Throwable e) 
{
         super(message, e);
-        // TODO Auto-generated constructor stub
     }
-
 }

Added: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java?rev=942404&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java
 Sat May  8 15:36:51 2010
@@ -0,0 +1,64 @@
+package org.apache.tiles.request.freemarker.extractor;
+
+import java.util.Enumeration;
+
+import org.apache.tiles.request.collection.IteratorEnumeration;
+import org.apache.tiles.request.collection.extractor.AttributeExtractor;
+import org.apache.tiles.request.freemarker.FreemarkerRequestException;
+
+import freemarker.core.Environment;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import freemarker.template.utility.DeepUnwrap;
+
+public class EnvironmentScopeExtractor implements AttributeExtractor {
+
+    private Environment request;
+
+    public EnvironmentScopeExtractor(Environment request) {
+        this.request = request;
+    }
+
+    @Override
+    public void removeValue(String name) {
+        request.setVariable(name, null);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public Enumeration<String> getKeys() {
+        try {
+            return new IteratorEnumeration<String>(request
+                    .getKnownVariableNames().iterator());
+        } catch (TemplateModelException e) {
+            throw new FreemarkerRequestException(
+                    "Cannot iterate variable names correctly", e);
+        }
+    }
+
+    @Override
+    public Object getValue(String key) {
+        try {
+            TemplateModel variable = request.getVariable(key);
+            if (variable != null) {
+                return DeepUnwrap.unwrap(variable);
+            }
+            return null;
+        } catch (TemplateModelException e) {
+            throw new FreemarkerRequestException(
+                    "Cannot get attribute with name '" + key + "'", e);
+        }
+    }
+
+    @Override
+    public void setValue(String key, Object value) {
+        try {
+            TemplateModel model = request.getObjectWrapper().wrap(value);
+            request.setVariable(key, model);
+        } catch (TemplateModelException e) {
+            throw new FreemarkerRequestException(
+                    "Error when wrapping an object setting the '" + key
+                            + "' attribute", e);
+        }
+    }
+}

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractor.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java?rev=942404&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java
 Sat May  8 15:36:51 2010
@@ -0,0 +1,82 @@
+/**
+ *
+ */
+package org.apache.tiles.request.freemarker;
+
+import static org.easymock.EasyMock.*;
+import static org.easymock.classextension.EasyMock.*;
+import static org.junit.Assert.*;
+
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Set;
+
+import org.junit.Test;
+
+import freemarker.core.Environment;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateHashModelEx;
+import freemarker.template.TemplateModelException;
+
+/**
+ * Tests {...@link EnvironmentScopeMap}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class EnvironmentScopeMapTest {
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.EnvironmentScopeMap#keySet()}.
+     */
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testKeySet() {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        Set<String> names = createMock(Set.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(template.getConfiguration()).andReturn(configuration);
+        expect(configuration.getSharedVariableNames()).andReturn(names);
+
+        replay(template, model, configuration, names);
+        Environment env = new Environment(template, model, writer);
+        EnvironmentScopeMap map = new EnvironmentScopeMap(env);
+        assertEquals(names, map.keySet());
+        verify(template, model, configuration, names);
+    }
+
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.EnvironmentScopeMap#keySet()}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @SuppressWarnings("unchecked")
+    @Test(expected=FreemarkerRequestException.class)
+    public void testKeySetException() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModelEx model = createMock(TemplateHashModelEx.class);
+        Configuration configuration = createMock(Configuration.class);
+        Set<String> names = createMock(Set.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(model.keys()).andThrow(new TemplateModelException());
+        expect(template.getConfiguration()).andReturn(configuration);
+        expect(configuration.getSharedVariableNames()).andReturn(names);
+
+        try {
+            replay(template, model, configuration, names);
+            Environment env = new Environment(template, model, writer);
+            EnvironmentScopeMap map = new EnvironmentScopeMap(env);
+            map.keySet();
+        } finally {
+            verify(template, model, configuration, names);
+        }
+    }
+}

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/EnvironmentScopeMapTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java?rev=942404&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java
 Sat May  8 15:36:51 2010
@@ -0,0 +1,77 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tiles.request.freemarker;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/**
+ * Tests {...@link FreemarkerRequestException}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class FreemarkerRequestExceptionTest {
+
+    /**
+     * Test method for {...@link 
FreemarkerRequestException#FreemarkerRequestException()}.
+     */
+    @Test
+    public void testFreemarkerRequestException() {
+        FreemarkerRequestException exception = new 
FreemarkerRequestException();
+        assertNull(exception.getMessage());
+        assertNull(exception.getCause());
+    }
+
+    /**
+     * Test method for {...@link 
FreemarkerRequestException#FreemarkerRequestException(java.lang.String)}.
+     */
+    @Test
+    public void testFreemarkerRequestExceptionString() {
+        FreemarkerRequestException exception = new 
FreemarkerRequestException("my message");
+        assertEquals("my message", exception.getMessage());
+        assertNull(exception.getCause());
+    }
+
+    /**
+     * Test method for {...@link 
FreemarkerRequestException#FreemarkerRequestException(java.lang.Throwable)}.
+     */
+    @Test
+    public void testFreemarkerRequestExceptionThrowable() {
+        Throwable cause = new Throwable();
+        FreemarkerRequestException exception = new 
FreemarkerRequestException(cause);
+        assertEquals(cause.toString(), exception.getMessage());
+        assertEquals(cause, exception.getCause());
+    }
+
+    /**
+     * Test method for {...@link 
FreemarkerRequestException#FreemarkerRequestException(java.lang.String, 
java.lang.Throwable)}.
+     */
+    @Test
+    public void testFreemarkerRequestExceptionStringThrowable() {
+        Throwable cause = new Throwable();
+        FreemarkerRequestException exception = new 
FreemarkerRequestException("my message", cause);
+        assertEquals("my message", exception.getMessage());
+        assertEquals(cause, exception.getCause());
+    }
+
+}

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestExceptionTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java?rev=942404&r1=942403&r2=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
 Sat May  8 15:36:51 2010
@@ -21,26 +21,34 @@
 
 package org.apache.tiles.request.freemarker;
 
-import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
 import static org.easymock.classextension.EasyMock.*;
+import static org.junit.Assert.*;
 
 import java.io.IOException;
+import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.Request;
-import org.apache.tiles.request.freemarker.FreemarkerRequest;
 import org.apache.tiles.request.scope.ContextResolver;
+import org.apache.tiles.request.servlet.ServletRequest;
 import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
 import freemarker.core.Environment;
+import freemarker.ext.servlet.HttpRequestHashModel;
+import freemarker.template.ObjectWrapper;
 import freemarker.template.Template;
 import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateModelException;
 
 /**
  * Tests {...@link FreemarkerRequest}.
@@ -85,6 +93,38 @@ public class FreemarkerRequestTest {
     }
 
     /**
+     * Tests {...@link 
FreemarkerRequest#createServletFreemarkerRequest(ApplicationContext, 
Environment)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test
+    public void testCreateServletFreemarkerRequest() throws 
TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        PrintWriter writer = new PrintWriter(new StringWriter());
+        HttpServletRequest httpRequest = createMock(HttpServletRequest.class);
+        HttpServletResponse httpResponse = 
createMock(HttpServletResponse.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+
+        replay(httpRequest, httpResponse, objectWrapper);
+        HttpRequestHashModel requestHashModel = new 
HttpRequestHashModel(httpRequest, httpResponse, objectWrapper);
+        expect(model.get("Request")).andReturn(requestHashModel);
+
+        replay(template, model, applicationContext);
+        Environment env = new Environment(template, model, writer);
+        Locale locale = Locale.ITALY;
+        env.setLocale(locale);
+
+        FreemarkerRequest request = 
FreemarkerRequest.createServletFreemarkerRequest(applicationContext, env);
+        ServletRequest servletRequest = (ServletRequest) 
request.getWrappedRequest();
+        assertEquals(httpRequest, servletRequest.getRequest());
+        assertEquals(httpResponse, servletRequest.getResponse());
+        verify(template, model, httpRequest, httpResponse, objectWrapper, 
applicationContext);
+    }
+
+    /**
      * Tests {...@link FreemarkerRequest#dispatch(String)}.
      *
      * @throws IOException If something goes wrong.
@@ -111,6 +151,30 @@ public class FreemarkerRequestTest {
     }
 
     /**
+     * Tests {...@link FreemarkerRequest#getPageScope()}.
+     */
+    @Test
+    public void testGetPageScope() {
+        Request enclosedRequest = createMock(Request.class);
+        replay(enclosedRequest);
+        context = new FreemarkerRequest(enclosedRequest, env);
+        assertTrue(context.getPageScope() instanceof EnvironmentScopeMap);
+        verify(enclosedRequest);
+    }
+
+    /**
+     * Tests {...@link FreemarkerRequest#getNativeScopes()}.
+     */
+    @Test
+    public void testGetNativeScopes() {
+        Request enclosedRequest = createMock(Request.class);
+        replay(enclosedRequest);
+        context = new FreemarkerRequest(enclosedRequest, env);
+        assertArrayEquals(new String[] {"page"}, context.getNativeScopes());
+        verify(enclosedRequest);
+    }
+
+    /**
      * Tests {...@link FreemarkerRequest#getRequestLocale()}.
      */
     @Test
@@ -163,6 +227,30 @@ public class FreemarkerRequestTest {
     }
 
     /**
+     * Tests {...@link FreemarkerRequest#getPrintWriter()}.
+     *
+     * @throws IOException If something goes wrong.
+     */
+    @Test
+    public void testGetPrintWriterPrintWriter() {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        PrintWriter writer = new PrintWriter(new StringWriter());
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        replay(template, model);
+        Environment env = new Environment(template, model, writer);
+        Locale locale = Locale.ITALY;
+        env.setLocale(locale);
+        Request enclosedRequest = createMock(Request.class);
+
+        replay(enclosedRequest);
+        context = new FreemarkerRequest(enclosedRequest, env);
+        assertSame(writer, context.getPrintWriter());
+        verify(enclosedRequest, template, model);
+    }
+
+
+    /**
      * Tests {...@link FreemarkerRequest#getWriter()}.
      *
      * @throws IOException If something goes wrong.
@@ -177,7 +265,6 @@ public class FreemarkerRequestTest {
         assertNotNull(context.getWriter());
         verify(enclosedRequest);
     }
-
     /**
      * Tests {...@link FreemarkerRequest#getRequestObjects()}.
      */

Modified: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java?rev=942404&r1=942403&r2=942404&view=diff
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java
 (original)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java
 Sat May  8 15:36:51 2010
@@ -15,7 +15,9 @@ import javax.servlet.GenericServlet;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.freemarker.FreemarkerRequestUtil;
+import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -89,6 +91,28 @@ public class FreemarkerRequestUtilTest {
         verify(template, model, request, objectWrapper);
     }
 
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.FreemarkerRequestUtil#getRequestHashModel(freemarker.core.Environment)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test(expected=NotAvailableFreemarkerServletException.class)
+    public void testGetRequestHashModelException() throws 
TemplateModelException {
+        HttpServletRequest request = createMock(HttpServletRequest.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+
+        expect(model.get("Request")).andThrow(new TemplateModelException());
+
+        replay(template, model, request, objectWrapper);
+        try {
+            env = new Environment(template, model, writer);
+            locale = Locale.ITALY;
+            env.setLocale(locale);
+            FreemarkerRequestUtil.getRequestHashModel(env);
+        } finally {
+            verify(template, model, request, objectWrapper);
+        }
+    }
+
 
     /**
      * Test method for {...@link 
org.apache.tiles.request.freemarker.FreemarkerRequestUtil
@@ -113,4 +137,57 @@ public class FreemarkerRequestUtilTest {
         assertEquals(servletContextModel, 
FreemarkerRequestUtil.getServletContextHashModel(env));
         verify(template, model, servlet, servletContext, objectWrapper);
     }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.FreemarkerRequestUtil
+     * #getServletContextHashModel(freemarker.core.Environment)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test(expected=NotAvailableFreemarkerServletException.class)
+    public void testGetServletContextHashModelException() throws 
TemplateModelException {
+        GenericServlet servlet = createMock(GenericServlet.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        replay(servlet, objectWrapper);
+
+        expect(model.get("Application")).andThrow(new 
TemplateModelException());
+
+        replay(template, model);
+        try {
+            env = new Environment(template, model, writer);
+            locale = Locale.ITALY;
+            env.setLocale(locale);
+            FreemarkerRequestUtil.getServletContextHashModel(env);
+        } finally {
+            verify(template, model, servlet, objectWrapper);
+        }
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.FreemarkerRequestUtil
+     * #getApplicationContext(Environment)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test
+    public void testGetApplicationContext() throws TemplateModelException {
+        GenericServlet servlet = createMock(GenericServlet.class);
+        ServletContext servletContext = createMock(ServletContext.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        ApplicationContext applicationContext = 
createMock(ApplicationContext.class);
+
+        expect(servlet.getServletContext()).andReturn(servletContext).times(2);
+        expect(servletContext.getAttribute(ApplicationAccess
+                .APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(applicationContext);
+
+        replay(servlet, objectWrapper);
+        ServletContextHashModel servletContextModel = new 
ServletContextHashModel(servlet, objectWrapper);
+
+        expect(model.get("Application")).andReturn(servletContextModel);
+
+        replay(template, model, servletContext);
+        env = new Environment(template, model, writer);
+        locale = Locale.ITALY;
+        env.setLocale(locale);
+        assertEquals(applicationContext, 
FreemarkerRequestUtil.getApplicationContext(env));
+        verify(template, model, servlet, servletContext, objectWrapper);
+    }
 }

Added: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java?rev=942404&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java
 Sat May  8 15:36:51 2010
@@ -0,0 +1,77 @@
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tiles.request.freemarker;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+/**
+ * Tests {...@link NotAvailableFreemarkerServletException}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NotAvailableFreemarkerServletExceptionTest {
+
+    /**
+     * Test method for {...@link 
NotAvailableFreemarkerServletException#NotAvailableFreemarkerServletException()}.
+     */
+    @Test
+    public void testNotAvailableFreemarkerServletException() {
+        NotAvailableFreemarkerServletException exception = new 
NotAvailableFreemarkerServletException();
+        assertNull(exception.getMessage());
+        assertNull(exception.getCause());
+    }
+
+    /**
+     * Test method for {...@link 
NotAvailableFreemarkerServletException#NotAvailableFreemarkerServletException(java.lang.String)}.
+     */
+    @Test
+    public void testNotAvailableFreemarkerServletExceptionString() {
+        NotAvailableFreemarkerServletException exception = new 
NotAvailableFreemarkerServletException("my message");
+        assertEquals("my message", exception.getMessage());
+        assertNull(exception.getCause());
+    }
+
+    /**
+     * Test method for {...@link 
NotAvailableFreemarkerServletException#NotAvailableFreemarkerServletException(java.lang.Throwable)}.
+     */
+    @Test
+    public void testNotAvailableFreemarkerServletExceptionThrowable() {
+        Throwable cause = new Throwable();
+        NotAvailableFreemarkerServletException exception = new 
NotAvailableFreemarkerServletException(cause);
+        assertEquals(cause.toString(), exception.getMessage());
+        assertEquals(cause, exception.getCause());
+    }
+
+    /**
+     * Test method for {...@link 
NotAvailableFreemarkerServletException#NotAvailableFreemarkerServletException(java.lang.String,
 java.lang.Throwable)}.
+     */
+    @Test
+    public void testNotAvailableFreemarkerServletExceptionStringThrowable() {
+        Throwable cause = new Throwable();
+        NotAvailableFreemarkerServletException exception = new 
NotAvailableFreemarkerServletException("my message", cause);
+        assertEquals("my message", exception.getMessage());
+        assertEquals(cause, exception.getCause());
+    }
+
+}

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletExceptionTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
URL: 
http://svn.apache.org/viewvc/tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java?rev=942404&view=auto
==============================================================================
--- 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
 (added)
+++ 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
 Sat May  8 15:36:51 2010
@@ -0,0 +1,246 @@
+/**
+ *
+ */
+package org.apache.tiles.request.freemarker.extractor;
+
+import static org.easymock.EasyMock.*;
+import static org.easymock.classextension.EasyMock.*;
+import static org.junit.Assert.*;
+
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.tiles.request.collection.IteratorEnumeration;
+import org.apache.tiles.request.freemarker.FreemarkerRequestException;
+import org.junit.Test;
+
+import freemarker.core.Environment;
+import freemarker.template.Configuration;
+import freemarker.template.ObjectWrapper;
+import freemarker.template.Template;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateHashModelEx;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateScalarModel;
+
+/**
+ * Tests {...@link EnvironmentScopeExtractor}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class EnvironmentScopeExtractorTest {
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#removeValue(java.lang.String)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test
+    public void testRemoveValue() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateModel valueModel = createMock(TemplateModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(model.get("key")).andReturn(null);
+        expect(template.getConfiguration()).andReturn(configuration);
+        expect(configuration.getSharedVariable("key")).andReturn(null);
+
+        replay(template, model, valueModel, configuration);
+        Environment env = new Environment(template, model, writer);
+        env.setVariable("key", valueModel);
+        EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+        extractor.removeValue("key");
+        assertNull(env.getVariable("key"));
+        verify(template, model, valueModel, configuration);
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#getKeys()}.
+     */
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testGetKeys() {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateModel valueModel = createMock(TemplateModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        Set<String> names = createMock(Set.class);
+        Iterator<String> namesIt = createMock(Iterator.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(template.getConfiguration()).andReturn(configuration);
+        expect(configuration.getSharedVariableNames()).andReturn(names);
+        expect(names.iterator()).andReturn(namesIt);
+
+        replay(template, model, valueModel, configuration, names, namesIt);
+        Environment env = new Environment(template, model, writer);
+        EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+        assertEquals(namesIt, ((IteratorEnumeration) 
extractor.getKeys()).getIterator());
+        verify(template, model, valueModel, configuration, names, namesIt);
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#getKeys()}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @SuppressWarnings("unchecked")
+    @Test(expected=FreemarkerRequestException.class)
+    public void testGetKeysException() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModelEx model = createMock(TemplateHashModelEx.class);
+        TemplateModel valueModel = createMock(TemplateModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        Set<String> names = createMock(Set.class);
+        Iterator<String> namesIt = createMock(Iterator.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(model.keys()).andThrow(new TemplateModelException());
+        expect(template.getConfiguration()).andReturn(configuration);
+        expect(configuration.getSharedVariableNames()).andReturn(names);
+
+        replay(template, model, valueModel, configuration, names, namesIt);
+        try {
+            Environment env = new Environment(template, model, writer);
+            EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+            extractor.getKeys();
+        } finally {
+            verify(template, model, valueModel, configuration, names, namesIt);
+        }
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#getValue(java.lang.String)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test
+    public void testGetValue() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateScalarModel valueModel = createMock(TemplateScalarModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(valueModel.getAsString()).andReturn("value");
+
+        replay(template, model, valueModel, configuration, objectWrapper);
+        Environment env = new Environment(template, model, writer);
+        env.setVariable("key", valueModel);
+        EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+        assertEquals("value", extractor.getValue("key"));
+        verify(template, model, valueModel, configuration, objectWrapper);
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#getValue(java.lang.String)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test
+    public void testGetValueNull() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateScalarModel valueModel = createMock(TemplateScalarModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(model.get("key")).andReturn(null);
+        expect(template.getConfiguration()).andReturn(configuration);
+        expect(configuration.getSharedVariable("key")).andReturn(null);
+
+        replay(template, model, valueModel, configuration, objectWrapper);
+        Environment env = new Environment(template, model, writer);
+        EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+        assertNull(extractor.getValue("key"));
+        verify(template, model, valueModel, configuration, objectWrapper);
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#getValue(java.lang.String)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test(expected=FreemarkerRequestException.class)
+    public void testGetValueException() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateScalarModel valueModel = createMock(TemplateScalarModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(model.get("key")).andThrow(new TemplateModelException());
+
+        replay(template, model, valueModel, configuration, objectWrapper);
+        try {
+            Environment env = new Environment(template, model, writer);
+            EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+            extractor.getValue("key");
+        } finally {
+            verify(template, model, valueModel, configuration, objectWrapper);
+        }
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#setValue(java.lang.String,
 java.lang.Object)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test
+    public void testSetValue() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateModel valueModel = createMock(TemplateModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(template.getObjectWrapper()).andReturn(objectWrapper);
+        expect(objectWrapper.wrap("value")).andReturn(valueModel);
+
+        replay(template, model, valueModel, configuration, objectWrapper);
+        Environment env = new Environment(template, model, writer);
+        EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+        extractor.setValue("key", "value");
+        assertEquals(valueModel, env.getVariable("key"));
+        verify(template, model, valueModel, configuration, objectWrapper);
+    }
+
+    /**
+     * Test method for {...@link 
org.apache.tiles.request.freemarker.extractor.EnvironmentScopeExtractor#setValue(java.lang.String,
 java.lang.Object)}.
+     * @throws TemplateModelException If something goes wrong.
+     */
+    @Test(expected=FreemarkerRequestException.class)
+    public void testSetValueException() throws TemplateModelException {
+        Template template = createMock(Template.class);
+        TemplateHashModel model = createMock(TemplateHashModel.class);
+        TemplateModel valueModel = createMock(TemplateModel.class);
+        Configuration configuration = createMock(Configuration.class);
+        ObjectWrapper objectWrapper = createMock(ObjectWrapper.class);
+        Writer writer = new StringWriter();
+
+        expect(template.getMacros()).andReturn(new HashMap<Object, Object>());
+        expect(template.getObjectWrapper()).andReturn(objectWrapper);
+        expect(objectWrapper.wrap("value")).andThrow(new 
TemplateModelException());
+
+        replay(template, model, valueModel, configuration, objectWrapper);
+        try {
+            Environment env = new Environment(template, model, writer);
+            EnvironmentScopeExtractor extractor = new 
EnvironmentScopeExtractor(env);
+            extractor.setValue("key", "value");
+            assertEquals(valueModel, env.getVariable("key"));
+        } finally {
+            verify(template, model, valueModel, configuration, objectWrapper);
+        }
+    }
+}

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tiles/sandbox/trunk/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/extractor/EnvironmentScopeExtractorTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL


Reply via email to