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/30 18:14:46 UTC

svn commit: r1378999 - in /rave/sandbox/content-services: rave-jcr-console/ rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/ rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/a...

Author: ate
Date: Thu Aug 30 16:14:45 2012
New Revision: 1378999

URL: http://svn.apache.org/viewvc?rev=1378999&view=rev
Log:
RAVE-694
- cleanup
- dropping (temporary) annotation based hmvc mapping
- adding HandlerConfiguration to encapsulate runtime processing meta-data as well as be injectable in controllers if requested (todo)

Added:
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java   (with props)
Removed:
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/CController.java
    rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HController.java
Modified:
    rave/sandbox/content-services/rave-jcr-console/pom.xml
    rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java
    rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java
    rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java
    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/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/HmvcHandlerMethodMapping.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/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
    rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml

Modified: rave/sandbox/content-services/rave-jcr-console/pom.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-jcr-console/pom.xml?rev=1378999&r1=1378998&r2=1378999&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-console/pom.xml (original)
+++ rave/sandbox/content-services/rave-jcr-console/pom.xml Thu Aug 30 16:14:45 2012
@@ -79,6 +79,10 @@
 
     <!-- adding slf4j and log4j dependencies to be bundled (not provided) -->
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <scope>compile</scope>
@@ -88,6 +92,10 @@
       <artifactId>slf4j-log4j12</artifactId>
       <scope>compile</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
 
   </dependencies>
 

Modified: rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.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/FilePageFragment.java?rev=1378999&r1=1378998&r2=1378999&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java (original)
+++ rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/FilePageFragment.java Thu Aug 30 16:14:45 2012
@@ -43,6 +43,8 @@ public class FilePageFragment implements
     private String description;
     private String viewName;
 
+    private String targetId;
+
     private String controller;
     private List<PageFragment> children;
 
@@ -166,6 +168,15 @@ public class FilePageFragment implements
         this.parent = parent;
     }
 
+    @XmlAttribute
+    public String getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(final String targetId) {
+        this.targetId = targetId;
+    }
+
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();

Modified: rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.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/JcrPageFragment.java?rev=1378999&r1=1378998&r2=1378999&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java (original)
+++ rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/JcrPageFragment.java Thu Aug 30 16:14:45 2012
@@ -58,7 +58,8 @@ public class JcrPageFragment implements 
     private String controller;
     @Field(jcrType = "String")
     private String viewName;
-
+    @Field(jcrType = "String")
+    private String targetId;
 
     @Field(jcrType = "String", id=true)
     private String name;
@@ -182,4 +183,12 @@ public class JcrPageFragment implements 
         sb.append('}');
         return sb.toString();
     }
+
+    public String getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(final String targetId) {
+        this.targetId = targetId;
+    }
 }

Modified: rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.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/PageFragment.java?rev=1378999&r1=1378998&r2=1378999&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java (original)
+++ rave/sandbox/content-services/rave-jcr-integration/page-configuration/src/main/java/org/apache/rave/jcr/config/model/api/PageFragment.java Thu Aug 30 16:14:45 2012
@@ -102,4 +102,6 @@ public interface PageFragment {
 
     void addChild(PageFragment child);
 
+    void setTargetId(String targetId);
+    String getTargetId();
 }

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -49,4 +49,10 @@ public interface UrlMapping {
     PageDefinition getPageDefinition();
 
     void setPageDefinition(PageDefinition pageDefinition);
+
+    void setTarget(String target);
+    String getTarget();
+
+    void setAction(String action);
+    String getAction();
 }

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -38,6 +38,8 @@ public class FileUrlMapping implements U
     private static Logger log = LoggerFactory.getLogger(FileUrlMapping.class);
 
 
+    private String action;
+    private String target;
     private String url;
     private String page;
     private UrlMapping parent;
@@ -123,4 +125,20 @@ 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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -44,6 +44,11 @@ public class JcrUrlMapping implements Ur
     private String page;
 
 
+    @Field(jcrType = "String")
+    private String action;
+
+    @Field(jcrType = "String")
+    private String target;
     // set by code
     private UrlMapping parent;
 
