Author: mck
Date: Wed Jun 13 06:01:41 2012
New Revision: 1349645

URL: http://svn.apache.org/viewvc?rev=1349645&view=rev
Log:
TILES-549 - Improve code quality (post 3.0 release)

Added:
    
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/renderer/
    
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/renderer/OptionsRendererTest.java
      - copied, changed from r1334692, 
tiles/request/trunk/tiles-request-api/src/test/java/org/apache/tiles/request/render/StringRendererTest.java
Modified:
    
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/renderer/OptionsRenderer.java

Modified: 
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/renderer/OptionsRenderer.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/renderer/OptionsRenderer.java?rev=1349645&r1=1349644&r2=1349645&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/renderer/OptionsRenderer.java
 (original)
+++ 
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/renderer/OptionsRenderer.java
 Wed Jun 13 06:01:41 2012
@@ -59,11 +59,14 @@ import org.slf4j.LoggerFactory;
  * will look for content.jsp <br/>
  * first in "/WEB-INF/tiles/fragments/car/" then <br/>
  * second in "/WEB-INF/tiles/fragments/vechile/" and <br/>
- * last in "/WEB-INF/tiles/fragments/advert". 
+ * last in "/WEB-INF/tiles/fragments/advert".
  * <p/>
  * <p/>
  * Currently only supports one occurrance of such an "option" pattern in the 
attribute's value.
  *
