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/07 21:59:35 UTC
svn commit: r634819 - in /tiles/framework/trunk/tiles-core: ./
src/main/java/org/apache/tiles/evaluator/el/
src/main/java/org/apache/tiles/evaluator/impl/
src/main/java/org/apache/tiles/factory/
src/test/java/org/apache/tiles/evaluator/impl/ src/test/j...
Author: apetrelli
Date: Fri Mar 7 12:59:31 2008
New Revision: 634819
URL: http://svn.apache.org/viewvc?rev=634819&view=rev
Log:
TILES-48
Renamed DirectEvaluator to DirectAttributeEvaluator.
Added dependency on JUEL
Added sample implementation of ELAttributeEvaluator.
Added:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html (with props)
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java
- copied, changed from r633978, tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java
Removed:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java
Modified:
tiles/framework/trunk/tiles-core/pom.xml
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.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
Modified: tiles/framework/trunk/tiles-core/pom.xml
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/pom.xml?rev=634819&r1=634818&r2=634819&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/pom.xml (original)
+++ tiles/framework/trunk/tiles-core/pom.xml Fri Mar 7 12:59:31 2008
@@ -165,6 +165,13 @@
</dependency>
<dependency>
+ <groupId>de.odysseus.juel</groupId>
+ <artifactId>juel</artifactId>
+ <version>2.1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java?rev=634819&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java Fri Mar 7 12:59:31 2008
@@ -0,0 +1,144 @@
+/*
+ * $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.el;
+
+import javax.el.ArrayELResolver;
+import javax.el.CompositeELResolver;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.ListELResolver;
+import javax.el.MapELResolver;
+import javax.el.ResourceBundleELResolver;
+import javax.el.ValueExpression;
+
+import org.apache.tiles.Attribute;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.TilesContainer;
+import org.apache.tiles.awareness.TilesContainerAware;
+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 de.odysseus.el.ExpressionFactoryImpl;
+import de.odysseus.el.util.SimpleContext;
+
+/**
+ * Evaluates string expression with typical EL syntax.<br>
+ * You can use normal EL syntax, knowing that the root objects are
+ * {@link TilesRequestContext}, {@link TilesApplicationContext} and beans
+ * contained in request, session and application scope.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class ELAttributeEvaluator implements AttributeEvaluator,
+ TilesContextFactoryAware, TilesContainerAware {
+
+ /**
+ * The Tiles application context.
+ *
+ * @since 2.1.0
+ */
+ protected TilesApplicationContext applicationContext;
+
+ /**
+ * The Tiles context factory.
+ *
+ * @since 2.1.0
+ */
+ protected TilesContextFactory contextFactory;
+
+ /**
+ * The Tiles container.
+ *
+ * @since 2.1.0
+ */
+ protected TilesContainer container;
+
+ /**
+ * The EL expression factory.
+ *
+ * @since 2.1.0
+ */
+ protected ExpressionFactory expressionFactory;
+
+ /**
+ * The EL resolver to use.
+ *
+ * @since 2.1.0
+ */
+ protected ELResolver defaultResolver;
+
+ /**
+ * Constructor.
+ *
+ * @since 2.1.0
+ */
+ public ELAttributeEvaluator() {
+ // FIXME Take a different strategy to hold the expression factory.
+ expressionFactory = new ExpressionFactoryImpl();
+ defaultResolver = new CompositeELResolver() {
+ {
+ add(new TilesContextELResolver());
+ add(new TilesContextBeanELResolver());
+ add(new ArrayELResolver(false));
+ add(new ListELResolver(false));
+ add(new MapELResolver(false));
+ add(new ResourceBundleELResolver());
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ public void setApplicationContext(TilesApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+ /** {@inheritDoc} */
+ public void setContextFactory(TilesContextFactory contextFactory) {
+ this.contextFactory = contextFactory;
+ }
+
+ /** {@inheritDoc} */
+ public void setContainer(TilesContainer container) {
+ this.container = container;
+ }
+
+ /** {@inheritDoc} */
+ public Object evaluate(Attribute attribute, TilesRequestContext request) {
+ Object retValue = attribute.getValue();
+
+ if (retValue instanceof String) {
+ SimpleContext context = new SimpleContext(defaultResolver);
+ context.putContext(TilesRequestContext.class, request);
+ context.putContext(TilesApplicationContext.class,
+ applicationContext);
+ ValueExpression expression = expressionFactory
+ .createValueExpression(context, attribute.getValue()
+ .toString(), Object.class);
+
+ retValue = expression.getValue(context);
+ }
+
+ return retValue;
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java?rev=634819&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java Fri Mar 7 12:59:31 2008
@@ -0,0 +1,199 @@
+/*
+ * $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.el;
+
+import java.beans.BeanInfo;
+import java.beans.FeatureDescriptor;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.context.TilesRequestContext;
+
+/**
+ * Resolves beans in request, session and application scope.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class TilesContextBeanELResolver extends ELResolver {
+
+ /**
+ * The logging object.
+ */
+ private static final Log LOG = LogFactory
+ .getLog(TilesContextBeanELResolver.class);
+
+ /** {@inheritDoc} */
+ @Override
+ public Class<?> getCommonPropertyType(ELContext context, Object base) {
+ // only resolve at the root of the context
+ if (base != null) {
+ return null;
+ }
+
+ return String.class;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
+ Object base) {
+ List<FeatureDescriptor> list = new ArrayList<FeatureDescriptor>();
+
+ TilesRequestContext request = (TilesRequestContext) context
+ .getContext(TilesRequestContext.class);
+ collectBeanInfo(request.getRequestScope(), list);
+ collectBeanInfo(request.getSessionScope(), list);
+
+ TilesApplicationContext applicationContext = (TilesApplicationContext) context
+ .getContext(TilesApplicationContext.class);
+ collectBeanInfo(applicationContext.getApplicationScope(), list);
+ return list.iterator();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Class<?> getType(ELContext context, Object base, Object property) {
+ if (base != null) {
+ return null;
+ }
+
+ Object obj = findObjectByProperty(context, property);
+ if (obj != null) {
+ return obj.getClass();
+ }
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Object getValue(ELContext context, Object base, Object property) {
+ if (base != null) {
+ return null;
+ }
+
+ return findObjectByProperty(context, property);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean isReadOnly(ELContext context, Object base, Object property) {
+ if (context == null) {
+ throw new NullPointerException();
+ }
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setValue(ELContext context, Object base, Object property,
+ Object value) {
+ // Does nothing for the moment.
+ }
+
+ /**
+ * Collects bean infos from a map's values and filling a list.
+ *
+ * @param map The map containing the bean to be inspected.
+ * @param list The list to fill.
+ */
+ protected void collectBeanInfo(Map<String, ? extends Object> map,
+ List<FeatureDescriptor> list) {
+ if (map == null || map.isEmpty()) {
+ return;
+ }
+
+ for (Object bean : map.values()) {
+ BeanInfo info = null;
+ try {
+ info = Introspector.getBeanInfo(bean.getClass());
+ } catch (Exception ex) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cannot inspect bean " + bean.getClass(), ex);
+ }
+ }
+ if (info == null) {
+ return;
+ }
+ for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
+ pd.setValue("type", pd.getPropertyType());
+ pd.setValue("resolvableAtDesignTime", Boolean.FALSE);
+ list.add(pd);
+ }
+ }
+ }
+
+ /**
+ * Finds an object in request, session or application scope, in this order.
+ *
+ * @param context The context to use.
+ * @param property The property used as an attribute name.
+ * @return The found bean, if it exists, or <code>null</code> otherwise.
+ */
+ protected Object findObjectByProperty(ELContext context, Object property) {
+ Object retValue = null;
+
+ TilesRequestContext request = (TilesRequestContext) context
+ .getContext(TilesRequestContext.class);
+
+ String prop = property.toString();
+
+ retValue = getObject(request.getRequestScope(), prop);
+ if (retValue == null) {
+ retValue = getObject(request.getSessionScope(), prop);
+ if (retValue == null) {
+ TilesApplicationContext applicationContext = (TilesApplicationContext) context
+ .getContext(TilesApplicationContext.class);
+ retValue = getObject(applicationContext.getApplicationScope(),
+ prop);
+ }
+ }
+
+ return retValue;
+ }
+
+ /**
+ * Returns an object from a map in a null-safe manner.
+ *
+ * @param map The map to use.
+ * @param property The property to use as a key.
+ * @return The object, if present, or <code>null</code> otherwise.
+ */
+ protected Object getObject(Map<String, ? extends Object> map,
+ String property) {
+ Object retValue = null;
+ if (map != null) {
+ retValue = map.get(property);
+ }
+ return retValue;
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextBeanELResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java?rev=634819&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java Fri Mar 7 12:59:31 2008
@@ -0,0 +1,176 @@
+/*
+ * $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.el;
+
+import java.beans.BeanInfo;
+import java.beans.FeatureDescriptor;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.el.BeanELResolver;
+import javax.el.ELContext;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tiles.TilesApplicationContext;
+import org.apache.tiles.context.TilesRequestContext;
+
+/**
+ * Resolves properties of {@link TilesRequestContext} and
+ * {@link TilesApplicationContext}.
+ *
+ * @version $Rev$ $Date$
+ * @since 2.1.0
+ */
+public class TilesContextELResolver extends BeanELResolver {
+ /**
+ * The logging object.
+ */
+ private static final Log LOG = LogFactory
+ .getLog(TilesContextBeanELResolver.class);
+
+ /**
+ * The descriptors of {@link TilesRequestContext} and
+ * {@link TilesApplicationContext}.
+ *
+ * @since 2.1.0
+ */
+ private List<FeatureDescriptor> descriptors;
+
+ /**
+ * Constructor.
+ */
+ public TilesContextELResolver() {
+ List<FeatureDescriptor> list = new ArrayList<FeatureDescriptor>();
+ collectBeanInfo(TilesRequestContext.class, list);
+ collectBeanInfo(TilesApplicationContext.class, list);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Class<?> getCommonPropertyType(ELContext context, Object base) {
+ // only resolve at the root of the context
+ if (base != null) {
+ return null;
+ }
+
+ return String.class;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
+ Object base) {
+ // only resolve at the root of the context
+ if (base != null) {
+ return null;
+ }
+
+ return descriptors.iterator();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Class<?> getType(ELContext context, Object base, Object property) {
+ // only resolve at the root of the context
+ if (base != null) {
+ return null;
+ }
+
+ TilesRequestContext request = (TilesRequestContext) context
+ .getContext(TilesRequestContext.class);
+
+ Class<?> retValue = super.getType(context, request, property);
+ if (retValue == null) {
+ TilesApplicationContext applicationContext = (TilesApplicationContext) context
+ .getContext(TilesApplicationContext.class);
+ retValue = super.getType(context, applicationContext, property);
+ }
+ context.setPropertyResolved(true);
+ return retValue;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public Object getValue(ELContext context, Object base, Object property) {
+ // only resolve at the root of the context
+ if (base != null) {
+ return null;
+ }
+
+ TilesRequestContext request = (TilesRequestContext) context
+ .getContext(TilesRequestContext.class);
+
+ Object retValue = super.getValue(context, request, property);
+ if (retValue == null) {
+ TilesApplicationContext applicationContext = (TilesApplicationContext) context
+ .getContext(TilesApplicationContext.class);
+ retValue = super.getValue(context, applicationContext, property);
+ }
+ context.setPropertyResolved(true);
+ return retValue;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public boolean isReadOnly(ELContext context, Object base, Object property) {
+ if (context == null) {
+ throw new NullPointerException();
+ }
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setValue(ELContext context, Object base, Object property,
+ Object value) {
+ // Does nothing for the moment.
+ }
+
+ /**
+ * Collects bean infos from a class and filling a list.
+ *
+ * @param clazz The class to be inspected.
+ * @param list The list to fill.
+ */
+ protected void collectBeanInfo(Class<?> clazz, List<FeatureDescriptor> list) {
+ BeanInfo info = null;
+ try {
+ info = Introspector.getBeanInfo(clazz);
+ } catch (Exception ex) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Cannot inspect class " + clazz, ex);
+ }
+ }
+ if (info == null) {
+ return;
+ }
+ for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
+ pd.setValue("type", pd.getPropertyType());
+ pd.setValue("resolvableAtDesignTime", Boolean.TRUE);
+ list.add(pd);
+ }
+ }
+}
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/TilesContextELResolver.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html?rev=634819&view=auto
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html (added)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html Fri Mar 7 12:59:31 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 evaluator EL implementation</title>
+</head>
+<body>
+Attribute evaluator classes that can perform EL evaluation for attributes.
+</body>
+</html>
\ No newline at end of file
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Copied: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java (from r633978, 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/DirectAttributeEvaluator.java?p2=tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java&p1=tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java&r1=633978&r2=634819&rev=634819&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectEvaluator.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/impl/DirectAttributeEvaluator.java Fri Mar 7 12:59:31 2008
@@ -31,7 +31,7 @@
* @version $Rev$ $Date$
* @since 2.1.0
*/
-public class DirectEvaluator implements AttributeEvaluator {
+public class DirectAttributeEvaluator implements AttributeEvaluator {
/** {@inheritDoc} */
public Object evaluate(Attribute attribute, TilesRequestContext request) {
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=634819&r1=634818&r2=634819&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 Fri Mar 7 12:59:31 2008
@@ -31,7 +31,7 @@
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.evaluator.impl.DirectAttributeEvaluator;
import org.apache.tiles.impl.BasicTilesContainer;
import org.apache.tiles.impl.mgmt.CachingTilesContainer;
import org.apache.tiles.mgmt.MutableTilesContainer;
@@ -117,7 +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());
+ DEFAULTS.put(ATTRIBUTE_EVALUATOR_INIT_PARAM, DirectAttributeEvaluator.class.getName());
}
/**
@@ -283,12 +283,23 @@
(RendererFactory) createFactory(configuration,
RENDERER_FACTORY_INIT_PARAM);
- AttributeEvaluator evaluator = (AttributeEvaluator) createFactory(
- configuration, ATTRIBUTE_EVALUATOR_INIT_PARAM);
-
contextFactory.init(configuration);
TilesApplicationContext tilesContext =
contextFactory.createApplicationContext(context);
+
+ AttributeEvaluator evaluator = (AttributeEvaluator) createFactory(
+ configuration, ATTRIBUTE_EVALUATOR_INIT_PARAM);
+
+ if (evaluator instanceof TilesContextFactoryAware) {
+ ((TilesContextFactoryAware) evaluator)
+ .setContextFactory(contextFactory);
+ ((TilesContextFactoryAware) evaluator)
+ .setApplicationContext(tilesContext);
+ }
+
+ if (evaluator instanceof TilesContainerAware) {
+ ((TilesContainerAware) evaluator).setContainer(container);
+ }
if (rendererFactory instanceof TilesContextFactoryAware) {
((TilesContextFactoryAware) rendererFactory)
Modified: 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=634819&r1=634818&r2=634819&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/evaluator/impl/DirectEvaluatorTest.java Fri Mar 7 12:59:31 2008
@@ -25,7 +25,7 @@
import junit.framework.TestCase;
/**
- * Tests {@link DirectEvaluator}.
+ * Tests {@link DirectAttributeEvaluator}.
*
* @version $Rev$ $Date$
*/
@@ -34,16 +34,16 @@
/**
* The evaluator to test.
*/
- private DirectEvaluator evaluator;
+ private DirectAttributeEvaluator evaluator;
/** {@inheritDoc} */
public void setUp() throws Exception {
- evaluator = new DirectEvaluator();
+ evaluator = new DirectAttributeEvaluator();
}
/**
* Tests
- * {@link DirectEvaluator#evaluate(Attribute, org.apache.tiles.context.TilesRequestContext)}.
+ * {@link DirectAttributeEvaluator#evaluate(Attribute, org.apache.tiles.context.TilesRequestContext)}.
*/
public void testEvaluate() {
String expression = "This is an expression";
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=634819&r1=634818&r2=634819&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 Fri Mar 7 12:59:31 2008
@@ -31,7 +31,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.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -52,7 +52,7 @@
@Override
protected void setUp() throws Exception {
renderer = new MockAttributeRenderer();
- renderer.setEvaluator(new DirectEvaluator());
+ renderer.setEvaluator(new DirectAttributeEvaluator());
}
/**
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=634819&r1=634818&r2=634819&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 Fri Mar 7 12:59:31 2008
@@ -29,7 +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.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -50,7 +50,7 @@
@Override
protected void setUp() throws Exception {
renderer = new DefinitionAttributeRenderer();
- renderer.setEvaluator(new DirectEvaluator());
+ renderer.setEvaluator(new DirectAttributeEvaluator());
}
/**
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=634819&r1=634818&r2=634819&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 Fri Mar 7 12:59:31 2008
@@ -28,7 +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.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -49,7 +49,7 @@
@Override
protected void setUp() throws Exception {
renderer = new StringAttributeRenderer();
- renderer.setEvaluator(new DirectEvaluator());
+ renderer.setEvaluator(new DirectAttributeEvaluator());
}
/**
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=634819&r1=634818&r2=634819&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 Fri Mar 7 12:59:31 2008
@@ -28,7 +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.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -49,7 +49,7 @@
@Override
protected void setUp() throws Exception {
renderer = new TemplateAttributeRenderer();
- renderer.setEvaluator(new DirectEvaluator());
+ renderer.setEvaluator(new DirectAttributeEvaluator());
}
/**
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=634819&r1=634818&r2=634819&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 Fri Mar 7 12:59:31 2008
@@ -29,7 +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.apache.tiles.evaluator.impl.DirectAttributeEvaluator;
import org.easymock.EasyMock;
import junit.framework.TestCase;
@@ -50,7 +50,7 @@
@Override
protected void setUp() throws Exception {
renderer = new UntypedAttributeRenderer();
- renderer.setEvaluator(new DirectEvaluator());
+ renderer.setEvaluator(new DirectAttributeEvaluator());
}
/**