@@ -116,4 +121,20 @@ public class JcrUrlMapping implements Ur
         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-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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -26,4 +26,5 @@ import java.lang.annotation.Target;
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface Hmvc {
+    String action() default "default";
 }

Added: 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=1378999&view=auto
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java (added)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java Thu Aug 30 16:14:45 2012
@@ -0,0 +1,82 @@
+/*
+ * 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.rave.portal.web.hmvc;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.springframework.web.method.HandlerMethod;
+
+public class HmvcHandlerConfiguration {
+    private String name;
+    private String targetId;
+    private HmvcHandlerConfiguration parent;
+    private Map<String, HmvcHandlerMethod> methods = new HashMap<String, HmvcHandlerMethod>();
+    private Map<String, String> parameters = new HashMap<String, String>();
+    private Map<String, HmvcHandlerConfiguration> children = new LinkedHashMap<String, HmvcHandlerConfiguration>();
+
+    private String viewName;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    public String getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(final String targetId) {
+        this.targetId = targetId;
+    }
+
+    public HmvcHandlerConfiguration getParent() {
+        return parent;
+    }
+
+    public void setParent(final HmvcHandlerConfiguration parent) {
+        this.parent = parent;
+    }
+
+    public Map<String, HmvcHandlerMethod> getMethods() {
+        return methods;
+    }
+
+    public Map<String, HmvcHandlerConfiguration> getChildren() {
+        return children;
+    }
+
+    public Class<?> getHandlerClass() {
+        return methods.get("default").getBeanType();
+    }
+
+    public String getViewName() {
+        return viewName;
+    }
+
+    public void setViewName(final String viewName) {
+        this.viewName = viewName;
+    }
+
+    public Map<String, String> getParameters() {
+        return parameters;
+    }
+}

Propchange: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerConfiguration.java
------------------------------------------------------------------------------
    svn:keywords = Id

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -28,41 +28,29 @@ public class HmvcHandlerMethod extends H
     public static final String VIEW_RESPONSE_STATE = HmvcHandlerMethod.class.getName() + ".ViewResponseState";
     public static final String MODEL_AND_VIEW = HmvcHandlerMethod.class.getName() + ".ModelAndView";
 
-    protected Map<String, HmvcHandlerMethod> children;
+    private HmvcHandlerConfiguration configuration;
     private BeanFactory beanFactory;
-    private String viewName;
 
-    public HmvcHandlerMethod(Object bean, Method method, Map<String, HmvcHandlerMethod> children) {
+    public HmvcHandlerMethod(Object bean, Method method, HmvcHandlerConfiguration configuration) {
         super(bean, method);
-        this.children = children;
+        this.configuration = configuration;
     }
 
-    protected HmvcHandlerMethod(String beanName, BeanFactory beanFactory, Method method, Map<String, HmvcHandlerMethod> children) {
+    protected HmvcHandlerMethod(String beanName, BeanFactory beanFactory, Method method, HmvcHandlerConfiguration configuration) {
         super(beanName, beanFactory, method);
-        this.children = children;
+        this.beanFactory = beanFactory;
+        this.configuration = configuration;
     }
 
     @Override
     public HmvcHandlerMethod createWithResolvedBean() {
         if (getBean() instanceof String) {
-            return new HmvcHandlerMethod(beanFactory.getBean((String) getBean()), getMethod(), children);
+            return new HmvcHandlerMethod(beanFactory.getBean((String) getBean()), getMethod(), configuration);
         }
         return this;
     }
 
-    public HmvcHandlerMethod getChild(String name) {
-        return children.get(name);
-    }
-
-    public Set<String> getChildrenNames() {
-        return children.keySet();
-    }
-
-    public String getViewName() {
-        return viewName;
-    }
-
-    public void setViewName(String viewName) {
-        this.viewName = viewName;
+    public HmvcHandlerConfiguration getConfiguration() {
+        return configuration;
     }
 }

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -39,13 +39,13 @@ public class HmvcHandlerMethodHandlerAda
             HmvcHandlerMethod hm = (HmvcHandlerMethod) handlerMethod;
 
             Map<String, ModelAndView> cmvMap = new LinkedHashMap<String, ModelAndView>();
-            for (String name : hm.getChildrenNames()) {
-                HmvcHandlerMethod chm = hm.getChild(name);
+            for (String name : hm.getConfiguration().getChildren().keySet()) {
+                HmvcHandlerMethod chm = hm.getConfiguration().getChildren().get(name).getMethods().get("default");
                 request.setAttribute(DispatcherServlet.INPUT_FLASH_MAP_ATTRIBUTE, mv.getModel());
                 ModelAndView cmv = handleInternal(request, response, chm);
                 if (cmv != null) {
                     // override view name (if set):
-                    final String viewName = chm.getViewName();
+                    final String viewName = chm.getConfiguration().getViewName();
                     if (StringUtils.isNotBlank(viewName)) {
                         cmv.setViewName(viewName);
                     }

Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java?rev=1378999&r1=1378998&r2=1378999&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMapping.java Thu Aug 30 16:14:45 2012
@@ -16,158 +16,20 @@
  */
 package org.apache.rave.portal.web.hmvc;
 
