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/31 11:55:22 UTC

svn commit: r1379388 - in /rave/sandbox/content-services: demo-portal/src/main/resources/ rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/ rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/...

Author: ate
Date: Fri Aug 31 09:55:22 2012
New Revision: 1379388

URL: http://svn.apache.org/viewvc?rev=1379388&view=rev
Log:
RAVE-694: support multi-view mapping and rendering against a single page or fragment (controller) definition

Modified:
    rave/sandbox/content-services/demo-portal/src/main/resources/url-mapping.xml
    rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/UrlMapping.java
    rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/FileUrlMapping.java
    rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/JcrUrlMapping.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/Hmvc.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.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/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
    rave/sandbox/content-services/rave-web-hmvc/src/test/resources/url-configuration.xml

Modified: rave/sandbox/content-services/demo-portal/src/main/resources/url-mapping.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/resources/url-mapping.xml?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/demo-portal/src/main/resources/url-mapping.xml (original)
+++ rave/sandbox/content-services/demo-portal/src/main/resources/url-mapping.xml Fri Aug 31 09:55:22 2012
@@ -20,4 +20,5 @@
 <url-configuration name="default">
   <url-mapping url="/mypage3" page="myPage3"/>
   <url-mapping url="/mypage4" page="myPage4"/>
+  <url-mapping url="/mypageFoo" page="myPage3" views="bar"/>
 </url-configuration>

Modified: rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/UrlMapping.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/UrlMapping.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/UrlMapping.java (original)
+++ rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/UrlMapping.java Fri Aug 31 09:55:22 2012
@@ -50,9 +50,6 @@ public interface UrlMapping {
 
     void setPageDefinition(PageDefinition pageDefinition);
 
-    void setTarget(String target);
-    String getTarget();
-
-    void setAction(String action);
-    String getAction();
+    void setViews(String[] views);
+    String[] getViews();
 }

Modified: rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/FileUrlMapping.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/FileUrlMapping.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/FileUrlMapping.java (original)
+++ rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/FileUrlMapping.java Fri Aug 31 09:55:22 2012
@@ -20,6 +20,7 @@
 package org.apache.rave.jcr.config.url;
 
 import java.util.List;
+import java.util.StringTokenizer;
 
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
@@ -38,8 +39,8 @@ public class FileUrlMapping implements U
     private static Logger log = LoggerFactory.getLogger(FileUrlMapping.class);
 
 
-    private String action;
-    private String target;
+    private String[] views;
+    private String viewsAttribute;
     private String url;
     private String page;
     private UrlMapping parent;
@@ -49,6 +50,43 @@ public class FileUrlMapping implements U
     public FileUrlMapping() {
     }
 
+    @XmlAttribute(name = "views")
+    public String getViewsAttribute() {
+        return viewsAttribute;
+    }
+
+    public void setViewsAttribute(String viewsAttribute) {
+        this.viewsAttribute = viewsAttribute;
+    }
+
+    public String[] getViews() {
+        if (viewsAttribute != null) {
+            StringTokenizer tok = new StringTokenizer(viewsAttribute, ",", false);
+            String[] views = new String[tok.countTokens()];
+            for (int i = 0; i < views.length; i++) {
+                views[i] = tok.nextToken();
+            }
+            return views;
+        }
+        return null;
+    }
+
+    public void setViews(String[] views) {
+        viewsAttribute = null;
+        if (views != null) {
+            StringBuffer buf = new StringBuffer("");
+            for (int i = 0; i < views.length; i++) {
+                if (views[i] != null) {
+                    buf.append(views[i]);
+                }
+                if (i < views.length-1) {
+                    buf.append(',');
+                }
+            }
+            viewsAttribute = buf.toString();
+        }
+    }
+
     @XmlAttribute
     @Override
     public String getUrl() {
@@ -125,20 +163,4 @@ public class FileUrlMapping implements U
         sb.append('}');
         return sb.toString();
     }
-
-    public String getAction() {
-        return action;
-    }
-
-    public void setAction(final String action) {
-        this.action = action;
-    }
-
-    public String getTarget() {
-        return target;
-    }
-
-    public void setTarget(final String target) {
-        this.target = target;
-    }
 }

Modified: rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/JcrUrlMapping.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/JcrUrlMapping.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/JcrUrlMapping.java (original)
+++ rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/url/JcrUrlMapping.java Fri Aug 31 09:55:22 2012
@@ -122,19 +122,12 @@ public class JcrUrlMapping implements Ur
         return sb.toString();
     }
 