+ * Limitation: "looking" for templates is implemented using 
applicationContext.getResource(..)
+ * therefore the option values in the options list need to be visible as 
applicationResources.
+ *
  */
 public final class OptionsRenderer implements Renderer {
 
@@ -98,9 +101,9 @@ public final class OptionsRenderer imple
                     .getAttributeContext(request)
                     .getAttribute(match);
 
-            if (null == fallbacks){
+            if (null == fallbacks) {
                 throw new IllegalStateException("A matching list-attribute 
name=\"" + match + "\" must be defined.");
-            }else if (fallbacks.getValue().isEmpty()){
+            } else if (fallbacks.getValue().isEmpty()) {
                 throw new IllegalStateException(
                         "list-attribute name=\"" + match + "\" must have 
minimum one attribute");
             }
@@ -131,7 +134,7 @@ public final class OptionsRenderer imple
                 if (ex.getMessage().contains(template)) {
                     // expected outcome. continue loop.
                     LOG.trace(ex.getMessage());
-                }else{
+                } else {
                     // comes from an inner templateAttribute.render(..) so 
throw on
                     throw ex;
                 }
@@ -165,11 +168,11 @@ public final class OptionsRenderer imple
                 : 1000 * 60 * 5;
 
         static boolean isTemplateMissing(final String template) {
-            if (0 < CACHE_LIFE && System.currentTimeMillis() > 
cacheLastCleaned + CACHE_LIFE){
+            if (0 < CACHE_LIFE && System.currentTimeMillis() > 
cacheLastCleaned + CACHE_LIFE) {
                 cacheLastCleaned = System.currentTimeMillis();
                 TEMPLATE_EXISTS.clear();
                 return false;
-            }else{
+            } else {
                 return TEMPLATE_EXISTS.containsKey(template) && 
!TEMPLATE_EXISTS.get(template);
             }
         }

Copied: 
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/renderer/OptionsRendererTest.java
 (from r1334692, 
tiles/request/trunk/tiles-request-api/src/test/java/org/apache/tiles/request/render/StringRendererTest.java)
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/renderer/OptionsRendererTest.java?p2=tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/renderer/OptionsRendererTest.java&p1=tiles/request/trunk/tiles-request-api/src/test/java/org/apache/tiles/request/render/StringRendererTest.java&r1=1334692&r2=1349645&rev=1349645&view=diff
==============================================================================
--- 
tiles/request/trunk/tiles-request-api/src/test/java/org/apache/tiles/request/render/StringRendererTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/renderer/OptionsRendererTest.java
 Wed Jun 13 06:01:41 2012
@@ -18,63 +18,122 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.render;
+package org.apache.tiles.extras.renderer;
 
 import static org.easymock.EasyMock.*;
 import static org.junit.Assert.*;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.StringWriter;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import org.apache.tiles.Attribute;
+import org.apache.tiles.ListAttribute;
+import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.impl.BasicTilesContainer;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationResource;
 
 import org.apache.tiles.request.Request;
-import org.junit.Before;
+import org.apache.tiles.request.locale.PostfixedApplicationResource;
+import org.apache.tiles.request.render.StringRenderer;
 import org.junit.Test;
 
 /**
- * Tests {@link StringRenderer}.
+ * Tests {@link OptionsRenderer}.
  *
  * @version $Rev$ $Date$
  */
-public class StringRendererTest {
+public final class OptionsRendererTest {
 
-    /**
-     * The renderer.
-     */
-    private StringRenderer renderer;
+    private final BasicTilesContainer container = new BasicTilesContainer();
 
-    /** {@inheritDoc} */
-    @Before
-    public void setUp() {
-        renderer = new StringRenderer();
-    }
+    private final Map<String, Object> appScope = new HashMap<String, 
Object>(){{
+        put(TilesAccess.CONTAINER_ATTRIBUTE, container);
+    }};
+
+    private final Map<String, Object> requestScope = new HashMap<String, 
Object>();
+
+    private final ApplicationResource template = new 
PostfixedApplicationResource("Result"){
+        @Override
+        public InputStream getInputStream() throws IOException {
+            throw new AssertionError("Shouldn't be called.");
+        }
+        @Override
+        public long getLastModified() throws IOException {
+            return 0;
+        }
+    };
+
+    private final ApplicationContext context = new ApplicationContext(){
+        @Override
+        public Object getContext() {
+            throw new AssertionError("Shouldn't be called.");
+        }
+        @Override
+        public Map<String, Object> getApplicationScope() {
+            return appScope;
+        }
+        @Override
+        public Map<String, String> getInitParams() {
+            throw new AssertionError("Shouldn't be called.");
+        }
+        @Override
+        public ApplicationResource getResource(String string) {
+            return template;
+        }
+        @Override
+        public ApplicationResource getResource(ApplicationResource ar, Locale 
locale) {
+            throw new AssertionError("Shouldn't be called.");
+        }
+        @Override
+        public Collection<ApplicationResource> getResources(String string) {
+            throw new AssertionError("Shouldn't be called.");
+        }
+    };
 
     /**
      * Tests
-     * {@link StringRenderer#render(String, Request)}.
+     * {@link OptionsRenderer#render(String, Request)}.
      *
      * @throws IOException If something goes wrong during rendition.
      */
     @Test
     public void testWrite() throws IOException {
         StringWriter writer = new StringWriter();
-        Request requestContext = createMock(Request.class);
-        expect(requestContext.getWriter()).andReturn(writer);
-        replay(requestContext);
-        renderer.render("Result", requestContext);
+        Request request = createMock(Request.class);
+
+        requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, 
container);
+
+        
expect(request.getContext(matches("request"))).andReturn(requestScope).anyTimes();
+        expect(request.getApplicationContext()).andReturn(context);
+        expect(request.getWriter()).andReturn(writer);
+        replay(request);
+
+        container
+                .getAttributeContext(request)
+                .putAttribute("test-fallback", new ListAttribute(){{
+                    add(new Attribute("Result"));
+                }});
+
+        OptionsRenderer renderer = new OptionsRenderer(context, new 
StringRenderer());
+        renderer.render("{options[test-fallback]}", request);
         writer.close();
         assertEquals("Not written 'Result'", "Result", writer.toString());
-        verify(requestContext);
+        verify(request);
     }
 
     /**
      * Tests
-     * {@link StringRenderer#isRenderable(String, Request)}.
+     * {@link OptionsRenderer#isRenderable(String, Request)}.
      */
     @Test
     public void testIsRenderable() {
         Request requestContext = createMock(Request.class);
-        replay(requestContext);
-        assertTrue(renderer.isRenderable("Result", requestContext));
-        verify(requestContext);
+        OptionsRenderer renderer = new OptionsRenderer(context, new 
StringRenderer());
+        assertTrue(renderer.isRenderable("any-string", requestContext));
     }
 }


Reply via email to