You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by at...@apache.org on 2012/08/14 16:03:17 UTC

svn commit: r1372887 - in /rave/sandbox/content-services: demo-portal/src/main/webapp/WEB-INF/ demo-portal/src/main/webapp/WEB-INF/jsp/hmvc/ demo-portal/src/main/webapp/WEB-INF/jsp/views/ demo-portal/src/main/webapp/WEB-INF/jsp/views/hmvc/ rave-web-hmv...

Author: ate
Date: Tue Aug 14 14:03:16 2012
New Revision: 1372887

URL: http://svn.apache.org/viewvc?rev=1372887&view=rev
Log:
RAVE-698: merging HMVC based request dispatching back into main rave configuration
This required *replacing* the spring <mvc:annotation-driven/>tag as using that 'convenience' tag cannot be simply extended/overridden.
This is a major annoyance many have encountered and reported upon before, but so far Springframework hasn't come up with a sufficient *xml* based alternative.
So manually redefining the mvc:annotation-driven behavior is the only feasible solution right now.

Added:
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml   (with props)
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/hmvc/
      - copied from r1371267, rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/hmvc/
Removed:
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/hmvc-dispatcher-servlet.xml
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/hmvc/
Modified:
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
    rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java

Added: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml?rev=1372887&view=auto
==============================================================================
--- rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml (added)
+++ rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml Tue Aug 14 14:03:16 2012
@@ -0,0 +1,238 @@
+<!--
+  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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:oxm="http://www.springframework.org/schema/oxm"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+        http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd">
+
+    <!--
+    Scans the classpath of this application for @Components to deploy as beans
+    NOTE: only the controllers (api and controller packages) are scanned here in dispatcher-servlet.xml. All other
+    org.apache.rave.portal.web.<packages> are scanned in web-applicationContext.xml.  This is to prevent duplicate
+    bean scanning of o.a.r.p.web.* components which can cause problems.
+    -->
+    <context:component-scan base-package="org.apache.rave.portal.web.controller"/>
+    <context:component-scan base-package="org.apache.rave.portal.web.api"/>
+    <context:component-scan base-package="org.apache.rave.portal.web.hmvc"/>
+
+  <!-- Configures the @Controller programming model -->
+
+  <!-- Inline replacement of Spring <mvc:annotation-driven/> to be able to override/extend its behavior.
+       This inline replacement has as downside that next versions of Spring might require alignment, but the
+       alternative is writing custom BeanPostProcessor(s) which are difficult to support customizations of our own (through XML).
+
+       Derived/reverse-enginered from org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport and
+       org.springframework.web.servlet.config.DefaultServletHandlerBeanDefinitionParser
+  -->
+  <util:list id="interceptors">
+    <bean class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
+      <constructor-arg>
+        <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+      </constructor-arg>
+    </bean>
+    <bean class="org.apache.rave.portal.web.interceptors.CommonModelHandlerInterceptor"/>
+    <!--
+        On pre-handle, resolve the device that originated the web
+        request and put that information into the ServletRequest object.
+        By default it will use the LiteDeviceResolver which only
+        gives you very basic information, basically "is this a
+        mobile device or not?".  A more advanced WurflDeviceResolver
+        can be used if you need to get more detailed information about
+        the device such as manufacturer, model, screen size, etc.
+    -->
+    <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor"/>
+  </util:list>
+
+  <util:list id="messageConverters">
+
+    <!-- register-defaults
+
+    <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
+    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
+      <property name="writeAcceptCharset" value="false"/>
+    </bean>
+    <bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
+    <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
+    <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
+    -->
+
+    <!-- if class javax.xml.bind.Binder present
+      <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
+    -->
+
+    <!-- if class com.fasterxml.jackson.databind.ObjectMapper present
+      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
+    -->
+
+    <!-- else if class org.codehaus.jackson.map.ObjectMapper present
+      <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
+    -->
+
+    <!-- if class com.sun.syndication.feed.WireFeed present
+      <bean class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />
+      <bean class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />
+    -->
+
+    <!-- end register-defaults -->
+
+    <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
+      <property name="supportedMediaTypes">
+        <list>
+          <bean class="org.springframework.http.MediaType">
+            <constructor-arg index="0" value="text"/>
+            <constructor-arg index="1" value="plain"/>
+            <constructor-arg index="2" value="UTF-8"/>
+          </bean>
+          <bean class="org.springframework.http.MediaType">
+            <constructor-arg index="0" value="text"/>
+            <constructor-arg index="1" value="javascript"/>
+            <constructor-arg index="2" value="UTF-8"/>
+          </bean>
+        </list>
+      </property>
+    </bean>
+    <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
+      <property name="objectMapper">
+        <bean class="org.apache.rave.portal.web.model.MaterializedBeanObjectMapperFactory"/>
+      </property>
+    </bean>
+    <bean primary="true" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
+      <property name="marshaller" ref="xmlMarshaller"/>
+      <property name="unmarshaller" ref="xmlMarshaller"/>
+    </bean>
+  </util:list>
+
+  <bean name="hmvcHandlerMapping" class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMapping">
+    <property name="order" value="-1"/>
+    <property name="interceptors" ref="interceptors"/>
+  </bean>
+
+  <bean id="requestMappingHandlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
+    <property name="order" value="0" />
+    <property name="interceptors" ref="interceptors"/>
+  </bean>
+
+
+  <!-- Inline replacement of Spring <mvc:view-controller/> -->
+  <bean id="org.springframework.web.servlet.config.viewControllerHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
+    <property name="order" value="1"/>
+    <property name="urlMap">
+      <map>
+        <!-- Forwards requests to the "/" resource to the "page" view -->
+        <entry key="/">
+          <bean class="org.springframework.web.servlet.mvc.ParameterizableViewController">
+            <property name="viewName" value="page"/>
+          </bean>
+        </entry>
+      </map>
+    </property>
+  </bean>
+
+  <bean id="beanNameHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
+    <property name="order" value="2" />
+    <property name="interceptors" ref="interceptors"/>
+  </bean>
+
+  <bean name="hmvcHandlerAdapter" class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodHandlerAdapter">
+    <property name="order" value="-1"/>
+    <property name="webBindingInitializer">
+      <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
+        <property name="conversionService">
+          <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+        </property>
+        <property name="validator">
+          <!-- depends on JSR-303
+          <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+          -->
+          <null/>
+        </property>
+      </bean>
+    </property>
+    <property name="messageConverters" ref="messageConverters"/>
+  </bean>
+
+  <bean id="requestMappingHandlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
+    <property name="order" value="0"/>
+    <property name="webBindingInitializer">
+      <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
+        <property name="conversionService">
+          <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+        </property>
+        <property name="validator">
+          <!-- depends on JSR-303
+          <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+          -->
+          <null/>
+        </property>
+      </bean>
+    </property>
+    <property name="messageConverters" ref="messageConverters"/>
+  </bean>
+
+  <bean id="httpRequestHandlerAdapter" class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
+  <bean id="simpleControllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
+
+  <bean id="handlerExceptionResolver" class="org.springframework.web.servlet.handler.HandlerExceptionResolverComposite">
+    <property name="order" value="0"/>
+    <property name="exceptionResolvers">
+      <list>
+        <bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver">
+          <property name="messageConverters" ref="messageConverters"/>
+        </bean>
+        <bean class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver"/>
+        <bean class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver"/>
+      </list>
+    </property>
+  </bean>
+
+  <!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
+  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+    <property name="prefix" value="/WEB-INF/jsp/views/"/>
+    <property name="suffix" value=".jsp"/>
+  </bean>
+
+  <oxm:jaxb2-marshaller id="xmlMarshaller">
+    <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaUser"/>
+    <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaPage"/>
+    <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaRegion"/>
+    <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaRegionWidget"/>
+    <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaRegionWidgetPreference"/>
+    <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaWidget"/>
+    <oxm:class-to-be-bound name="org.apache.rave.portal.web.model.RegionWidgetPreferenceListWrapper"/>
+  </oxm:jaxb2-marshaller>
+
+  <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
+    <property name="definitions">
+      <list>
+        <value>/WEB-INF/tiles-defs.xml</value>
+      </list>
+    </property>
+  </bean>
+
+  <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="0">
+    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
+  </bean>
+
+</beans>

