You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2009/10/03 14:15:06 UTC
svn commit: r821299 - in /tiles/framework/trunk:
tiles-core/src/main/java/org/apache/tiles/factory/
tiles-core/src/main/java/org/apache/tiles/renderer/
tiles-core/src/main/java/org/apache/tiles/renderer/impl/
tiles-core/src/test/java/org/apache/tiles/f...
Author: apetrelli
Date: Sat Oct 3 12:15:05 2009
New Revision: 821299
URL: http://svn.apache.org/viewvc?rev=821299&view=rev
Log:
TILES-470
Added a chained attribute renderer and moved pattern recognition to single renderers.
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRenderer.java
- copied, changed from r820373, tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java (with props)
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRendererTest.java
- copied, changed from r820373, tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRendererTest.java
tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/
tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java (with props)
tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/
tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java (with props)
Removed:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRendererTest.java
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/DefinitionAttributeRendererTest.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/StringAttributeRendererTest.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/TemplateAttributeRendererTest.java
tiles/framework/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRenderer.java
tiles/framework/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/renderer/VelocityAttributeRenderer.java
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java Sat Oct 3 12:15:05 2009
@@ -54,11 +54,12 @@
import org.apache.tiles.reflect.ClassUtil;
import org.apache.tiles.renderer.AttributeRenderer;
import org.apache.tiles.renderer.RendererFactory;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
import org.apache.tiles.renderer.impl.BasicRendererFactory;
import org.apache.tiles.renderer.impl.DefinitionAttributeRenderer;
import org.apache.tiles.renderer.impl.StringAttributeRenderer;
import org.apache.tiles.renderer.impl.TemplateAttributeRenderer;
-import org.apache.tiles.renderer.impl.UntypedDelegateAttributeRenderer;
+import org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,17 +74,17 @@
/**
* The string renderer name.
*/
- private static final String STRING_RENDERER_NAME = "string";
+ protected static final String STRING_RENDERER_NAME = "string";
/**
* The template renderer name.
*/
- private static final String TEMPLATE_RENDERER_NAME = "template";
+ protected static final String TEMPLATE_RENDERER_NAME = "template";
/**
* The definition renderer name.
*/
- private static final String DEFINITION_RENDERER_NAME = "definition";
+ protected static final String DEFINITION_RENDERER_NAME = "definition";
/**
* The logging object.
*/
@@ -416,7 +417,7 @@
/**
* Creates the default attribute renderer. By default it is an
- * {@link UntypedDelegateAttributeRenderer}.
+ * {@link ChainedDelegateAttributeRenderer}.
*
* @param rendererFactory The renderer factory to configure.
* @param applicationContext The Tiles application context.
@@ -432,10 +433,13 @@
TilesRequestContextFactory contextFactory,
TilesContainer container,
AttributeEvaluatorFactory attributeEvaluatorFactory) {
- UntypedDelegateAttributeRenderer retValue = new UntypedDelegateAttributeRenderer(
- container, rendererFactory.getRenderer(STRING_RENDERER_NAME),
- rendererFactory.getRenderer(TEMPLATE_RENDERER_NAME), rendererFactory
- .getRenderer(DEFINITION_RENDERER_NAME));
+ ChainedDelegateAttributeRenderer retValue = new ChainedDelegateAttributeRenderer();
+ retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) rendererFactory
+ .getRenderer(DEFINITION_RENDERER_NAME));
+ retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) rendererFactory
+ .getRenderer(TEMPLATE_RENDERER_NAME));
+ retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) rendererFactory
+ .getRenderer(STRING_RENDERER_NAME));
retValue.setApplicationContext(applicationContext);
retValue.setRequestContextFactory(contextFactory);
retValue.setAttributeEvaluatorFactory(attributeEvaluatorFactory);
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java?rev=821299&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -0,0 +1,58 @@
+/*
+ * $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.renderer;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.context.TilesRequestContext;
+
+/**
+ * It represents a renderer that identifies attributes that can render.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.2.1
+ */
+public interface TypeDetectingAttributeRenderer extends AttributeRenderer {
+
+ /**
+ * Checks if this renderer can render an attribute. Note that this does not mean
+ * it is the <strong>best</strong> renderer available, but checks only its capability.
+ *
+ * @param attribute The attribute to be renderer.
+ * @param request The Tiles request context.
+ * @return <code>true</code> if this renderer can render the attribute.
+ * @since 2.2.1
+ */
+ boolean isRenderable(Attribute attribute, TilesRequestContext request);
+
+ /**
+ * Checks if this renderer can render an attribute. Note that this does not mean
+ * it is the <strong>best</strong> renderer available, but checks only its capability.
+ *
+ * @param value The attribute value, already evaluated.
+ * @param attribute The attribute to be renderer.
+ * @param request The Tiles request context.
+ * @return <code>true</code> if this renderer can render the attribute.
+ * @since 2.2.1
+ */
+ boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request);
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/TypeDetectingAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java?rev=821299&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -0,0 +1,47 @@
+/*
+ * $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.renderer.impl;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
+
+/**
+ * Abstract implementation of {@link TypeDetectingAttributeRenderer} that
+ * implements {@link #isRenderable(Attribute, TilesRequestContext)} to delegate
+ * to {@link #isRenderable(Object, Attribute, TilesRequestContext)}.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.2.1
+ */
+public abstract class AbstractTypeDetectingAttributeRenderer extends
+ AbstractBaseAttributeRenderer implements TypeDetectingAttributeRenderer {
+
+ /** {@inheritDoc} */
+ public boolean isRenderable(Attribute attribute, TilesRequestContext request) {
+ AttributeEvaluator evaluator = attributeEvaluatorFactory
+ .getAttributeEvaluator(attribute);
+ Object value = evaluator.evaluate(attribute, request);
+ return isRenderable(value, attribute, request);
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRenderer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRenderer.java (from r820373, tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRenderer.java)
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRenderer.java?p2=tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRenderer.java&p1=tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRenderer.java&r1=820373&r2=821299&rev=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -21,12 +21,13 @@
package org.apache.tiles.renderer.impl;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.tiles.Attribute;
-import org.apache.tiles.TilesContainer;
import org.apache.tiles.context.TilesRequestContext;
-import org.apache.tiles.renderer.AttributeRenderer;
import org.apache.tiles.renderer.RendererException;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
/**
* Renders an attribute that has no associated renderer using delegation to
@@ -35,46 +36,30 @@
* @version $Rev$ $Date$
* @since 2.2.1
*/
-public class UntypedDelegateAttributeRenderer extends AbstractBaseAttributeRenderer {
+public class ChainedDelegateAttributeRenderer extends AbstractBaseAttributeRenderer {
/**
- * The Tiles container.
+ * The list of chained renderers.
*/
- private TilesContainer container;
+ private List<TypeDetectingAttributeRenderer> renderers;
/**
- * The renderer for attributes of type "string".
- */
- private AttributeRenderer stringRenderer;
-
- /**
- * The renderer for attributes of type "template".
- */
- private AttributeRenderer templateRenderer;
-
- /**
- * The renderer for attributes of type "definition".
+ * Constructor.
+ *
+ * @since 2.2.1
*/
- private AttributeRenderer definitionRenderer;
+ public ChainedDelegateAttributeRenderer() {
+ renderers = new ArrayList<TypeDetectingAttributeRenderer>();
+ }
/**
- * Constructor.
+ * Adds an attribute renderer to the list. The first inserted this way, the
+ * first is checked when rendering.
*
- * @param container The Tiles container.
- * @param stringRenderer The renderer for attributes of type "string".
- * @param templateRenderer The renderer for attributes of type "template".
- * @param definitionRenderer The renderer for attributes of type
- * "definition".
- * @since 2.2.1
+ * @param renderer The renderer to add.
*/
- public UntypedDelegateAttributeRenderer(TilesContainer container,
- AttributeRenderer stringRenderer,
- AttributeRenderer templateRenderer,
- AttributeRenderer definitionRenderer) {
- this.container = container;
- this.stringRenderer = stringRenderer;
- this.templateRenderer = templateRenderer;
- this.definitionRenderer = definitionRenderer;
+ public void addAttributeRenderer(TypeDetectingAttributeRenderer renderer) {
+ renderers.add(renderer);
}
/** {@inheritDoc} */
@@ -82,19 +67,18 @@
public void write(Object value, Attribute attribute,
TilesRequestContext request)
throws IOException {
- if (value instanceof String) {
- String valueString = (String) value;
- Object[] requestItems = request.getRequestObjects();
- if (container.isValidDefinition(valueString, requestItems)) {
- definitionRenderer.render(attribute, request);
- } else if (valueString.startsWith("/")) {
- templateRenderer.render(attribute, request);
- } else {
- stringRenderer.render(attribute, request);
+ if (value == null) {
+ throw new NullPointerException("The attribute value is null");
+ }
+
+ for (TypeDetectingAttributeRenderer renderer : renderers) {
+ if (renderer.isRenderable(value, attribute, request)) {
+ renderer.render(attribute, request);
+ return;
}
- } else {
- throw new RendererException(
- "Cannot render an untyped object attribute");
}
+
+ throw new RendererException("Type of the attribute not found, class '"
+ + value.getClass() + "' value '" + value.toString() + "'");
}
}
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/DefinitionAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -26,7 +26,6 @@
import org.apache.tiles.TilesContainer;
import org.apache.tiles.awareness.TilesContainerAware;
import org.apache.tiles.context.TilesRequestContext;
-import org.apache.tiles.renderer.AttributeRenderer;
/**
* Renders an attribute that contains a reference to a definition.
@@ -34,8 +33,8 @@
* @version $Rev$ $Date$
* @since 2.1.0
*/
-public class DefinitionAttributeRenderer extends AbstractBaseAttributeRenderer
- implements TilesContainerAware, AttributeRenderer {
+public class DefinitionAttributeRenderer extends
+ AbstractTypeDetectingAttributeRenderer implements TilesContainerAware {
/**
* The Tiles container.
@@ -56,4 +55,14 @@
throws IOException {
container.render(value.toString(), request.getRequestObjects());
}
+
+ /** {@inheritDoc} */
+ public boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request) {
+ if (value instanceof String) {
+ return container.isValidDefinition((String) value, request
+ .getRequestObjects());
+ }
+ return false;
+ }
}
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/StringAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -31,7 +31,7 @@
* @version $Rev$ $Date$
* @since 2.1.0
*/
-public class StringAttributeRenderer extends AbstractBaseAttributeRenderer {
+public class StringAttributeRenderer extends AbstractTypeDetectingAttributeRenderer {
/** {@inheritDoc} */
public void write(Object value, Attribute attribute,
@@ -39,4 +39,10 @@
throws IOException {
request.getWriter().write(value.toString());
}
+
+ /** {@inheritDoc} */
+ public boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request) {
+ return value instanceof String;
+ }
}
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/TemplateAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -32,7 +32,7 @@
* @version $Rev$ $Date$
* @since 2.1.0
*/
-public class TemplateAttributeRenderer extends AbstractBaseAttributeRenderer {
+public class TemplateAttributeRenderer extends AbstractTypeDetectingAttributeRenderer {
/** {@inheritDoc} */
@Override
@@ -51,4 +51,13 @@
throw new InvalidTemplateException("Cannot render a null template");
}
}
+
+ /** {@inheritDoc} */
+ public boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request) {
+ if (value instanceof String) {
+ return ((String) value).startsWith("/");
+ }
+ return false;
+ }
}
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/UntypedAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -33,7 +33,7 @@
*
* @version $Rev$ $Date$
* @since 2.1.0
- * @deprecated Use {@link UntypedDelegateAttributeRenderer}.
+ * @deprecated Use {@link ChainedDelegateAttributeRenderer}.
*/
public class UntypedAttributeRenderer extends AbstractBaseAttributeRenderer
implements TilesContainerAware {
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java Sat Oct 3 12:15:05 2009
@@ -20,6 +20,7 @@
*/
package org.apache.tiles.factory;
+import static org.easymock.EasyMock.*;
import static org.easymock.classextension.EasyMock.*;
import java.net.URL;
@@ -46,11 +47,12 @@
import org.apache.tiles.preparer.PreparerFactory;
import org.apache.tiles.renderer.AttributeRenderer;
import org.apache.tiles.renderer.RendererFactory;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
import org.apache.tiles.renderer.impl.BasicRendererFactory;
+import org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer;
import org.apache.tiles.renderer.impl.DefinitionAttributeRenderer;
import org.apache.tiles.renderer.impl.StringAttributeRenderer;
import org.apache.tiles.renderer.impl.TemplateAttributeRenderer;
-import org.apache.tiles.renderer.impl.UntypedDelegateAttributeRenderer;
import org.easymock.EasyMock;
/**
@@ -230,9 +232,9 @@
TilesRequestContextFactory requestContextFactory = createMock(TilesRequestContextFactory.class);
AttributeEvaluatorFactory attributeEvaluatorFactory = createMock(AttributeEvaluatorFactory.class);
BasicRendererFactory rendererFactory = createMock(BasicRendererFactory.class);
- AttributeRenderer stringRenderer = createMock(AttributeRenderer.class);
- AttributeRenderer templateRenderer = createMock(AttributeRenderer.class);
- AttributeRenderer definitionRenderer = createMock(AttributeRenderer.class);
+ AttributeRenderer stringRenderer = createMock(TypeDetectingAttributeRenderer.class);
+ AttributeRenderer templateRenderer = createMock(TypeDetectingAttributeRenderer.class);
+ AttributeRenderer definitionRenderer = createMock(TypeDetectingAttributeRenderer.class);
expect(rendererFactory.getRenderer("string")).andReturn(stringRenderer);
expect(rendererFactory.getRenderer("template")).andReturn(templateRenderer);
@@ -244,7 +246,7 @@
rendererFactory, applicationContext, requestContextFactory,
container, attributeEvaluatorFactory);
assertTrue("The default renderer class is not correct",
- renderer instanceof UntypedDelegateAttributeRenderer);
+ renderer instanceof ChainedDelegateAttributeRenderer);
verify(container, requestContextFactory, attributeEvaluatorFactory,
rendererFactory);
}
Added: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java?rev=821299&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java (added)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -0,0 +1,80 @@
+/*
+ * $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.renderer.impl;
+
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+import java.io.IOException;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.Expression;
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.evaluator.AttributeEvaluatorFactory;
+import org.junit.Test;
+
+/**
+ * Tests {@link AbstractTypeDetectingAttributeRenderer}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class AbstractTypeDetectingAttributeRendererTest {
+
+ /**
+ * Tests
+ * {@link AbstractTypeDetectingAttributeRenderer#isRenderable(Attribute, TilesRequestContext)}
+ * .
+ */
+ @Test
+ public void testIsRenderable() {
+ AttributeEvaluatorFactory evaluatorFactory = createMock(AttributeEvaluatorFactory.class);
+ AttributeEvaluator evaluator = createMock(AttributeEvaluator.class);
+ TilesRequestContext request = createMock(TilesRequestContext.class);
+ Attribute attribute = new Attribute("value", new Expression(
+ "expression"), "role", "rendererName");
+
+ expect(evaluatorFactory.getAttributeEvaluator(attribute)).andReturn(evaluator);
+ expect(evaluator.evaluate(attribute, request)).andReturn("myValue");
+
+ replay(evaluatorFactory, evaluator, request);
+
+ AbstractTypeDetectingAttributeRenderer renderer = new AbstractTypeDetectingAttributeRenderer() {
+
+ public boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request) {
+ return "myValue".equals(value);
+ }
+
+ @Override
+ public void write(Object value, Attribute attribute,
+ TilesRequestContext request) throws IOException {
+ // Does nothing.
+ }
+ };
+
+ renderer.setAttributeEvaluatorFactory(evaluatorFactory);
+ assertTrue(renderer.isRenderable(attribute, request));
+
+ verify(evaluatorFactory, evaluator, request);
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractTypeDetectingAttributeRendererTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRendererTest.java (from r820373, tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRendererTest.java)
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRendererTest.java?p2=tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRendererTest.java&p1=tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRendererTest.java&r1=820373&r2=821299&rev=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedDelegateAttributeRendererTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/ChainedDelegateAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -28,66 +28,61 @@
import org.apache.tiles.Attribute;
import org.apache.tiles.Expression;
import org.apache.tiles.TilesApplicationContext;
-import org.apache.tiles.TilesContainer;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.context.TilesRequestContextFactory;
import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory;
import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
-import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
/**
- * Tests {@link UntypedAttributeRenderer}.
+ * Tests {@link ChainedDelegateAttributeRenderer}.
*
* @version $Rev$ $Date$
*/
-public class UntypedDelegateAttributeRendererTest {
+public class ChainedDelegateAttributeRendererTest {
/**
* The renderer.
*/
- private UntypedDelegateAttributeRenderer renderer;
-
- /**
- * A mock container.
- */
- private TilesContainer container;
+ private ChainedDelegateAttributeRenderer renderer;
/**
* A mock string attribute renderer.
*/
- private AttributeRenderer stringRenderer;
+ private TypeDetectingAttributeRenderer stringRenderer;
/**
* A mock template attribute renderer.
*/
- private AttributeRenderer templateRenderer;
+ private TypeDetectingAttributeRenderer templateRenderer;
/**
* A mock definition attribute renderer.
*/
- private AttributeRenderer definitionRenderer;
+ private TypeDetectingAttributeRenderer definitionRenderer;
/**
* Sets up the test.
*/
@Before
public void setUp() {
- container = createMock(TilesContainer.class);
- stringRenderer = createMock(AttributeRenderer.class);
- templateRenderer = createMock(AttributeRenderer.class);
- definitionRenderer = createMock(AttributeRenderer.class);
- renderer = new UntypedDelegateAttributeRenderer(container,
- stringRenderer, templateRenderer, definitionRenderer);
+ stringRenderer = createMock(TypeDetectingAttributeRenderer.class);
+ templateRenderer = createMock(TypeDetectingAttributeRenderer.class);
+ definitionRenderer = createMock(TypeDetectingAttributeRenderer.class);
+ renderer = new ChainedDelegateAttributeRenderer();
renderer.setAttributeEvaluatorFactory(new BasicAttributeEvaluatorFactory(
new DirectAttributeEvaluator()));
+ renderer.addAttributeRenderer(definitionRenderer);
+ renderer.addAttributeRenderer(templateRenderer);
+ renderer.addAttributeRenderer(stringRenderer);
}
/**
* Tests
- * {@link UntypedDelegateAttributeRenderer#render(Attribute, TilesRequestContext)}
+ * {@link ChainedDelegateAttributeRenderer#render(Attribute, TilesRequestContext)}
* writing a definition.
*
* @throws IOException If something goes wrong during rendition.
@@ -103,25 +98,25 @@
.createMock(TilesRequestContextFactory.class);
TilesRequestContext requestContext = EasyMock
.createMock(TilesRequestContext.class);
- Object[] requestObjects = new Object[0];
- expect(requestContext.getRequestObjects()).andReturn(requestObjects);
- expect(container.isValidDefinition("my.definition", requestObjects))
- .andReturn(Boolean.TRUE);
+
+ expect(
+ definitionRenderer.isRenderable("my.definition", attribute,
+ requestContext)).andReturn(Boolean.TRUE);
definitionRenderer.render(attribute, requestContext);
- replay(applicationContext, contextFactory, requestContext, container,
+ replay(applicationContext, contextFactory, requestContext,
stringRenderer, templateRenderer, definitionRenderer);
renderer.setApplicationContext(applicationContext);
renderer.setRequestContextFactory(contextFactory);
renderer.render(attribute, requestContext);
writer.close();
verify(applicationContext, contextFactory, requestContext,
- container, stringRenderer, templateRenderer, definitionRenderer);
+ stringRenderer, templateRenderer, definitionRenderer);
}
/**
* Tests
- * {@link UntypedDelegateAttributeRenderer#render(Attribute, TilesRequestContext)}
+ * {@link ChainedDelegateAttributeRenderer#render(Attribute, TilesRequestContext)}
* writing a string.
*
* @throws IOException If something goes wrong during rendition.
@@ -136,24 +131,29 @@
.createMock(TilesRequestContextFactory.class);
TilesRequestContext requestContext = EasyMock
.createMock(TilesRequestContext.class);
- Object[] requestObjects = new Object[0];
- expect(requestContext.getRequestObjects()).andReturn(requestObjects);
- expect(container.isValidDefinition("Result", requestObjects))
- .andReturn(Boolean.FALSE);
+ expect(
+ definitionRenderer.isRenderable("Result", attribute,
+ requestContext)).andReturn(Boolean.FALSE);
+ expect(
+ templateRenderer.isRenderable("Result", attribute,
+ requestContext)).andReturn(Boolean.FALSE);
+ expect(
+ stringRenderer.isRenderable("Result", attribute,
+ requestContext)).andReturn(Boolean.TRUE);
stringRenderer.render(attribute, requestContext);
- replay(applicationContext, contextFactory, requestContext, container,
+ replay(applicationContext, contextFactory, requestContext,
stringRenderer, templateRenderer, definitionRenderer);
renderer.setApplicationContext(applicationContext);
renderer.setRequestContextFactory(contextFactory);
renderer.render(attribute, requestContext);
- verify(applicationContext, contextFactory, requestContext, container,
+ verify(applicationContext, contextFactory, requestContext,
stringRenderer, templateRenderer, definitionRenderer);
}
/**
* Tests
- * {@link UntypedDelegateAttributeRenderer#render(Attribute, TilesRequestContext)}
+ * {@link ChainedDelegateAttributeRenderer#render(Attribute, TilesRequestContext)}
* writing a template.
*
* @throws IOException If something goes wrong during rendition.
@@ -169,19 +169,21 @@
.createMock(TilesRequestContextFactory.class);
TilesRequestContext requestContext = EasyMock
.createMock(TilesRequestContext.class);
- Object[] requestObjects = new Object[0];
- expect(requestContext.getRequestObjects()).andReturn(requestObjects);
- expect(container.isValidDefinition("/myTemplate.jsp", requestObjects))
- .andReturn(Boolean.FALSE);
templateRenderer.render(attribute, requestContext);
+ expect(
+ definitionRenderer.isRenderable("/myTemplate.jsp", attribute,
+ requestContext)).andReturn(Boolean.FALSE);
+ expect(
+ templateRenderer.isRenderable("/myTemplate.jsp", attribute,
+ requestContext)).andReturn(Boolean.TRUE);
- replay(applicationContext, contextFactory, requestContext, container,
+ replay(applicationContext, contextFactory, requestContext,
stringRenderer, templateRenderer, definitionRenderer);
renderer.setApplicationContext(applicationContext);
renderer.setRequestContextFactory(contextFactory);
renderer.render(attribute, requestContext);
writer.close();
- verify(applicationContext, contextFactory, requestContext, container,
+ verify(applicationContext, contextFactory, requestContext,
stringRenderer, templateRenderer, definitionRenderer);
}
}
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/DefinitionAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/DefinitionAttributeRendererTest.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/DefinitionAttributeRendererTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/DefinitionAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -20,10 +20,10 @@
*/
package org.apache.tiles.renderer.impl;
-import java.io.IOException;
-import java.io.StringWriter;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
-import junit.framework.TestCase;
+import java.io.IOException;
import org.apache.tiles.Attribute;
import org.apache.tiles.Expression;
@@ -33,14 +33,15 @@
import org.apache.tiles.context.TilesRequestContextFactory;
import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory;
import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
-import org.easymock.EasyMock;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests {@link DefinitionAttributeRenderer}.
*
* @version $Rev$ $Date$
*/
-public class DefinitionAttributeRendererTest extends TestCase {
+public class DefinitionAttributeRendererTest {
/**
* The renderer.
@@ -48,8 +49,8 @@
private DefinitionAttributeRenderer renderer;
/** {@inheritDoc} */
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
renderer = new DefinitionAttributeRenderer();
renderer.setAttributeEvaluatorFactory(new BasicAttributeEvaluatorFactory(
new DirectAttributeEvaluator()));
@@ -61,28 +62,50 @@
*
* @throws IOException If something goes wrong during rendition.
*/
+ @Test
public void testWrite() throws IOException {
- StringWriter writer = new StringWriter();
Attribute attribute = new Attribute("my.definition", (Expression) null,
null, "definition");
- TilesApplicationContext applicationContext = EasyMock
- .createMock(TilesApplicationContext.class);
- TilesRequestContextFactory contextFactory = EasyMock
- .createMock(TilesRequestContextFactory.class);
- TilesContainer container = EasyMock.createMock(TilesContainer.class);
- TilesRequestContext requestContext = EasyMock
- .createMock(TilesRequestContext.class);
+ TilesApplicationContext applicationContext = createMock(TilesApplicationContext.class);
+ TilesRequestContextFactory contextFactory = createMock(TilesRequestContextFactory.class);
+ TilesContainer container = createMock(TilesContainer.class);
+ TilesRequestContext requestContext = createMock(TilesRequestContext.class);
Object[] requestObjects = new Object[0];
- EasyMock.expect(requestContext.getRequestObjects()).andReturn(requestObjects);
- EasyMock.expect(contextFactory.createRequestContext(applicationContext))
- .andReturn(requestContext);
+ expect(requestContext.getRequestObjects()).andReturn(requestObjects);
container.render("my.definition");
- EasyMock.replay(applicationContext, contextFactory, requestContext,
+ replay(applicationContext, contextFactory, requestContext,
container);
renderer.setApplicationContext(applicationContext);
renderer.setRequestContextFactory(contextFactory);
renderer.setContainer(container);
renderer.render(attribute, requestContext);
- writer.close();
+ verify(applicationContext, contextFactory, requestContext,
+ container);
+ }
+
+ /**
+ * Tests
+ * {@link DefinitionAttributeRenderer#isRenderable(Object, Attribute, TilesRequestContext)}
+ * .
+ */
+ @Test
+ public void testIsRenderable() {
+ Attribute attribute = new Attribute("my.definition", (Expression) null,
+ null, "definition");
+ TilesApplicationContext applicationContext = createMock(TilesApplicationContext.class);
+ TilesRequestContextFactory contextFactory = createMock(TilesRequestContextFactory.class);
+ TilesContainer container = createMock(TilesContainer.class);
+ TilesRequestContext requestContext = createMock(TilesRequestContext.class);
+ Object[] requestObjects = new Object[0];
+ expect(requestContext.getRequestObjects()).andReturn(requestObjects);
+ expect(container.isValidDefinition("my.definition", requestObjects)).andReturn(Boolean.TRUE);
+ replay(applicationContext, contextFactory, requestContext,
+ container);
+ renderer.setApplicationContext(applicationContext);
+ renderer.setRequestContextFactory(contextFactory);
+ renderer.setContainer(container);
+ assertTrue(renderer.isRenderable("my.definition", attribute, requestContext));
+ verify(applicationContext, contextFactory, requestContext,
+ container);
}
}
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/StringAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/StringAttributeRendererTest.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/StringAttributeRendererTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/StringAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -20,11 +20,12 @@
*/
package org.apache.tiles.renderer.impl;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+
import java.io.IOException;
import java.io.StringWriter;
-import junit.framework.TestCase;
-
import org.apache.tiles.Attribute;
import org.apache.tiles.Expression;
import org.apache.tiles.TilesApplicationContext;
@@ -32,14 +33,15 @@
import org.apache.tiles.context.TilesRequestContextFactory;
import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory;
import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
-import org.easymock.EasyMock;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests {@link StringAttributeRenderer}.
*
* @version $Rev$ $Date$
*/
-public class StringAttributeRendererTest extends TestCase {
+public class StringAttributeRendererTest {
/**
* The renderer.
@@ -47,8 +49,8 @@
private StringAttributeRenderer renderer;
/** {@inheritDoc} */
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
renderer = new StringAttributeRenderer();
renderer.setAttributeEvaluatorFactory(new BasicAttributeEvaluatorFactory(
new DirectAttributeEvaluator()));
@@ -60,24 +62,41 @@
*
* @throws IOException If something goes wrong during rendition.
*/
+ @Test
public void testWrite() throws IOException {
StringWriter writer = new StringWriter();
Attribute attribute = new Attribute("Result", (Expression) null, null,
"string");
- TilesApplicationContext applicationContext = EasyMock
- .createMock(TilesApplicationContext.class);
- TilesRequestContextFactory contextFactory = EasyMock
- .createMock(TilesRequestContextFactory.class);
- TilesRequestContext requestContext = EasyMock
- .createMock(TilesRequestContext.class);
- EasyMock.expect(contextFactory.createRequestContext(applicationContext))
- .andReturn(requestContext);
- EasyMock.expect(requestContext.getWriter()).andReturn(writer);
- EasyMock.replay(applicationContext, contextFactory, requestContext);
+ TilesApplicationContext applicationContext = createMock(TilesApplicationContext.class);
+ TilesRequestContextFactory contextFactory = createMock(TilesRequestContextFactory.class);
+ TilesRequestContext requestContext = createMock(TilesRequestContext.class);
+ expect(requestContext.getWriter()).andReturn(writer);
+ replay(applicationContext, contextFactory, requestContext);
renderer.setApplicationContext(applicationContext);
renderer.setRequestContextFactory(contextFactory);
renderer.render(attribute, requestContext);
writer.close();
assertEquals("Not written 'Result'", "Result", writer.toString());
+ verify(applicationContext, contextFactory, requestContext);
+ }
+
+ /**
+ * Tests
+ * {@link StringAttributeRenderer#isRenderable(Object, Attribute, TilesRequestContext)}.
+ *
+ * @throws IOException If something goes wrong.
+ */
+ @Test
+ public void testIsRenderable() throws IOException {
+ Attribute attribute = new Attribute("Result", (Expression) null, null,
+ "string");
+ TilesApplicationContext applicationContext = createMock(TilesApplicationContext.class);
+ TilesRequestContextFactory contextFactory = createMock(TilesRequestContextFactory.class);
+ TilesRequestContext requestContext = createMock(TilesRequestContext.class);
+ replay(applicationContext, contextFactory, requestContext);
+ renderer.setApplicationContext(applicationContext);
+ renderer.setRequestContextFactory(contextFactory);
+ assertTrue(renderer.isRenderable("Result", attribute, requestContext));
+ verify(applicationContext, contextFactory, requestContext);
}
}
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/TemplateAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/TemplateAttributeRendererTest.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/TemplateAttributeRendererTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/TemplateAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -20,10 +20,10 @@
*/
package org.apache.tiles.renderer.impl;
-import java.io.IOException;
-import java.io.StringWriter;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
-import junit.framework.TestCase;
+import java.io.IOException;
import org.apache.tiles.Attribute;
import org.apache.tiles.Expression;
@@ -32,14 +32,15 @@
import org.apache.tiles.context.TilesRequestContextFactory;
import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory;
import org.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
-import org.easymock.EasyMock;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests {@link TemplateAttributeRenderer}.
*
* @version $Rev$ $Date$
*/
-public class TemplateAttributeRendererTest extends TestCase {
+public class TemplateAttributeRendererTest {
/**
* The renderer.
@@ -47,8 +48,8 @@
private TemplateAttributeRenderer renderer;
/** {@inheritDoc} */
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
renderer = new TemplateAttributeRenderer();
renderer.setAttributeEvaluatorFactory(new BasicAttributeEvaluatorFactory(
new DirectAttributeEvaluator()));
@@ -60,23 +61,39 @@
*
* @throws IOException If something goes wrong during rendition.
*/
+ @Test
public void testWrite() throws IOException {
- StringWriter writer = new StringWriter();
Attribute attribute = new Attribute("/myTemplate.jsp",
(Expression) null, null, "template");
- TilesApplicationContext applicationContext = EasyMock
- .createMock(TilesApplicationContext.class);
- TilesRequestContextFactory contextFactory = EasyMock
- .createMock(TilesRequestContextFactory.class);
- TilesRequestContext requestContext = EasyMock
- .createMock(TilesRequestContext.class);
- EasyMock.expect(contextFactory.createRequestContext(applicationContext))
- .andReturn(requestContext);
+ TilesApplicationContext applicationContext = createMock(TilesApplicationContext.class);
+ TilesRequestContextFactory contextFactory = createMock(TilesRequestContextFactory.class);
+ TilesRequestContext requestContext = createMock(TilesRequestContext.class);
requestContext.dispatch("/myTemplate.jsp");
- EasyMock.replay(applicationContext, contextFactory, requestContext);
+ replay(applicationContext, contextFactory, requestContext);
renderer.setApplicationContext(applicationContext);
renderer.setRequestContextFactory(contextFactory);
renderer.render(attribute, requestContext);
- writer.close();
+ verify(applicationContext, contextFactory, requestContext);
+ }
+
+ /**
+ * Tests
+ * {@link StringAttributeRenderer#isRenderable(Object, Attribute, TilesRequestContext)}.
+ *
+ * @throws IOException If something goes wrong during rendition.
+ */
+ @Test
+ public void testIsRenderable() throws IOException {
+ Attribute attribute = new Attribute("/myTemplate.jsp",
+ (Expression) null, null, "template");
+ TilesApplicationContext applicationContext = createMock(TilesApplicationContext.class);
+ TilesRequestContextFactory contextFactory = createMock(TilesRequestContextFactory.class);
+ TilesRequestContext requestContext = createMock(TilesRequestContext.class);
+ replay(applicationContext, contextFactory, requestContext);
+ renderer.setApplicationContext(applicationContext);
+ renderer.setRequestContextFactory(contextFactory);
+ assertTrue(renderer.isRenderable("/myTemplate.jsp", attribute,
+ requestContext));
+ verify(applicationContext, contextFactory, requestContext);
}
}
Modified: tiles/framework/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRenderer.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-freemarker/src/main/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -37,7 +37,7 @@
import org.apache.tiles.freemarker.FreeMarkerTilesException;
import org.apache.tiles.freemarker.servlet.TilesFreemarkerServlet;
import org.apache.tiles.impl.InvalidTemplateException;
-import org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer;
+import org.apache.tiles.renderer.impl.AbstractTypeDetectingAttributeRenderer;
import org.apache.tiles.servlet.context.ExternalWriterHttpServletResponse;
import org.apache.tiles.servlet.context.ServletTilesRequestContext;
import org.apache.tiles.servlet.context.ServletUtil;
@@ -53,7 +53,7 @@
* @version $Rev$ $Date$
* @since 2.2.0
*/
-public class FreeMarkerAttributeRenderer extends AbstractBaseAttributeRenderer {
+public class FreeMarkerAttributeRenderer extends AbstractTypeDetectingAttributeRenderer {
/**
* The servlet that is used to forward the request to.
@@ -118,6 +118,16 @@
}
}
+ /** {@inheritDoc} */
+ public boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request) {
+ if (value instanceof String) {
+ String string = (String) value;
+ return string.startsWith("/") && string.endsWith(".ftl");
+ }
+ return false;
+ }
+
/**
* Extends {@link TilesFreemarkerServlet} to use the attribute value as the template name.
*
Added: tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java?rev=821299&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java (added)
+++ tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -0,0 +1,50 @@
+/*
+ * $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.freemarker.renderer;
+
+import static org.junit.Assert.*;
+
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
+import org.junit.Test;
+
+/**
+ * Tests {@link FreeMarkerAttributeRenderer}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class FreeMarkerAttributeRendererTest {
+
+ /**
+ * Test method for
+ * {@link FreeMarkerAttributeRenderer
+ * #isRenderable(Object, org.apache.tiles.Attribute, org.apache.tiles.context.TilesRequestContext)}
+ * .
+ */
+ @Test
+ public void testIsRenderable() {
+ TypeDetectingAttributeRenderer renderer = new FreeMarkerAttributeRenderer();
+ assertTrue(renderer.isRenderable("/my/template.ftl", null, null));
+ assertFalse(renderer.isRenderable("my/template.ftl", null, null));
+ assertFalse(renderer.isRenderable("/my/template.jsp", null, null));
+ assertFalse(renderer.isRenderable(0, null, null));
+ }
+
+}
Propchange: tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-freemarker/src/test/java/org/apache/tiles/freemarker/renderer/FreeMarkerAttributeRendererTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/framework/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/renderer/VelocityAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/renderer/VelocityAttributeRenderer.java?rev=821299&r1=821298&r2=821299&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/renderer/VelocityAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-velocity/src/main/java/org/apache/tiles/velocity/renderer/VelocityAttributeRenderer.java Sat Oct 3 12:15:05 2009
@@ -31,7 +31,7 @@
import org.apache.tiles.Attribute;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.impl.InvalidTemplateException;
-import org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer;
+import org.apache.tiles.renderer.impl.AbstractTypeDetectingAttributeRenderer;
import org.apache.tiles.servlet.context.ServletTilesRequestContext;
import org.apache.tiles.servlet.context.ServletUtil;
import org.apache.tiles.util.IteratorEnumeration;
@@ -50,7 +50,7 @@
* @version $Rev$ $Date$
* @since 2.2.0
*/
-public class VelocityAttributeRenderer extends AbstractBaseAttributeRenderer {
+public class VelocityAttributeRenderer extends AbstractTypeDetectingAttributeRenderer {
/**
* The VelocityView object to use.
@@ -108,6 +108,16 @@
}
}
+ /** {@inheritDoc} */
+ public boolean isRenderable(Object value, Attribute attribute,
+ TilesRequestContext request) {
+ if (value instanceof String) {
+ String string = (String) value;
+ return string.startsWith("/") && string.endsWith(".vm");
+ }
+ return false;
+ }
+
/**
* Implements JeeConfig to use parameters set through
* {@link VelocityAttributeRenderer#setParameter(String, String)}.
Added: tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java?rev=821299&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java (added)
+++ tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java Sat Oct 3 12:15:05 2009
@@ -0,0 +1,50 @@
+/*
+ * $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.velocity.renderer;
+
+import static org.junit.Assert.*;
+
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
+import org.junit.Test;
+
+/**
+ * Tests {@link VelocityAttributeRenderer}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class VelocityAttributeRendererTest {
+
+ /**
+ * Test method for
+ * {@link VelocityAttributeRenderer
+ * #isRenderable(Object, org.apache.tiles.Attribute, org.apache.tiles.context.TilesRequestContext)}
+ * .
+ */
+ @Test
+ public void testIsRenderable() {
+ TypeDetectingAttributeRenderer renderer = new VelocityAttributeRenderer();
+ assertTrue(renderer.isRenderable("/my/template.vm", null, null));
+ assertFalse(renderer.isRenderable("my/template.vm", null, null));
+ assertFalse(renderer.isRenderable("/my/template.jsp", null, null));
+ assertFalse(renderer.isRenderable(0, null, null));
+ }
+
+}
Propchange: tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-velocity/src/test/java/org/apache/tiles/velocity/renderer/VelocityAttributeRendererTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL