Author: lukaszlenart Date: Thu Oct 24 12:50:37 2013 New Revision: 1535364 URL: http://svn.apache.org/r1535364 Log: WW-3832 Solves problem when not using flat layout with Convention plugin
Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java?rev=1535364&r1=1535363&r2=1535364&view=diff ============================================================================== --- struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java (original) +++ struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java Thu Oct 24 12:50:37 2013 @@ -359,7 +359,7 @@ public class DefaultResultMapBuilder imp int indexOfDot = path.indexOf('.', resultPrefix.length()); // This case is when the path doesn't contain a result code - if (indexOfDot == resultPrefix.length() || !flatResultLayout) { + if (indexOfDot == resultPrefix.length()) { if (LOG.isTraceEnabled()) { LOG.trace("The result file [#0] has no result code and therefore" + " will be associated with success, input and error by default. This might" + Modified: struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java?rev=1535364&r1=1535363&r2=1535364&view=diff ============================================================================== --- struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java (original) +++ struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/DefaultResultMapBuilderTest.java Thu Oct 24 12:50:37 2013 @@ -229,6 +229,42 @@ public class DefaultResultMapBuilderTest } + public void testFromServletContextNotFlat() throws Exception { + ServletContext context = EasyMock.createStrictMock(ServletContext.class); + + // Setup some mock jsps + Set<String> resources = new HashSet<String>(); + resources.add("/WEB-INF/location/namespace/no-annotation/index.ftl"); + resources.add("/WEB-INF/location/namespace/no-annotation/success.jsp"); + resources.add("/WEB-INF/location/namespace/no-annotation/failure.jsp"); + EasyMock.expect(context.getResourcePaths("/WEB-INF/location/namespace/no-annotation")).andReturn(resources); + EasyMock.replay(context); + + PackageConfig packageConfig = createPackageConfigBuilder("/namespace"); + + this.conventionsService = new ConventionsServiceImpl("/WEB-INF/location"); + DefaultResultMapBuilder builder = new DefaultResultMapBuilder(context, container, "dispatcher,velocity,freemarker"); + builder.setFlatResultLayout("false"); + + Map<String, ResultConfig> results = builder.build(NoAnnotationAction.class, null, "no-annotation", packageConfig); + + assertEquals(3, results.size()); + + assertEquals("success", results.get("success").getName()); + assertEquals(3, results.get("success").getParams().size()); + assertEquals("org.apache.struts2.dispatcher.ServletDispatcherResult", results.get("success").getClassName()); + assertEquals("/WEB-INF/location/namespace/no-annotation/success.jsp", results.get("success").getParams().get("location")); + + assertEquals(1, results.get("index").getParams().size()); + assertEquals("org.apache.struts2.views.freemarker.FreemarkerResult", results.get("index").getClassName()); + assertEquals("/WEB-INF/location/namespace/no-annotation/index.ftl", results.get("index").getParams().get("location")); + + assertEquals(3, results.get("failure").getParams().size()); + assertEquals("org.apache.struts2.dispatcher.ServletDispatcherResult", results.get("success").getClassName()); + assertEquals("/WEB-INF/location/namespace/no-annotation/failure.jsp", results.get("failure").getParams().get("location")); + EasyMock.verify(context); + } + public void testIgnoreFilesWithoutName() throws Exception { ServletContext context = EasyMock.createStrictMock(ServletContext.class);