Propchange: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml (original)
+++ rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml Tue Aug 14 14:03:16 2012
@@ -68,25 +68,10 @@
       <load-on-startup>1</load-on-startup>
     </servlet>
   
-    <!-- Handles all requests into the application -->
+    <!-- Handles all + hmvc requests into the application -->
     <servlet>
         <servlet-name>dispatcher</servlet-name>
-        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-    
-    <!-- Handles hmvc requests into the application -->
-    <servlet>
-        <servlet-name>hmvc-dispatcher</servlet-name>
         <servlet-class>org.apache.rave.portal.web.hmvc.servlet.HmvcDispatcherServlet</servlet-class>
-        <init-param>
-          <param-name>detectAllHandlerMappings</param-name>
-          <param-value>false</param-value>
-        </init-param>
-        <init-param>
-          <param-name>detectAllHandlerAdapters</param-name>
-          <param-value>false</param-value>
-        </init-param>
         <load-on-startup>1</load-on-startup>
     </servlet>
     
@@ -100,12 +85,6 @@
         <servlet-name>dispatcher</servlet-name>
         <url-pattern>/app/*</url-pattern>
     </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>hmvc-dispatcher</servlet-name>
-        <url-pattern>/hmvc/*</url-pattern>
-    </servlet-mapping>
-
     <servlet-mapping>
         <servlet-name>dispatcher</servlet-name>
         <url-pattern>/index.html</url-pattern>

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java Tue Aug 14 14:03:16 2012
@@ -29,6 +29,6 @@ public class MyBodyController {
             @CController(name = "content", type = MyContentController.class)
     })
     public String render() {
-        return "mybody";
+        return "hmvc/mybody";
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyContentController {
 
     @Hmvc @RequestMapping
     public String render() {
-        return "mycontent";
+        return "hmvc/mycontent";
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyFooterController {
 
     @Hmvc @RequestMapping
     public String render() {
-        return "myfooter";
+        return "hmvc/myfooter";
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyHeaderController {
 
     @Hmvc @RequestMapping
     public String render() {
-        return "myheader";
+        return "hmvc/myheader";
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyMenuController {
 
     @Hmvc @RequestMapping
     public String render() {
-        return "mymenu";
+        return "hmvc/mymenu";
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java Tue Aug 14 14:03:16 2012
@@ -32,7 +32,7 @@ public class MyPageController {
             @CController(name = "footer", type = MyFooterController.class)
     })
     public String renderPage() {
-        return "mypage";
+        return "hmvc/mypage";
     }
 
     @RequestMapping("/mypage1")
@@ -42,11 +42,11 @@ public class MyPageController {
             @CController(name = "footer", type = MyFooterController.class)
     })
     public String renderPage1() {
-        return "mypage";
+        return "hmvc/mypage";
     }
 
     @Hmvc @RequestMapping
     public String renderPage2() {
-        return "mypage";
+        return "hmvc/mypage";
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java Tue Aug 14 14:03:16 2012
@@ -88,7 +88,7 @@ public class HmvcHandlerMethodMappingByC
         assertTrue("body should have two nodes", bodyKids.size() == 2);
         assertTrue("body should have menu", bodyKids.contains("menu"));
         assertTrue("body should have content", bodyKids.contains("content"));
-        assertViewName(mav, "mypage");
+        assertViewName(mav, "hmvc/mypage");
     }