-import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
 
 import org.springframework.core.annotation.AnnotationUtils;
-import org.springframework.util.ClassUtils;
-import org.springframework.util.ObjectUtils;
-import org.springframework.util.ReflectionUtils.MethodFilter;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.method.HandlerMethodSelector;
 import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
 
 public class HmvcHandlerMethodMapping extends RequestMappingHandlerMapping {
 
-    private Map<HandlerMethod, HmvcHandlerMethod> hmvcHandlerMethods = new LinkedHashMap<HandlerMethod, HmvcHandlerMethod>();
-
-    protected Set<Method> getAnnotatedMethods(Class<?> beanType, final Class<? extends Annotation> annotationType) {
-        return HandlerMethodSelector.selectMethods(beanType, new MethodFilter() {
-            public boolean matches(Method method) {
-                return (AnnotationUtils.findAnnotation(method, annotationType)) != null;
-            }
-        });
-    }
-
     protected boolean isHmvcMethod(Method method) {
         return AnnotationUtils.findAnnotation(method, Hmvc.class) != null;
     }
 
-    protected Class<?> getBeanType(Object handler) {
-        Class<?> beanType = (handler instanceof String) ?
-                getApplicationContext().getType((String) handler) : handler.getClass();
-
-        return ClassUtils.getUserClass(beanType);
-    }
-
-    protected boolean isDefaultGetRequestMapping(Method method, Class<?> userType) {
-        RequestMappingInfo mapping = getMappingForMethod(method, userType);
-        boolean defaultGetRequestMapping = mapping != null;
-        if (defaultGetRequestMapping && !mapping.getPatternsCondition().getPatterns().isEmpty()) {
-            defaultGetRequestMapping = false;
-            for (String pattern : mapping.getPatternsCondition().getPatterns()) {
-                if ("".equals(pattern) || "/".equals("pattern")) {
-                    defaultGetRequestMapping = true;
-                    break;
-                }
-            }
-        }
-        if (defaultGetRequestMapping && !mapping.getMethodsCondition().getMethods().isEmpty()) {
-            defaultGetRequestMapping = mapping.getMethodsCondition().getMethods().contains(RequestMethod.GET);
-        }
-        // TODO: ensure no other conditions enabled
-        return defaultGetRequestMapping;
-    }
-
-    protected Method getRenderMethod(Class<?> ccontroller) {
-
-        final Class<?> userType = ClassUtils.getUserClass(ccontroller);
-
-        Set<Method> methods = HandlerMethodSelector.selectMethods(userType, new MethodFilter() {
-            public boolean matches(Method method) {
-                return isHmvcMethod(method) && isDefaultGetRequestMapping(method, userType);
-            }
-        });
-        return methods.isEmpty() ? null : methods.iterator().next();
-    }
-
     @Override
-    protected void registerHandlerMethod(Object handler, Method method, RequestMappingInfo mapping) {
-        if (!isHmvcMethod(method)) {
-            registerHandler(handler, method, mapping);
-            HmvcHandlerMethod handlerMethod = getHmvcHandlerMethod(handler, method, true);
-            if (handlerMethod != null) {
-                hmvcHandlerMethods.put(super.getHandlerMethods().get(mapping), handlerMethod);
-            }
-        }
-    }
-
-    protected void registerHandler(Object handler, Method method, RequestMappingInfo mapping) {
-        super.registerHandlerMethod(handler, method, mapping);
-    }
-
-    protected HmvcHandlerMethod getHmvcHandlerMethod(Object handler, Method method, boolean root) {
-        Map<String, HmvcHandlerMethod> ccontrollerMethods = new HashMap<String, HmvcHandlerMethod>();
-        HController hcontroller = AnnotationUtils.findAnnotation(method, HController.class);
-        if (hcontroller != null && !ObjectUtils.isEmpty(hcontroller.controllers())) {
-            for (CController cc : hcontroller.controllers()) {
-                Method renderMethod = getRenderMethod(cc.type());
-                if (renderMethod != null) {
-                    // should do this better, caching etc.
-                    Object ccInstance;
-                    try {
-                        ccInstance = cc.type().newInstance();
-                    } catch (Exception e) {
-                        throw new IllegalStateException("Cannot instantiate found CController");
-                    }
-                    ccontrollerMethods.put(cc.name(), getHmvcHandlerMethod(ccInstance, renderMethod, false));
-                }
-            }
-        }
-        if (!ccontrollerMethods.isEmpty() || !root) {
-            Object handlerBean;
-            if (handler instanceof String) {
-                Class<?> handlerType = getBeanType(handler);
-                try {
-                    handlerBean = handlerType.newInstance();
-                } catch (Exception e) {
-                    throw new IllegalStateException("Cannot instantiate Controller " + handlerType.getName());
-                }
-            } else {
-                handlerBean = handler;
-            }
-            return new HmvcHandlerMethod(handlerBean, method, ccontrollerMethods);
-        }
-        return null;
-    }
-
-    /**
-     * Look up a handler method for the given request.
-     */
-    @Override
-    protected HandlerMethod getHandlerInternal(HttpServletRequest request) throws Exception {
-        String lookupPath = getUrlPathHelper().getLookupPathForRequest(request);
-        if (logger.isDebugEnabled()) {
-            logger.debug("Looking up handler method for path " + lookupPath);
-        }
-
-        HandlerMethod handlerMethod = lookupHandlerMethod(lookupPath, request);
-
-        if (logger.isDebugEnabled()) {
-            if (handlerMethod != null) {
-                logger.debug("Returning handler method [" + handlerMethod + ']');
-            } else {
-                logger.debug("Did not find handler method for [" + lookupPath + ']');
-            }
-        }
-
-        if (handlerMethod != null && hmvcHandlerMethods.containsKey(handlerMethod)) {
-            // if available return hmvc variant instead
-            handlerMethod = hmvcHandlerMethods.get(handlerMethod);
-            request.setAttribute(HmvcHandlerMethod.class.getName(), Boolean.TRUE);
-        }
-        return (handlerMethod != null) ? handlerMethod.createWithResolvedBean() : null;
-    }
-
-    public Map<HandlerMethod, HmvcHandlerMethod> getHmvcHandlerMethods() {
-        return hmvcHandlerMethods;
+    protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
+        return isHmvcMethod(method) ? null : super.getMappingForMethod(method, handlerType);
     }
 }

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -21,8 +21,10 @@ package org.apache.rave.portal.web.hmvc;
 
 import java.lang.reflect.Method;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.jcr.Credentials;
 import javax.jcr.Repository;
