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);