-    public String getAction() {
-        return action;
+    public String[] getViews() {
+        // TODO
+        return null;
     }
 
-    public void setAction(final String action) {
-        this.action = action;
-    }
-
-    public String getTarget() {
-        return target;
-    }
-
-    public void setTarget(final String target) {
-        this.target = target;
+    public void setViews(String[] views) {
+        // TODO
     }
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/Hmvc.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/Hmvc.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/Hmvc.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/Hmvc.java Fri Aug 31 09:55:22 2012
@@ -26,5 +26,5 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface Hmvc {
-    String action() default "default";
+    String view() default "default";
 }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java Fri Aug 31 09:55:22 2012
@@ -26,7 +26,7 @@ public class HmvcHandlerConfiguration {
     private String name;
     private String targetId;
     private HmvcHandlerConfiguration parent;
-    private Map<String, HmvcHandlerMethod> methods = new HashMap<String, HmvcHandlerMethod>();
+    private HmvcHandlerMethod method;
     private Map<String, String> parameters = new HashMap<String, String>();
     private Map<String, HmvcHandlerConfiguration> children = new LinkedHashMap<String, HmvcHandlerConfiguration>();
 
@@ -56,8 +56,12 @@ public class HmvcHandlerConfiguration {
         this.parent = parent;
     }
 
-    public Map<String, HmvcHandlerMethod> getMethods() {
-        return methods;
+    public HmvcHandlerMethod getMethod() {
+        return method;
+    }
+
+    public void setMethod(HmvcHandlerMethod method) {
+        this.method = method;
     }
 
     public Map<String, HmvcHandlerConfiguration> getChildren() {
@@ -65,7 +69,7 @@ public class HmvcHandlerConfiguration {
     }
 
     public Class<?> getHandlerClass() {
-        return methods.get("default").getBeanType();
+        return method.getBeanType();
     }
 
     public String getViewName() {

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethod.java Fri Aug 31 09:55:22 2012
@@ -25,6 +25,7 @@ import org.springframework.web.method.Ha
 
 public class HmvcHandlerMethod extends HandlerMethod {
 
+    public static final String REQUEST_MAPPING_INFO = HmvcHandlerMethod.class.getName() + ".RequestMappingInfo";
     public static final String VIEW_RESPONSE_STATE = HmvcHandlerMethod.class.getName() + ".ViewResponseState";
     public static final String MODEL_AND_VIEW = HmvcHandlerMethod.class.getName() + ".ModelAndView";
 

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodHandlerAdapter.java Fri Aug 31 09:55:22 2012
@@ -40,7 +40,7 @@ public class HmvcHandlerMethodHandlerAda
 
             Map<String, ModelAndView> cmvMap = new LinkedHashMap<String, ModelAndView>();
             for (String name : hm.getConfiguration().getChildren().keySet()) {
-                HmvcHandlerMethod chm = hm.getConfiguration().getChildren().get(name).getMethods().get("default");
+                HmvcHandlerMethod chm = hm.getConfiguration().getChildren().get(name).getMethod();
                 request.setAttribute(DispatcherServlet.INPUT_FLASH_MAP_ATTRIBUTE, mv.getModel());
                 ModelAndView cmv = handleInternal(request, response, chm);
                 if (cmv != null) {

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfig.java Fri Aug 31 09:55:22 2012
@@ -66,7 +66,7 @@ public class HmvcHandlerMethodMappingByC
 
     private static final Logger log = LoggerFactory.getLogger(HmvcHandlerMethodMappingByConfig.class);
 
-    private Map<HandlerMethod, HmvcHandlerMethod> hmvcHandlerMethods = new LinkedHashMap<HandlerMethod, HmvcHandlerMethod>();
+    private Map<RequestMappingInfo, HmvcHandlerMethod> hmvcHandlerMethods = new LinkedHashMap<RequestMappingInfo, HmvcHandlerMethod>();
 
     private LazyRepositoryFactory repositoryFactory;
 
@@ -159,7 +159,7 @@ public class HmvcHandlerMethodMappingByC
         return defaultGetRequestMapping;
     }
 
-    protected Map<String,Method> getRenderMethods(Class<?> ccontroller) {
+    protected Method getViewOrDefaultMethod(Class<?> ccontroller, String[] views) {
 
         final Class<?> userType = ClassUtils.getUserClass(ccontroller);
 
@@ -168,26 +168,32 @@ public class HmvcHandlerMethodMappingByC
                 return isHmvcMethod(method) && isDefaultGetRequestMapping(method, userType);
             }
         });
-        Map<String, Method> actionMappedMethods = new HashMap<String, Method>();
+        Map<String, Method> viewMethods = new HashMap<String, Method>();
         Method defaultMethod = null;
         for (Method m : methods) {
             Hmvc hmvc = AnnotationUtils.findAnnotation(m, Hmvc.class);
-            String action = hmvc.action();
-            if ("".equals(action)) {
-                action = "default";
+            String view = hmvc.view();
+            if ("".equals(view)) {
+                view = "default";
             }
-            if (defaultMethod == null || "default".equals(action)) {
+            if (defaultMethod == null || "default".equals(view)) {
                 defaultMethod = m;
             }
-            actionMappedMethods.put(action, m);
+            viewMethods.put(view, m);
         }
         if (defaultMethod != null) {
-            actionMappedMethods.put("default", defaultMethod);
+            viewMethods.put("default", defaultMethod);
         }
-        return actionMappedMethods;
+        if (views != null) {
+            for (String view : views) {
+                if (viewMethods.containsKey(view)) {
+                    return viewMethods.get(view);
+                }
+            }
+        }
+        return viewMethods.get("default");
     }
 
-
     private void processConfiguration(UrlConfiguration configuration) {
 
         for (UrlMapping urlMapping : configuration.getMappings()) {
@@ -197,15 +203,13 @@ public class HmvcHandlerMethodMappingByC
             // TODO: handle exception, class not found etc.
             Class<?> controllerClass = getControllerClass(controller);
             if (controllerClass != null) {
-                Map<String, Method> methods = getRenderMethods(controllerClass);
-                if (!methods.isEmpty()) {
-                    Method method = methods.get("default");
+                Method method = getViewOrDefaultMethod(controllerClass, urlMapping.getViews());
+                if (method != null) {
                     RequestMapping annotation = AnnotationUtils.findAnnotation(method, RequestMapping.class);
                     RequestMappingInfo mappingInfo = createMappingInfo(annotation, urlMapping.getUrl());
                     try {
                         Object handler = getApplicationContext().getBean(controllerClass);
-//                        Object handler = controllerClass.newInstance();
-                        registerPageHandlerMethod(pageDefinition, handler, methods, mappingInfo);
+                        registerPageHandlerMethod(pageDefinition, handler, method, mappingInfo, urlMapping.getViews());
                     } catch (Exception e) {
                         log.error("Error", e);
                     }
@@ -214,29 +218,26 @@ public class HmvcHandlerMethodMappingByC
         }
     }
 
-
-    protected void registerPageHandlerMethod(PageDefinition pageDefinition, Object handler, Map<String, Method> methods, RequestMappingInfo mapping) {
-        Method method = methods.get("default");
+    protected void registerPageHandlerMethod(PageDefinition pageDefinition, Object handler, Method method, RequestMappingInfo mapping, String[] views) {
+        HmvcHandlerMethod hmvcHandlerMethod = getHmvcHandlerMethodForFragment(handler, method, pageDefinition, views);
         registerHandlerMethod(handler, method, mapping);
-        hmvcHandlerMethods.put(getHandlerMethods().get(mapping), getHmvcHandlerMethodForFragment(handler, methods, pageDefinition));
+        hmvcHandlerMethods.put(mapping, hmvcHandlerMethod);
     }
 
 
-    private HmvcHandlerMethod getHmvcHandlerMethodForFragment(Object handler, Map<String, Method> methods, PageFragment fragment) {
+    private HmvcHandlerMethod getHmvcHandlerMethodForFragment(Object handler, Method method, PageFragment fragment, String[] views) {
         HmvcHandlerConfiguration config = new HmvcHandlerConfiguration();
         config.setName(fragment.getName());
         config.setTargetId(fragment.getTargetId());
         config.setViewName(fragment.getViewName());
-        for (String name : methods.keySet()) {
-            config.getMethods().put(name, new HmvcHandlerMethod(handler, methods.get(name), config));
-        }
+        config.setMethod(new HmvcHandlerMethod(handler, method, config));
 
         final List<PageFragment> children = fragment.getChildren();
         for (PageFragment child : children) {
             Class<?> controllerClass = getControllerClass(child.getController());
             if (controllerClass != null) {
-                Map<String, Method> childMethods = getRenderMethods(controllerClass);
-                if (!methods.isEmpty()) {
+                Method childMethod = getViewOrDefaultMethod(controllerClass, views);
+                if (method != null) {
                     Object ccInstance;
                     try {
                         ccInstance = getApplicationContext().getBean(controllerClass);
@@ -244,13 +245,13 @@ public class HmvcHandlerMethodMappingByC
                         throw new IllegalStateException("Cannot instantiate found Child Controller");
                     }
                     log.info("@@@ Registering child component [{}] for parent [{}] ", child.getName(), fragment.getName());
-                    HmvcHandlerConfiguration childConfig = getHmvcHandlerMethodForFragment(ccInstance, childMethods, child).getConfiguration();
+                    HmvcHandlerConfiguration childConfig = getHmvcHandlerMethodForFragment(ccInstance, childMethod, child, views).getConfiguration();
                     childConfig.setParent(config);
                     config.getChildren().put(child.getName(), childConfig);
                 }
             }
         }
-        return config.getMethods().get("default");
+        return config.getMethod();
     }
 
 
@@ -322,6 +323,12 @@ public class HmvcHandlerMethodMappingByC
     }
 
     @Override
+    protected void handleMatch(RequestMappingInfo info, String lookupPath, HttpServletRequest request) {
+        super.handleMatch(info, lookupPath, request);
+        request.setAttribute(HmvcHandlerMethod.REQUEST_MAPPING_INFO, info);
+    }
+
+        @Override
     protected HandlerMethod getHandlerInternal(HttpServletRequest request) throws Exception {
         // force check repository available
         if (repositoryFactory != null) {
@@ -333,6 +340,7 @@ public class HmvcHandlerMethodMappingByC
         }
 
         HandlerMethod handlerMethod = lookupHandlerMethod(lookupPath, request);
+        RequestMappingInfo mapping = (RequestMappingInfo)request.getAttribute(HmvcHandlerMethod.REQUEST_MAPPING_INFO);
 
         if (logger.isDebugEnabled()) {
             if (handlerMethod != null) {
@@ -342,9 +350,9 @@ public class HmvcHandlerMethodMappingByC
             }
         }
 
-        if (handlerMethod != null && hmvcHandlerMethods.containsKey(handlerMethod)) {
+        if (handlerMethod != null && mapping != null && hmvcHandlerMethods.containsKey(mapping)) {
             // if available return hmvc variant instead
-            handlerMethod = hmvcHandlerMethods.get(handlerMethod);
+            handlerMethod = hmvcHandlerMethods.get(mapping);
             request.setAttribute(HmvcHandlerMethod.class.getName(), Boolean.TRUE);
         }
         return (handlerMethod != null) ? handlerMethod.createWithResolvedBean() : null;

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=1379388&r1=1379387&r2=1379388&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 Fri Aug 31 09:55:22 2012
@@ -27,4 +27,9 @@ public class MyContentController {
     public String render() {
         return "hmvc/mycontent";
     }
+
+    @Hmvc(view="bar") @RequestMapping
+    public String render2() {
+        return "hmvc/footer";
+    }
 }

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=1379388&r1=1379387&r2=1379388&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 Fri Aug 31 09:55:22 2012
@@ -77,7 +77,7 @@ public class HmvcHandlerMethodMappingByC
 
         final String requestUri = "/mypage2";
         request.setRequestURI(requestUri);
-        final Object handler = this.getHandler(request);
+        Object handler = this.getHandler(request);
         HmvcHandlerMethod handlerMethod = (HmvcHandlerMethod) handler;
         final ModelAndView mav = handlerAdapter.handle(request, response, handlerMethod);
         final Set<String> childrenNames = handlerMethod.getConfiguration().getChildren().keySet();
@@ -85,7 +85,7 @@ public class HmvcHandlerMethodMappingByC
         assertTrue("Expected body", childrenNames.contains("body"));
         assertTrue("Expected head", childrenNames.contains("head"));
         assertTrue("Expected footer", childrenNames.contains("footer"));
-        final HmvcHandlerMethod child = handlerMethod.getConfiguration().getChildren().get("body").getMethods().get("default");
+        final HmvcHandlerMethod child = handlerMethod.getConfiguration().getChildren().get("body").getMethod();
         final Set<String> bodyKids = child.getConfiguration().getChildren().keySet();
         assertTrue("body should have zero children", bodyKids.size() == 0);
         assertViewName(mav, "hmvc/mypage");
@@ -95,7 +95,9 @@ public class HmvcHandlerMethodMappingByC
         final ModelAndView head = childModels.get("head");
         assertTrue(head != null);
         assertEquals("Expected view override", "hmvc/override/myheader", head.getViewName());
-
+        request.setRequestURI("/mypageFoo");
+        handlerMethod = (HmvcHandlerMethod) getHandler(request);
+        assertTrue("Expected 3 child names", handlerMethod.getConfiguration().getChildren().keySet().size() == 3);
     }
 
 

Modified: rave/sandbox/content-services/rave-web-hmvc/src/test/resources/url-configuration.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/url-configuration.xml?rev=1379388&r1=1379387&r2=1379388&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/test/resources/url-configuration.xml (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/test/resources/url-configuration.xml Fri Aug 31 09:55:22 2012
@@ -25,9 +25,6 @@
 </page-definition>
 -->
 <url-configuration name="default">
-  <url-mapping url="/mypage2" page="myPage">
-    <url-mapping url="myHeader" page="head"/>
-    <url-mapping url="myBody" page="body"/>
-    <url-mapping url="myFooter" page="footer"/>
-  </url-mapping>
+  <url-mapping url="/mypage2" page="myPage"/>
+  <url-mapping url="/mypageFoo" page="myPage" views="bar"/>
 </url-configuration>