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));
}
}