diff --git a/pom.xml b/pom.xml index b18167a4b..dbd5028e2 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ tiles-freemarker tiles-velocity tiles-el + tiles-elognl tiles-mvel tiles-ognl tiles-compat diff --git a/tiles-elognl/pom.xml b/tiles-elognl/pom.xml new file mode 100644 index 000000000..7a3321162 --- /dev/null +++ b/tiles-elognl/pom.xml @@ -0,0 +1,116 @@ + + + + + + org.apache.tiles + tiles-parent + 3.1-SNAPSHOT + + + 4.0.0 + tiles-elognl + jar + Tiles - EL OGNL Freemarker support + Extras for Tiles, including non-standard, non-generic, non-identifiable components that may be useful for Tiles users. + + + + org.apache.tiles.extras + + + + + + src/main/resources + + LICENSE.txt + NOTICE.txt + + + + src/main/resources + + LICENSE.txt + NOTICE.txt + + META-INF + + + + + + + org.apache.tiles + tiles-core + + + org.apache.tiles + tiles-freemarker + ${project.version} + + + org.apache.tiles + tiles-el + ${project.version} + + + org.apache.tiles + tiles-ognl + ${project.version} + + + + javax.servlet + servlet-api + provided + + + + javax.servlet.jsp + jsp-api + provided + + + + org.slf4j + slf4j-jdk14 + test + + + + junit + junit + test + + + + org.easymock + easymock + test + + + + + diff --git a/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesContainerFactory.java b/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesContainerFactory.java new file mode 100644 index 000000000..41160f19e --- /dev/null +++ b/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesContainerFactory.java @@ -0,0 +1,177 @@ +package org.apache.tiles.elognl; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Locale; + +import javax.el.ArrayELResolver; +import javax.el.BeanELResolver; +import javax.el.CompositeELResolver; +import javax.el.ELResolver; +import javax.el.ListELResolver; +import javax.el.MapELResolver; +import javax.el.ResourceBundleELResolver; + +import org.apache.tiles.TilesContainer; +import org.apache.tiles.el.ELAttributeEvaluator; +import org.apache.tiles.el.JspExpressionFactoryFactory; +import org.apache.tiles.el.ScopeELResolver; +import org.apache.tiles.el.TilesContextBeanELResolver; +import org.apache.tiles.el.TilesContextELResolver; +import org.apache.tiles.evaluator.AttributeEvaluatorFactory; +import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory; +import org.apache.tiles.factory.BasicTilesContainerFactory; +import org.apache.tiles.factory.TilesContainerFactoryException; +import org.apache.tiles.freemarker.TilesSharedVariableFactory; +import org.apache.tiles.locale.LocaleResolver; +import org.apache.tiles.ognl.AnyScopePropertyAccessor; +import org.apache.tiles.ognl.DelegatePropertyAccessor; +import org.apache.tiles.ognl.NestedObjectDelegatePropertyAccessor; +import org.apache.tiles.ognl.OGNLAttributeEvaluator; +import org.apache.tiles.ognl.PropertyAccessorDelegateFactory; +import org.apache.tiles.ognl.ScopePropertyAccessor; +import org.apache.tiles.ognl.TilesApplicationContextNestedObjectExtractor; +import org.apache.tiles.ognl.TilesContextPropertyAccessorDelegateFactory; +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.ApplicationResource; +import org.apache.tiles.request.Request; +import org.apache.tiles.request.freemarker.render.FreemarkerRenderer; +import org.apache.tiles.request.freemarker.render.FreemarkerRendererBuilder; +import org.apache.tiles.request.freemarker.servlet.SharedVariableLoaderFreemarkerServlet; +import org.apache.tiles.request.render.BasicRendererFactory; +import org.apache.tiles.request.render.ChainedDelegateRenderer; +import org.apache.tiles.request.render.Renderer; + +import ognl.OgnlException; +import ognl.OgnlRuntime; +import ognl.PropertyAccessor; + +public class ElOgnlTilesContainerFactory extends BasicTilesContainerFactory { + + /** + * The freemarker renderer name. + */ + private static final String FREEMARKER_RENDERER_NAME = "freemarker"; + + /** {@inheritDoc} */ + @Override + protected List getSources(ApplicationContext applicationContext) { + Collection webINFSet = applicationContext.getResources("/WEB-INF/tiles.xml"); + //applicationContext.getResources("/WEB-INF/**/tiles*.xml"); + + List filteredResources = new ArrayList(); + if (webINFSet != null) { + for (ApplicationResource resource : webINFSet) { + if (Locale.ROOT.equals(resource.getLocale())) { + filteredResources.add(resource); + } + } + } + return filteredResources; + } + + + /** + * Creates the EL evaluator. + * + * @param applicationContext The Tiles application context. + * @return The EL evaluator. + */ + private ELAttributeEvaluator createELEvaluator(ApplicationContext applicationContext) { + ELAttributeEvaluator evaluator = new ELAttributeEvaluator(); + JspExpressionFactoryFactory efFactory = new JspExpressionFactoryFactory(); + efFactory.setApplicationContext(applicationContext); + evaluator.setExpressionFactory(efFactory.getExpressionFactory()); + ELResolver elResolver = new CompositeELResolver() { + { + BeanELResolver beanElResolver = new BeanELResolver(false); + add(new ScopeELResolver()); + add(new TilesContextELResolver(beanElResolver)); + add(new TilesContextBeanELResolver()); + add(new ArrayELResolver(false)); + add(new ListELResolver(false)); + add(new MapELResolver(false)); + add(new ResourceBundleELResolver()); + add(beanElResolver); + } + }; + evaluator.setResolver(elResolver); + return evaluator; + } + + /** + * Creates the OGNL evaluator. + * + * @return The OGNL evaluator. + */ + private OGNLAttributeEvaluator createOGNLEvaluator() { + try { + PropertyAccessor objectPropertyAccessor = OgnlRuntime.getPropertyAccessor(Object.class); + PropertyAccessor applicationContextPropertyAccessor = new NestedObjectDelegatePropertyAccessor( + new TilesApplicationContextNestedObjectExtractor(), objectPropertyAccessor); + PropertyAccessor anyScopePropertyAccessor = new AnyScopePropertyAccessor(); + PropertyAccessor scopePropertyAccessor = new ScopePropertyAccessor(); + PropertyAccessorDelegateFactory factory = new TilesContextPropertyAccessorDelegateFactory( + objectPropertyAccessor, applicationContextPropertyAccessor, anyScopePropertyAccessor, + scopePropertyAccessor); + PropertyAccessor tilesRequestAccessor = new DelegatePropertyAccessor(factory); + OgnlRuntime.setPropertyAccessor(Request.class, tilesRequestAccessor); + return new OGNLAttributeEvaluator(); + } catch (OgnlException e) { + throw new TilesContainerFactoryException("Cannot initialize OGNL evaluator", e); + } + } + + + /** {@inheritDoc} */ + @Override + protected void registerAttributeRenderers( + BasicRendererFactory rendererFactory, + ApplicationContext applicationContext, + TilesContainer container, + AttributeEvaluatorFactory attributeEvaluatorFactory) { + super.registerAttributeRenderers(rendererFactory, applicationContext, container, attributeEvaluatorFactory); + + FreemarkerRenderer freemarkerRenderer = FreemarkerRendererBuilder + .createInstance() + .setApplicationContext(applicationContext) + .setParameter("TemplatePath", "/") + .setParameter("NoCache", "true") + .setParameter("ContentType", "text/html") + .setParameter("template_update_delay", "0") + .setParameter("default_encoding", "ISO-8859-1") + .setParameter("number_format", "0.##########") + .setParameter(SharedVariableLoaderFreemarkerServlet.CUSTOM_SHARED_VARIABLE_FACTORIES_INIT_PARAM, + "tiles," + TilesSharedVariableFactory.class.getName()).build(); + rendererFactory.registerRenderer(FREEMARKER_RENDERER_NAME, freemarkerRenderer); + } + + /** {@inheritDoc} */ + @Override + protected Renderer createDefaultAttributeRenderer(BasicRendererFactory rendererFactory, + ApplicationContext applicationContext, TilesContainer container, + AttributeEvaluatorFactory attributeEvaluatorFactory) { + + ChainedDelegateRenderer retValue = new ChainedDelegateRenderer(); + retValue.addAttributeRenderer(rendererFactory.getRenderer(DEFINITION_RENDERER_NAME)); + retValue.addAttributeRenderer(rendererFactory.getRenderer(FREEMARKER_RENDERER_NAME)); + retValue.addAttributeRenderer(rendererFactory.getRenderer(TEMPLATE_RENDERER_NAME)); + retValue.addAttributeRenderer(rendererFactory.getRenderer(STRING_RENDERER_NAME)); + return retValue; + } + + + /** {@inheritDoc} */ + @Override + protected AttributeEvaluatorFactory createAttributeEvaluatorFactory(ApplicationContext applicationContext, + LocaleResolver resolver) { + BasicAttributeEvaluatorFactory attributeEvaluatorFactory = new BasicAttributeEvaluatorFactory( + createELEvaluator(applicationContext)); + attributeEvaluatorFactory.registerAttributeEvaluator("OGNL", createOGNLEvaluator()); + + return attributeEvaluatorFactory; + } + + +} diff --git a/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesInitializer.java b/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesInitializer.java new file mode 100644 index 000000000..df944d64d --- /dev/null +++ b/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesInitializer.java @@ -0,0 +1,27 @@ +package org.apache.tiles.elognl; + +import javax.servlet.ServletContext; + +import org.apache.tiles.startup.AbstractTilesInitializer; +import org.apache.tiles.factory.AbstractTilesContainerFactory; +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.servlet.ServletApplicationContext; + +public class ElOgnlTilesInitializer extends AbstractTilesInitializer { + + /** {@inheritDoc} */ + @Override + protected ApplicationContext createTilesApplicationContext( + ApplicationContext preliminaryContext) { + return new ServletApplicationContext( + (ServletContext) preliminaryContext.getContext()); + } + + + /** {@inheritDoc} */ + @Override + protected AbstractTilesContainerFactory createContainerFactory( + ApplicationContext context) { + return new ElOgnlTilesContainerFactory(); + } +} diff --git a/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesListener.java b/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesListener.java new file mode 100644 index 000000000..5d1aacb09 --- /dev/null +++ b/tiles-elognl/src/main/java/org/apache/tiles/elognl/ElOgnlTilesListener.java @@ -0,0 +1,14 @@ +package org.apache.tiles.elognl; + +import org.apache.tiles.startup.TilesInitializer; +import org.apache.tiles.web.startup.AbstractTilesListener; + +public class ElOgnlTilesListener extends AbstractTilesListener { + + /** {@inheritDoc} */ + @Override + protected TilesInitializer createTilesInitializer() { + return new ElOgnlTilesInitializer(); + } + + } diff --git a/tiles-elognl/src/site/site.xml b/tiles-elognl/src/site/site.xml new file mode 100644 index 000000000..f0a7b94d1 --- /dev/null +++ b/tiles-elognl/src/site/site.xml @@ -0,0 +1,85 @@ + + + + + org.apache.maven.skins + maven-fluido-skin + 1.3.0 + + + + true + false + true + + apache/tiles + right + darkblue + + + + + Apache Tiles™ + http://tiles.apache.org/images/logo.png + http://tiles.apache.org + + + Apache Software Foundation + http://struts.apache.org/images/asf-logo.gif + http://www.apache.org + + + + + + + + + + + + + + + +
+
+ Apache Tiles, Tiles, Apache, the Apache feather logo, and the Apache Tiles + project logos are trademarks of The Apache Software Foundation. +
+
+ + diff --git a/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesContainerFactoryTest.java b/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesContainerFactoryTest.java new file mode 100644 index 000000000..9111e23a2 --- /dev/null +++ b/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesContainerFactoryTest.java @@ -0,0 +1,214 @@ +/* + * $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.elognl; + +import static org.easymock.EasyMock.anyObject; +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.eq; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; +import static org.easymock.EasyMock.isA; +import static org.easymock.EasyMock.replay; +import static org.easymock.EasyMock.verify; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; + +import javax.el.ExpressionFactory; +import javax.servlet.ServletContext; +import javax.servlet.jsp.JspApplicationContext; +import javax.servlet.jsp.JspFactory; + +import org.apache.tiles.TilesContainer; +import org.apache.tiles.evaluator.AttributeEvaluatorFactory; +import org.apache.tiles.evaluator.BasicAttributeEvaluatorFactory; +import org.apache.tiles.locale.LocaleResolver; +import org.apache.tiles.renderer.DefinitionRenderer; +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.ApplicationResource; +import org.apache.tiles.request.freemarker.render.FreemarkerRenderer; +import org.apache.tiles.request.render.BasicRendererFactory; +import org.apache.tiles.request.render.ChainedDelegateRenderer; +import org.apache.tiles.request.render.DispatchRenderer; +import org.apache.tiles.request.render.Renderer; +import org.apache.tiles.request.render.StringRenderer; +import org.apache.tiles.request.servlet.ServletApplicationContext; +import org.junit.Before; +import org.junit.Test; + +/** + * Tests {@link ElOgnlTilesContainerFactory}. + * + * @version $Rev$ $Date$ + */ +public class ElOgnlAutoloadTilesContainerFactoryTest { + + /** + * The object to test. + */ + private ElOgnlTilesContainerFactory factory; + + /** + * Initializes the object. + */ + @Before + public void setUp() { + factory = new ElOgnlTilesContainerFactory(); + } + + + + /** + * Test method for + * {@link ElOgnlTilesContainerFactory + * #registerAttributeRenderers(BasicRendererFactory, ApplicationContext, + * TilesContainer, evaluator.AttributeEvaluatorFactory)} + * . + */ + @SuppressWarnings("deprecation") + @Test + public void testRegisterAttributeRenderers() { + BasicRendererFactory rendererFactory = createMock(BasicRendererFactory.class); + ServletApplicationContext applicationContext = createMock(ServletApplicationContext.class); + TilesContainer container = createMock(TilesContainer.class); + AttributeEvaluatorFactory attributeEvaluatorFactory = createMock(AttributeEvaluatorFactory.class); + ServletContext servletContext = createMock(ServletContext.class); + + + rendererFactory.registerRenderer(eq("string"), isA(StringRenderer.class)); + rendererFactory.registerRenderer(eq("template"), isA(DispatchRenderer.class)); + rendererFactory.registerRenderer(eq("definition"), isA(DefinitionRenderer.class)); + rendererFactory.registerRenderer(eq("freemarker"), isA(FreemarkerRenderer.class)); + + expect(applicationContext.getContext()).andReturn(servletContext).anyTimes(); +// expect(servletContext.getResourceAsStream(VelocityView.DEPRECATED_USER_TOOLS_PATH)).andReturn(null); + servletContext.log((String) anyObject()); + expectLastCall().anyTimes(); + + replay(rendererFactory, applicationContext, container, attributeEvaluatorFactory, servletContext); + factory.registerAttributeRenderers(rendererFactory, applicationContext, container, attributeEvaluatorFactory); + verify(rendererFactory, applicationContext, container, attributeEvaluatorFactory, servletContext); + } + + /** + * Tests + * {@link ElOgnlTilesContainerFactory#createDefaultAttributeRenderer(BasicRendererFactory, + * ApplicationContext, TilesContainer, AttributeEvaluatorFactory)}. + */ + @Test + public void testCreateDefaultAttributeRenderer() { + ApplicationContext applicationContext = createMock(ApplicationContext.class); + TilesContainer container = createMock(TilesContainer.class); + AttributeEvaluatorFactory attributeEvaluatorFactory = createMock(AttributeEvaluatorFactory.class); + BasicRendererFactory rendererFactory = createMock(BasicRendererFactory.class); + Renderer stringRenderer = createMock(Renderer.class); + Renderer templateRenderer = createMock(Renderer.class); + Renderer definitionRenderer = createMock(Renderer.class); + Renderer freemarkerRenderer = createMock(Renderer.class); + + expect(rendererFactory.getRenderer("string")).andReturn(stringRenderer); + expect(rendererFactory.getRenderer("template")).andReturn(templateRenderer); + expect(rendererFactory.getRenderer("definition")).andReturn(definitionRenderer); + expect(rendererFactory.getRenderer("freemarker")).andReturn(freemarkerRenderer); + + replay(container, attributeEvaluatorFactory, rendererFactory, applicationContext); + Renderer renderer = factory.createDefaultAttributeRenderer(rendererFactory, applicationContext, container, + attributeEvaluatorFactory); + assertTrue("The default renderer class is not correct", renderer instanceof ChainedDelegateRenderer); + verify(container, attributeEvaluatorFactory, rendererFactory, applicationContext); + } + + /** + * Test method for + * {@link ElOgnlTilesContainerFactory + * #createAttributeEvaluatorFactory(ApplicationContext, locale.LocaleResolver)} + * . + */ + @Test + public void testCreateAttributeEvaluatorFactory() { + ApplicationContext applicationContext = createMock(ApplicationContext.class); + LocaleResolver resolver = createMock(LocaleResolver.class); + ServletContext servletContext = createMock(ServletContext.class); + JspFactory jspFactory = createMock(JspFactory.class); + JspApplicationContext jspApplicationContext = createMock(JspApplicationContext.class); + ExpressionFactory expressionFactory = createMock(ExpressionFactory.class); + + expect(applicationContext.getContext()).andReturn(servletContext); + expect(jspFactory.getJspApplicationContext(servletContext)).andReturn(jspApplicationContext); + expect(jspApplicationContext.getExpressionFactory()).andReturn(expressionFactory); + + replay(applicationContext, resolver, servletContext, jspFactory, jspApplicationContext, expressionFactory); + JspFactory.setDefaultFactory(jspFactory); + AttributeEvaluatorFactory attributeEvaluatorFactory = factory.createAttributeEvaluatorFactory( + applicationContext, resolver); + assertTrue(attributeEvaluatorFactory instanceof BasicAttributeEvaluatorFactory); + assertNotNull(attributeEvaluatorFactory.getAttributeEvaluator("EL")); + assertNotNull(attributeEvaluatorFactory.getAttributeEvaluator("OGNL")); + verify(applicationContext, resolver, servletContext, jspFactory, jspApplicationContext, expressionFactory); + } + + + /** + * Test method for + * {@link ElOgnlTilesContainerFactory#getSources(ApplicationContext)} + * . + * @throws IOException If something goes wrong. + */ + @Test + public void testGetSources() throws IOException { + ApplicationContext applicationContext = createMock(ApplicationContext.class); + + ApplicationResource resource1 = createMock(ApplicationResource.class); + expect(resource1.getLocale()).andReturn(Locale.ROOT); + + Collection resourceSet1 = new HashSet(); + resourceSet1.add(resource1); + + expect(applicationContext.getResources("/WEB-INF/tiles.xml")).andReturn(resourceSet1); + + replay(applicationContext, resource1); + List urls = factory.getSources(applicationContext); + assertEquals(1, urls.size()); + assertTrue(urls.contains(resource1)); + verify(applicationContext, resource1); + } + + + @Test + public void testEmptyReturn() throws IOException { + ApplicationContext applicationContext = createMock(ApplicationContext.class); + + expect(applicationContext.getResources("/WEB-INF/tiles.xml")).andReturn(null); + + replay(applicationContext); + List resources = factory.getSources(applicationContext); + assertEquals(0, resources.size()); + verify(applicationContext); + } + +} diff --git a/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesInitializerTest.java b/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesInitializerTest.java new file mode 100644 index 000000000..5ff321df2 --- /dev/null +++ b/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesInitializerTest.java @@ -0,0 +1,81 @@ +/* + * $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.elognl; + +import static org.junit.Assert.*; +import static org.easymock.EasyMock.*; + +import javax.servlet.ServletContext; + +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.servlet.ServletApplicationContext; +import org.junit.Before; +import org.junit.Test; + +/** + * @author dragos.onac + * + * @version $Rev$ $Date$ + */ +public class ElOgnlAutoloadTilesInitializerTest { + + /** + * The object to test. + */ + private ElOgnlTilesInitializer initializer; + + /** + * Sets up the object to test. + */ + @Before + public void setUp() { + initializer = new ElOgnlTilesInitializer(); + } + + /** + * Test method for {@link ElOgnlTilesInitializer#createTilesApplicationContext(ApplicationContext)}. + */ + @Test + public void testCreateTilesApplicationContext() { + ApplicationContext preliminaryContext = createMock(ApplicationContext.class); + ServletContext servletContext = createMock(ServletContext.class); + + expect(preliminaryContext.getContext()).andReturn(servletContext); + + replay(preliminaryContext, servletContext); + assertTrue(initializer + .createTilesApplicationContext(preliminaryContext) instanceof ServletApplicationContext); + verify(preliminaryContext, servletContext); + } + + /** + * Test method for {@link ElOgnlTilesInitializer#createContainerFactory(ApplicationContext)}. + */ + @Test + public void testCreateContainerFactory() { + ApplicationContext context = createMock(ApplicationContext.class); + + replay(context); + assertTrue(initializer.createContainerFactory(context) instanceof ElOgnlTilesContainerFactory); + verify(context); + } +} diff --git a/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesListenerTest.java b/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesListenerTest.java new file mode 100644 index 000000000..9223f5e42 --- /dev/null +++ b/tiles-elognl/src/test/java/org/apache/tiles/elognl/ElOgnlAutoloadTilesListenerTest.java @@ -0,0 +1,40 @@ +/* + * $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.elognl; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * Tests {@link ElOgnlTilesListener}. + * + * @version $Rev$ $Date$ + */ +public class ElOgnlAutoloadTilesListenerTest { + + @Test + public void testCreateTilesInitializer() { + ElOgnlTilesListener listener = new ElOgnlTilesListener(); + assertTrue(listener.createTilesInitializer() instanceof ElOgnlTilesInitializer); + } +}