@@ -43,8 +45,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.annotation.AnnotationUtils;
 import org.springframework.util.ClassUtils;
+import org.springframework.util.ReflectionUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.method.HandlerMethodSelector;
 import org.springframework.web.servlet.mvc.condition.ConsumesRequestCondition;
 import org.springframework.web.servlet.mvc.condition.HeadersRequestCondition;
 import org.springframework.web.servlet.mvc.condition.ParamsRequestCondition;
@@ -52,14 +57,17 @@ import org.springframework.web.servlet.m
 import org.springframework.web.servlet.mvc.condition.ProducesRequestCondition;
 import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;
 import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
+import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
 
 /**
  * @version "$Id$"
  */
-public class HmvcHandlerMethodMappingByConfig extends HmvcHandlerMethodMapping implements LazyRepositoryFactoryListener {
+public class HmvcHandlerMethodMappingByConfig extends RequestMappingHandlerMapping implements LazyRepositoryFactoryListener {
 
     private static final Logger log = LoggerFactory.getLogger(HmvcHandlerMethodMappingByConfig.class);
 
+    private Map<HandlerMethod, HmvcHandlerMethod> hmvcHandlerMethods = new LinkedHashMap<HandlerMethod, HmvcHandlerMethod>();
+
     private LazyRepositoryFactory repositoryFactory;
 
     private ConfigManager configManager;
@@ -128,6 +136,58 @@ public class HmvcHandlerMethodMappingByC
         repositoryFactory.removeListener(this);
     }
 
+    protected boolean isHmvcMethod(Method method) {
+        return AnnotationUtils.findAnnotation(method, Hmvc.class) != null;
+    }
+
+    protected boolean isDefaultGetRequestMapping(Method method, Class<?> userType) {
+        RequestMappingInfo mapping = getMappingForMethod(method, userType);
+        boolean defaultGetRequestMapping = mapping != null;
+        if (defaultGetRequestMapping && !mapping.getPatternsCondition().getPatterns().isEmpty()) {
+            defaultGetRequestMapping = false;
+            for (String pattern : mapping.getPatternsCondition().getPatterns()) {
+                if ("".equals(pattern) || "/".equals(pattern)) {
+                    defaultGetRequestMapping = true;
+                    break;
+                }
+            }
+        }
+        if (defaultGetRequestMapping && !mapping.getMethodsCondition().getMethods().isEmpty()) {
+            defaultGetRequestMapping = mapping.getMethodsCondition().getMethods().contains(RequestMethod.GET);
+        }
+        // TODO: ensure no other conditions enabled
+        return defaultGetRequestMapping;
+    }
+
+    protected Map<String,Method> getRenderMethods(Class<?> ccontroller) {
+
+        final Class<?> userType = ClassUtils.getUserClass(ccontroller);
+
+        Set<Method> methods = HandlerMethodSelector.selectMethods(userType, new ReflectionUtils.MethodFilter() {
+            public boolean matches(Method method) {
+                return isHmvcMethod(method) && isDefaultGetRequestMapping(method, userType);
+            }
+        });
+        Map<String, Method> actionMappedMethods = 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";
+            }
+            if (defaultMethod == null || "default".equals(action)) {
+                defaultMethod = m;
+            }
+            actionMappedMethods.put(action, m);
+        }
+        if (defaultMethod != null) {
+            actionMappedMethods.put("default", defaultMethod);
+        }
+        return actionMappedMethods;
+    }
+
+
     private void processConfiguration(UrlConfiguration configuration) {
 
         for (UrlMapping urlMapping : configuration.getMappings()) {
@@ -137,14 +197,15 @@ public class HmvcHandlerMethodMappingByC
             // TODO: handle exception, class not found etc.
             Class<?> controllerClass = getControllerClass(controller);
             if (controllerClass != null) {
-                Method method = getRenderMethod(controllerClass);
-                if (method != null) {
+                Map<String, Method> methods = getRenderMethods(controllerClass);
+                if (!methods.isEmpty()) {
+                    Method method = methods.get("default");
                     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, method, mappingInfo);
+                        registerPageHandlerMethod(pageDefinition, handler, methods, mappingInfo);
                     } catch (Exception e) {
                         log.error("Error", e);
                     }
@@ -154,35 +215,42 @@ public class HmvcHandlerMethodMappingByC
     }
 
 
-    protected void registerPageHandlerMethod(PageDefinition pageDefinition, Object handler, Method method, RequestMappingInfo mapping) {
-        registerHandler(handler, method, mapping);
-        HandlerMethod handlerMethod = getHandlerMethods().get(mapping);
-        getHmvcHandlerMethods().put(handlerMethod, getHmvcHandlerMethodForFragment(handler, method, pageDefinition));
+    protected void registerPageHandlerMethod(PageDefinition pageDefinition, Object handler, Map<String, Method> methods, RequestMappingInfo mapping) {
+        Method method = methods.get("default");
+        registerHandlerMethod(handler, method, mapping);
+        hmvcHandlerMethods.put(getHandlerMethods().get(mapping), getHmvcHandlerMethodForFragment(handler, methods, pageDefinition));
     }
 
 
-    private HmvcHandlerMethod getHmvcHandlerMethodForFragment(Object handler, Method method, PageFragment fragment) {
-        Map<String, HmvcHandlerMethod> controllerMethods = new HashMap<String, HmvcHandlerMethod>();
+    private HmvcHandlerMethod getHmvcHandlerMethodForFragment(Object handler, Map<String, Method> methods, PageFragment fragment) {
+        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));
+        }
+
         final List<PageFragment> children = fragment.getChildren();
         for (PageFragment child : children) {
             Class<?> controllerClass = getControllerClass(child.getController());
             if (controllerClass != null) {
-                Method renderMethod = getRenderMethod(controllerClass);
-                if (renderMethod != null) {
+                Map<String, Method> childMethods = getRenderMethods(controllerClass);
+                if (!methods.isEmpty()) {
                     Object ccInstance;
                     try {
-                        ccInstance = controllerClass.newInstance();
+                        ccInstance = getApplicationContext().getBean(controllerClass);
                     } catch (Exception e) {
-                        throw new IllegalStateException("Cannot instantiate found CController");
+                        throw new IllegalStateException("Cannot instantiate found Child Controller");
                     }
                     log.info("@@@ Registering child component [{}] for parent [{}] ", child.getName(), fragment.getName());
-                    controllerMethods.put(child.getName(), getHmvcHandlerMethodForFragment(ccInstance, renderMethod, child));
+                    HmvcHandlerConfiguration childConfig = getHmvcHandlerMethodForFragment(ccInstance, childMethods, child).getConfiguration();
+                    childConfig.setParent(config);
+                    config.getChildren().put(child.getName(), childConfig);
                 }
             }
         }
-        final HmvcHandlerMethod handlerMethod = new HmvcHandlerMethod(handler, method, controllerMethods);
-        handlerMethod.setViewName(fragment.getViewName());
-        return handlerMethod;
+        return config.getMethods().get("default");
     }
 
 
@@ -259,6 +327,26 @@ public class HmvcHandlerMethodMappingByC
         if (repositoryFactory != null) {
             repositoryFactory.getRepository();
         }
-        return super.getHandlerInternal(request);
+        String lookupPath = getUrlPathHelper().getLookupPathForRequest(request);
+        if (logger.isDebugEnabled()) {
+            logger.debug("Looking up handler method for path " + lookupPath);
+        }
+
+        HandlerMethod handlerMethod = lookupHandlerMethod(lookupPath, request);
+
+        if (logger.isDebugEnabled()) {
+            if (handlerMethod != null) {
+                logger.debug("Returning handler method [" + handlerMethod + ']');
+            } else {
+                logger.debug("Did not find handler method for [" + lookupPath + ']');
+            }
+        }
+
+        if (handlerMethod != null && hmvcHandlerMethods.containsKey(handlerMethod)) {
+            // if available return hmvc variant instead
+            handlerMethod = hmvcHandlerMethods.get(handlerMethod);
+            request.setAttribute(HmvcHandlerMethod.class.getName(), Boolean.TRUE);
+        }
+        return (handlerMethod != null) ? handlerMethod.createWithResolvedBean() : null;
     }
 }
