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 2008/03/04 21:47:08 UTC
svn commit: r633632 - in /tiles/framework/trunk:
tiles-api/src/main/java/org/apache/tiles/
tiles-core/src/main/java/org/apache/tiles/evaluator/
tiles-core/src/main/java/org/apache/tiles/evaluator/impl/
tiles-core/src/main/java/org/apache/tiles/factory/...
Author: apetrelli
Date: Tue Mar 4 12:47:06 2008
New Revision: 633632
URL: http://svn.apache.org/viewvc?rev=633632&view=rev
Log:
TILES-48
Added the infrastructure to build evaluators.
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html (with props)
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java (with props)
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.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/impl/BasicTilesContainerTest.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRendererTest.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-core/src/test/java/org/apache/tiles/renderer/impl/UntypedAttributeRendererTest.java
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/renderer/ReverseStringAttributeRenderer.java
Modified: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java (original)
+++ tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/TilesContainer.java Tue Mar 4 12:47:06 2008
@@ -120,6 +120,19 @@
throws TilesException, IOException;
/**
+ * Evaluates the given attribute.
+ *
+ * @param attribute The attribute to evaluate.
+ * @param requestItems the current request objects.
+ * @throws TilesException If something goes wrong during accessing Tiles
+ * elements.
+ * @return The evaluated object.
+ * @since 2.1.0
+ */
+ Object evaluate(Attribute attribute, Object... requestItems)
+ throws TilesException;
+
+ /**
* Determine whether or not the definition exists.
* @param definition the name of the definition.
* @param requestItems the current request objects.
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java?rev=633632&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java Tue Mar 4 12:47:06 2008
@@ -0,0 +1,41 @@
+/*
+ * $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.evaluator;
+
+import org.apache.tiles.context.TilesRequestContext;
+
+/**
+ * It represents an object that resolves a string to return an object.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public interface AttributeEvaluator {
+
+ /**
+ * Evaluates an expression.
+ *
+ * @param expression The expression to evaluate.
+ * @param request The request object.
+ * @return The evaluated object.
+ */
+ Object evaluate(String expression, TilesRequestContext request);
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java?rev=633632&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java Tue Mar 4 12:47:06 2008
@@ -0,0 +1,37 @@
+/*
+ * $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.evaluator;
+
+/**
+ * It represents an object that can use an {@link AttributeEvaluator}.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public interface AttributeEvaluatorAware {
+
+ /**
+ * Sets the evaluator.
+ *
+ * @param evaluator The evaluator to set.
+ */
+ void setEvaluator(AttributeEvaluator evaluator);
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/AttributeEvaluatorAware.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java?rev=633632&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java Tue Mar 4 12:47:06 2008
@@ -0,0 +1,39 @@
+/*
+ * $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.evaluator.impl;
+
+import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+
+/**
+ * Resolves a string and returns the string itself. It is useful for backward
+ * compatibility.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class DirectEvaluator implements AttributeEvaluator {
+
+ /** {@inheritDoc} */
+ public Object evaluate(String expression, TilesRequestContext request) {
+ return expression;
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html?rev=633632&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html Tue Mar 4 12:47:06 2008
@@ -0,0 +1,30 @@
+<!--
+/*
+ * $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.
+ */
+-->
+<html>
+<head>
+ <title>Tiles attribute evaluators implementations</title>
+</head>
+<body>
+Classes to manage attribute value evaluation.
+</body>
+</html>
\ No newline at end of file
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html?rev=633632&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html Tue Mar 4 12:47:06 2008
@@ -0,0 +1,30 @@
+<!--
+/*
+ * $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.
+ */
+-->
+<html>
+<head>
+ <title>Tiles attribute evaluators</title>
+</head>
+<body>
+Interfaces to manage attribute value evaluation.
+</body>
+</html>
\ No newline at end of file
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java Tue Mar 4 12:47:06 2008
@@ -29,6 +29,9 @@
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.definition.DefinitionsFactory;
import org.apache.tiles.definition.UrlDefinitionsFactory;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.evaluator.AttributeEvaluatorAware;
+import org.apache.tiles.evaluator.impl.DirectEvaluator;
import org.apache.tiles.impl.BasicTilesContainer;
import org.apache.tiles.impl.mgmt.CachingTilesContainer;
import org.apache.tiles.mgmt.MutableTilesContainer;
@@ -94,6 +97,15 @@
"org.apache.tiles.renderer.RendererFactory";
/**
+ * Initialization parameter that represents the attribute evaluator class
+ * name.
+ *
+ * @since 2.1.0
+ */
+ public static final String ATTRIBUTE_EVALUATOR_INIT_PARAM =
+ "org.apache.tiles.evaluator.AttributeEvaluator";
+
+ /**
* Default configuration parameters.
*/
private static final Map<String, String> DEFAULTS =
@@ -105,6 +117,7 @@
DEFAULTS.put(DEFINITIONS_FACTORY_INIT_PARAM, UrlDefinitionsFactory.class.getName());
DEFAULTS.put(PREPARER_FACTORY_INIT_PARAM, BasicPreparerFactory.class.getName());
DEFAULTS.put(RENDERER_FACTORY_INIT_PARAM, BasicRendererFactory.class.getName());
+ DEFAULTS.put(ATTRIBUTE_EVALUATOR_INIT_PARAM, DirectEvaluator.class.getName());
}
/**
@@ -270,6 +283,9 @@
(RendererFactory) createFactory(configuration,
RENDERER_FACTORY_INIT_PARAM);
+ AttributeEvaluator evaluator = (AttributeEvaluator) createFactory(
+ configuration, ATTRIBUTE_EVALUATOR_INIT_PARAM);
+
contextFactory.init(configuration);
TilesApplicationContext tilesContext =
contextFactory.createApplicationContext(context);
@@ -285,6 +301,10 @@
((TilesContainerAware) rendererFactory).setContainer(container);
}
+ if (rendererFactory instanceof AttributeEvaluatorAware) {
+ ((AttributeEvaluatorAware) rendererFactory).setEvaluator(evaluator);
+ }
+
PreparerFactory prepFactory =
(PreparerFactory) createFactory(configuration,
PREPARER_FACTORY_INIT_PARAM);
@@ -294,6 +314,7 @@
container.setPreparerFactory(prepFactory);
container.setApplicationContext(tilesContext);
container.setRendererFactory(rendererFactory);
+ container.setEvaluator(evaluator);
}
/**
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java Tue Mar 4 12:47:06 2008
@@ -34,6 +34,7 @@
import org.apache.tiles.definition.DefinitionsFactory;
import org.apache.tiles.definition.DefinitionsFactoryException;
import org.apache.tiles.definition.NoSuchDefinitionException;
+import org.apache.tiles.evaluator.AttributeEvaluator;
import org.apache.tiles.preparer.NoSuchPreparerException;
import org.apache.tiles.preparer.PreparerFactory;
import org.apache.tiles.preparer.ViewPreparer;
@@ -110,6 +111,11 @@
private RendererFactory rendererFactory;
/**
+ * The attribute evaluator.
+ */
+ private AttributeEvaluator evaluator;
+
+ /**
* The Tiles context factory.
*/
private TilesContextFactory contextFactory;
@@ -265,6 +271,16 @@
this.rendererFactory = rendererFactory;
}
+ /**
+ * Sets the evaluator to use.
+ *
+ * @param evaluator The evaluator to use.
+ * @since 2.1.0
+ */
+ public void setEvaluator(AttributeEvaluator evaluator) {
+ this.evaluator = evaluator;
+ }
+
/** {@inheritDoc} */
public void prepare(String preparer, Object... requestItems)
throws TilesException {
@@ -300,6 +316,19 @@
+ attr.getRenderer());
}
renderer.render(attr, writer, requestItems);
+ }
+
+ /** {@inheritDoc} */
+ public Object evaluate(Attribute attribute, Object... requestItems)
+ throws TilesException {
+ TilesRequestContext request = getContextFactory().createRequestContext(
+ context, requestItems);
+ Object retValue = attribute.getValue();
+ if (retValue != null && retValue instanceof String) {
+ retValue = evaluator.evaluate((String) retValue, request);
+ }
+
+ return retValue;
}
/** {@inheritDoc} */
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRenderer.java Tue Mar 4 12:47:06 2008
@@ -33,6 +33,8 @@
import org.apache.tiles.awareness.TilesContextFactoryAware;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.evaluator.AttributeEvaluatorAware;
import org.apache.tiles.renderer.AttributeRenderer;
import org.apache.tiles.renderer.RendererException;
@@ -43,7 +45,7 @@
* @since 2.1.0
*/
public abstract class AbstractBaseAttributeRenderer implements
- AttributeRenderer, TilesContextFactoryAware {
+ AttributeRenderer, TilesContextFactoryAware, AttributeEvaluatorAware {
/**
* The logging object.
@@ -65,6 +67,13 @@
*/
protected TilesApplicationContext applicationContext;
+ /**
+ * The attribute evaluator.
+ *
+ * @since 2.1.0
+ */
+ protected AttributeEvaluator evaluator;
+
/** {@inheritDoc} */
public void setContextFactory(TilesContextFactory contextFactory) {
this.contextFactory = contextFactory;
@@ -76,6 +85,11 @@
}
/** {@inheritDoc} */
+ public void setEvaluator(AttributeEvaluator evaluator) {
+ this.evaluator = evaluator;
+ }
+
+ /** {@inheritDoc} */
public void render(Attribute attribute, Writer writer,
Object... requestItems) throws IOException, TilesException {
TilesRequestContext request = getRequestContext(requestItems);
@@ -92,23 +106,30 @@
return;
}
- write(attribute, writer, request, requestItems);
+ Object value = attribute.getValue();
+
+ if (attribute.getValue() instanceof String) {
+ value = evaluator.evaluate((String) value, request);
+ }
+
+ write(value, attribute, writer, request, requestItems);
}
/**
* Implement this method knowing that the attribute won't be null and it
* will be authorized.
- *
+ * @param value The value of the attribute to be rendered.
* @param attribute The attribute to render.
* @param writer The writer to use.
* @param request The Tiles request object.
* @param requestItems The original request items.
+ *
* @throws IOException If something goes wrong during rendition.
* @throws TilesException If something goes wrong in Tiles engine.
* @since 2.1.0
*/
- public abstract void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public abstract void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException;
/**
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java Tue Mar 4 12:47:06 2008
@@ -30,6 +30,8 @@
import org.apache.tiles.awareness.TilesContainerAware;
import org.apache.tiles.awareness.TilesContextFactoryAware;
import org.apache.tiles.context.TilesContextFactory;
+import org.apache.tiles.evaluator.AttributeEvaluator;
+import org.apache.tiles.evaluator.AttributeEvaluatorAware;
import org.apache.tiles.renderer.AttributeRenderer;
import org.apache.tiles.renderer.RendererException;
import org.apache.tiles.renderer.RendererFactory;
@@ -42,7 +44,7 @@
* @since 2.1.0
*/
public class BasicRendererFactory implements RendererFactory,
- TilesContainerAware, TilesContextFactoryAware {
+ TilesContainerAware, TilesContextFactoryAware, AttributeEvaluatorAware {
/**
* The type renderers init parameter name.
@@ -97,6 +99,13 @@
protected TilesContainer container;
/**
+ * The attribute evaluator.
+ *
+ * @since 2.1.0
+ */
+ protected AttributeEvaluator evaluator;
+
+ /**
* The renderer name/renderer map.
*
* @since 2.1.0
@@ -181,6 +190,11 @@
}
/** {@inheritDoc} */
+ public void setEvaluator(AttributeEvaluator evaluator) {
+ this.evaluator = evaluator;
+ }
+
+ /** {@inheritDoc} */
public void setContextFactory(TilesContextFactory contextFactory) {
this.contextFactory = contextFactory;
}
@@ -204,6 +218,9 @@
}
if (renderer instanceof TilesContainerAware) {
((TilesContainerAware) renderer).setContainer(container);
+ }
+ if (renderer instanceof AttributeEvaluatorAware) {
+ ((AttributeEvaluatorAware) renderer).setEvaluator(evaluator);
}
}
}
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -53,9 +53,9 @@
/** {@inheritDoc} */
@Override
- public void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException {
- container.render(attribute.getValue().toString(), requestItems);
+ container.render(value.toString(), requestItems);
}
}
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -36,9 +36,9 @@
public class StringAttributeRenderer extends AbstractBaseAttributeRenderer {
/** {@inheritDoc} */
- public void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException {
- writer.write(attribute.getValue().toString());
+ writer.write(value.toString());
}
}
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -37,9 +37,9 @@
/** {@inheritDoc} */
@Override
- public void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException {
- request.dispatch(attribute.getValue().toString());
+ request.dispatch(value.toString());
}
}
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -51,12 +51,11 @@
/** {@inheritDoc} */
@Override
- public void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException {
- Object valueContent = attribute.getValue();
- if (valueContent instanceof String) {
- String valueString = (String) valueContent;
+ if (value instanceof String) {
+ String valueString = (String) value;
if (container.isValidDefinition(valueString, requestItems)) {
container.render(valueString, requestItems);
} else if (valueString.startsWith("/")) {
Added: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java?rev=633632&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java (added)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java Tue Mar 4 12:47:06 2008
@@ -0,0 +1,56 @@
+/*
+ * $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.evaluator.impl;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@link DirectEvaluator}.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DirectEvaluatorTest extends TestCase {
+
+ /**
+ * The evaluator to test.
+ */
+ private DirectEvaluator evaluator;
+
+ /** {@inheritDoc} */
+ public void setUp() throws Exception {
+ evaluator = new DirectEvaluator();
+ }
+
+ /**
+ * Tests
+ * {@link DirectEvaluator#evaluate(String, org.apache.tiles.context.TilesRequestContext)}.
+ */
+ public void testEvaluate() {
+ String expression = "This is an expression";
+ Object result = evaluator.evaluate(expression, null);
+ assertEquals("The expression has not been evaluated correctly", result,
+ expression);
+ expression = "${attributeName}";
+ result = evaluator.evaluate(expression, null);
+ assertEquals("The expression has not been evaluated correctly", result,
+ expression);
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java Tue Mar 4 12:47:06 2008
@@ -155,6 +155,22 @@
}
/**
+ * Tests {@link BasicTilesContainer#evaluate(Attribute, Object...)}.
+ *
+ * @throws TilesException If something goes wrong.
+ */
+ public void testEvaluate() throws TilesException {
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ MockHttpSession session = new MockHttpSession();
+ request.setHttpSession(session);
+ MockHttpServletResponse response = new MockHttpServletResponse();
+ Attribute attribute = new Attribute((Object) "This is the value");
+ Object value = container.evaluate(attribute, request, response);
+ assertEquals("The attribute has not been evaluated correctly",
+ "This is the value", value);
+ }
+
+ /**
* Servlet request mock class that allows to choose the user roles.
*/
private static class RoleMockHttpServletRequest extends MockHttpServletRequest {
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRendererTest.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRendererTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/AbstractBaseAttributeRendererTest.java Tue Mar 4 12:47:06 2008
@@ -159,8 +159,8 @@
/** {@inheritDoc} */
@Override
- public void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException {
writer.write("wrote");
}
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -29,6 +29,7 @@
import org.apache.tiles.TilesException;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.impl.DirectEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -49,11 +50,12 @@
@Override
protected void setUp() throws Exception {
renderer = new DefinitionAttributeRenderer();
+ renderer.setEvaluator(new DirectEvaluator());
}
/**
* Tests
- * {@link StringAttributeRenderer#write(Attribute, java.io.Writer, TilesRequestContext, Object...)}.
+ * {@link StringAttributeRenderer#write(Object, Attribute, java.io.Writer, TilesRequestContext, Object...)}.
*
* @throws IOException If something goes wrong during rendition.
* @throws TilesException If something goes wrong during the usage of Tiles.
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -28,6 +28,7 @@
import org.apache.tiles.TilesException;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.impl.DirectEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -48,11 +49,12 @@
@Override
protected void setUp() throws Exception {
renderer = new StringAttributeRenderer();
+ renderer.setEvaluator(new DirectEvaluator());
}
/**
* Tests
- * {@link StringAttributeRenderer#write(Attribute, java.io.Writer, TilesRequestContext, Object...)}.
+ * {@link StringAttributeRenderer#write(Object, Attribute, java.io.Writer, TilesRequestContext, Object...)}.
*
* @throws IOException If something goes wrong during rendition.
* @throws TilesException If something goes wrong during the usage of Tiles.
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=633632&r1=633631&r2=633632&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 Tue Mar 4 12:47:06 2008
@@ -28,6 +28,7 @@
import org.apache.tiles.TilesException;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.impl.DirectEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -48,11 +49,12 @@
@Override
protected void setUp() throws Exception {
renderer = new TemplateAttributeRenderer();
+ renderer.setEvaluator(new DirectEvaluator());
}
/**
* Tests
- * {@link StringAttributeRenderer#write(Attribute, java.io.Writer, TilesRequestContext, Object...)}.
+ * {@link StringAttributeRenderer#write(Object, Attribute, java.io.Writer, TilesRequestContext, Object...)}.
*
* @throws IOException If something goes wrong during rendition.
* @throws TilesException If something goes wrong during the usage of Tiles.
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedAttributeRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedAttributeRendererTest.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedAttributeRendererTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/renderer/impl/UntypedAttributeRendererTest.java Tue Mar 4 12:47:06 2008
@@ -29,6 +29,7 @@
import org.apache.tiles.TilesException;
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.context.TilesRequestContext;
+import org.apache.tiles.evaluator.impl.DirectEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -49,11 +50,12 @@
@Override
protected void setUp() throws Exception {
renderer = new UntypedAttributeRenderer();
+ renderer.setEvaluator(new DirectEvaluator());
}
/**
* Tests
- * {@link StringAttributeRenderer#write(Attribute, java.io.Writer, TilesRequestContext, Object...)}
+ * {@link StringAttributeRenderer#write(Object, Attribute, java.io.Writer, TilesRequestContext, Object...)}
* writing a Definition.
*
* @throws IOException If something goes wrong during rendition.
@@ -85,7 +87,7 @@
/**
* Tests
- * {@link StringAttributeRenderer#write(Attribute, java.io.Writer, TilesRequestContext, Object...)}
+ * {@link StringAttributeRenderer#write(Object, Attribute, java.io.Writer, TilesRequestContext, Object...)}
* writing a string.
*
* @throws IOException If something goes wrong during rendition.
@@ -116,7 +118,7 @@
/**
* Tests
- * {@link StringAttributeRenderer#write(Attribute, java.io.Writer, TilesRequestContext, Object...)}
+ * {@link StringAttributeRenderer#write(Object, Attribute, java.io.Writer, TilesRequestContext, Object...)}
* writing a template.
*
* @throws IOException If something goes wrong during rendition.
Modified: tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/renderer/ReverseStringAttributeRenderer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/renderer/ReverseStringAttributeRenderer.java?rev=633632&r1=633631&r2=633632&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/renderer/ReverseStringAttributeRenderer.java (original)
+++ tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/renderer/ReverseStringAttributeRenderer.java Tue Mar 4 12:47:06 2008
@@ -37,8 +37,8 @@
/** {@inheritDoc} */
@Override
- public void write(Attribute attribute, Writer writer,
- TilesRequestContext request, Object... requestItems)
+ public void write(Object value, Attribute attribute,
+ Writer writer, TilesRequestContext request, Object... requestItems)
throws IOException, TilesException {
String original = attribute.getValue().toString();
char[] array = original.toCharArray();