\ No newline at end of file

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -16,18 +16,14 @@
  */
 package org.apache.rave.portal.web.hmvc.example;
 
-import org.apache.rave.portal.web.hmvc.CController;
-import org.apache.rave.portal.web.hmvc.HController;
 import org.apache.rave.portal.web.hmvc.Hmvc;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+@Controller
 public class MyBodyController {
 
     @Hmvc @RequestMapping
-    @HController(controllers = {
-            @CController(name = "menu", type = MyMenuController.class),
-            @CController(name = "content", type = MyContentController.class)
-    })
     public String render() {
         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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -17,8 +17,10 @@
 package org.apache.rave.portal.web.hmvc.example;
 
 import org.apache.rave.portal.web.hmvc.Hmvc;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+@Controller
 public class MyContentController {
 
     @Hmvc @RequestMapping

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -17,8 +17,10 @@
 package org.apache.rave.portal.web.hmvc.example;
 
 import org.apache.rave.portal.web.hmvc.Hmvc;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+@Controller
 public class MyFooterController {
 
     @Hmvc @RequestMapping

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -17,8 +17,10 @@
 package org.apache.rave.portal.web.hmvc.example;
 
 import org.apache.rave.portal.web.hmvc.Hmvc;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+@Controller
 public class MyHeaderController {
 
     @Hmvc @RequestMapping

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -17,8 +17,10 @@
 package org.apache.rave.portal.web.hmvc.example;
 
 import org.apache.rave.portal.web.hmvc.Hmvc;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+@Controller
 public class MyMenuController {
 
     @Hmvc @RequestMapping

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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -16,8 +16,6 @@
  */
 package org.apache.rave.portal.web.hmvc.example;
 
-import org.apache.rave.portal.web.hmvc.CController;
-import org.apache.rave.portal.web.hmvc.HController;
 import org.apache.rave.portal.web.hmvc.Hmvc;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -26,21 +24,11 @@ import org.springframework.web.bind.anno
 public class MyPageController {
 
     @RequestMapping("/mypage")
-    @HController(controllers = {
-            @CController(name = "head", type = MyHeaderController.class),
-            @CController(name = "body", type = MyBodyController.class),
-            @CController(name = "footer", type = MyFooterController.class)
-    })
     public String renderPage() {
         return "hmvc/mypage";
     }
 
     @RequestMapping("/mypage1")
-    @HController(controllers = {
-            @CController(name = "head", type = MyHeaderController.class),
-            @CController(name = "body", type = MyContentController.class),
-            @CController(name = "footer", type = MyFooterController.class)
-    })
     public String renderPage1() {
         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=1378999&r1=1378998&r2=1378999&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 Thu Aug 30 16:14:45 2012
@@ -80,13 +80,13 @@ public class HmvcHandlerMethodMappingByC
         final Object handler = this.getHandler(request);
         HmvcHandlerMethod handlerMethod = (HmvcHandlerMethod) handler;
         final ModelAndView mav = handlerAdapter.handle(request, response, handlerMethod);
-        final Set<String> childrenNames = handlerMethod.getChildrenNames();
+        final Set<String> childrenNames = handlerMethod.getConfiguration().getChildren().keySet();
         assertTrue("Expected 3 child names", childrenNames.size() == 3);
         assertTrue("Expected body", childrenNames.contains("body"));
         assertTrue("Expected head", childrenNames.contains("head"));
         assertTrue("Expected footer", childrenNames.contains("footer"));
-        final HmvcHandlerMethod child = handlerMethod.getChild("body");
-        final Set<String> bodyKids = child.getChildrenNames();
+        final HmvcHandlerMethod child = handlerMethod.getConfiguration().getChildren().get("body").getMethods().get("default");
+        final Set<String> bodyKids = child.getConfiguration().getChildren().keySet();
         assertTrue("body should have zero children", bodyKids.size() == 0);
         assertViewName(mav, "hmvc/mypage");
         @SuppressWarnings("unchecked")
@@ -102,11 +102,9 @@ public class HmvcHandlerMethodMappingByC
     private Object getHandler(HttpServletRequest request) throws Exception {
         Map<String, HandlerMapping> map = applicationContext.getBeansOfType(HandlerMapping.class);
         for (HandlerMapping mapping : map.values()) {
-            if (mapping instanceof HmvcHandlerMethodMapping) {
-                HandlerExecutionChain chain = mapping.getHandler(request);
-                if (chain != null) {
-                    return chain.getHandler();
-                }
+            HandlerExecutionChain chain = mapping.getHandler(request);
+            if (chain != null) {
+                return chain.getHandler();
             }
         }
         return null;

Modified: rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml?rev=1378999&r1=1378998&r2=1378999&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/test/resources/test-config.xml Thu Aug 30 16:14:45 2012
@@ -26,9 +26,6 @@
 
   <context:component-scan base-package="org.apache.rave.portal.web.hmvc"/>
 
-  <!-- Configures the @Controller programming model -->
-  <mvc:annotation-driven/>
-
   <!-- Resolves view names to protected .jsp resources within the /WEB-INF/jsp/hmvc directory -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/jsp/hmvc/"/>