Author: ate
Date: Wed Oct 10 12:47:40 2012
New Revision: 1396571

URL: http://svn.apache.org/viewvc?rev=1396571&view=rev
Log:
RAVE-696: rave-web-jcr and demo-portal
- update and alignment to latest changes in rave-web-hmvc (RAVE-694)

Added:
    
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routed-dispatcher-servlet.xml
      - copied, changed from r1390464, 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/nested-dispatcher-servlet.xml
Removed:
    
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/nested-dispatcher-servlet.xml
Modified:
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageContentController.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageLayoutController.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageTabsController.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserProfileFormController.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/AuthenticatedUserInterceptor.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/MobileDeviceInterceptor.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/TopMenuInterceptor.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserPageInterceptor.java
    
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserProfileInterceptor.java
    
rave/sandbox/content-services/demo-portal/src/main/resources/page-config.json
    
rave/sandbox/content-services/demo-portal/src/main/resources/template-data.json
    
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/footer.ftl
    
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/taglibs.ftl
    
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/pages/userprofile/page-form.jsp
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routes.xml
    rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageContentController.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageContentController.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageContentController.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageContentController.java
 Wed Oct 10 12:47:40 2012
@@ -17,24 +17,22 @@
 package org.apache.rave.portal.web.mvc.controller;
 
 import org.apache.rave.portal.web.mvc.Named;
-import org.apache.rave.portal.web.mvc.NestedHandlerContext;
+import org.apache.rave.portal.web.mvc.PageFragmentContext;
 import org.apache.rave.portal.web.mvc.Routed;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 @Routed
-@Controller
 public class UserPageContentController {
 
     @Named
     @RequestMapping
-    public String render(NestedHandlerContext hc, 
@ModelAttribute("mobileDevice") boolean mobileDevice) {
+    public String render(PageFragmentContext context, 
@ModelAttribute("mobileDevice") boolean mobileDevice) {
         if (mobileDevice) {
-            return hc.getConfig().getViewName() + "-mobile";
+            return context.getFragmentViewName() + "-mobile";
         }
         else {
-            return hc.getConfig().getViewName();
+            return context.getFragmentViewName();
         }
     }
 }

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageLayoutController.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageLayoutController.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageLayoutController.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageLayoutController.java
 Wed Oct 10 12:47:40 2012
@@ -18,14 +18,11 @@ package org.apache.rave.portal.web.mvc.c
 
 import org.apache.rave.portal.model.Page;
 import org.apache.rave.portal.web.mvc.Named;
-import org.apache.rave.portal.web.mvc.NestedHandlerContext;
 import org.apache.rave.portal.web.mvc.Routed;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 @Routed
-@Controller
 public class UserPageLayoutController {
 
     @Named

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageTabsController.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageTabsController.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageTabsController.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserPageTabsController.java
 Wed Oct 10 12:47:40 2012
@@ -26,17 +26,15 @@ import org.apache.rave.portal.model.User
 import org.apache.rave.portal.service.PageLayoutService;
 import org.apache.rave.portal.service.PageService;
 import org.apache.rave.portal.web.mvc.Named;
-import org.apache.rave.portal.web.mvc.NestedHandlerContext;
+import org.apache.rave.portal.web.mvc.PageFragmentContext;
 import org.apache.rave.portal.web.mvc.Routed;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 @Routed
-@Controller
 public class UserPageTabsController {
 
     private PageService pageService;
@@ -50,14 +48,14 @@ public class UserPageTabsController {
 
     @Named
     @RequestMapping
-    public String render(NestedHandlerContext hc, 
@ModelAttribute("mobileDevice") boolean mobileDevice, @ModelAttribute User 
user, Model model) {
+    public String render(PageFragmentContext context, 
@ModelAttribute("mobileDevice") boolean mobileDevice, @ModelAttribute User 
user, Model model) {
         model.addAttribute(ModelKeys.PAGES, 
getAllPagesForAuthenticatedUser(user));
         model.addAttribute(ModelKeys.PAGE_LAYOUTS, 
pageLayoutService.getAllUserSelectable());
         if (mobileDevice) {
-            return hc.getConfig().getViewName() + "-mobile";
+            return context.getFragmentViewName() + "-mobile";
         }
         else {
-            return hc.getConfig().getViewName();
+            return context.getFragmentViewName();
         }
     }
 

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserProfileFormController.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserProfileFormController.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserProfileFormController.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/controller/UserProfileFormController.java
 Wed Oct 10 12:47:40 2012
@@ -23,22 +23,20 @@ import org.apache.rave.portal.model.User
 import org.apache.rave.portal.service.UserService;
 import org.apache.rave.portal.web.model.UserForm;
 import org.apache.rave.portal.web.mvc.Named;
-import org.apache.rave.portal.web.mvc.NestedHandlerContext;
+import org.apache.rave.portal.web.mvc.PageFragmentContext;
 import org.apache.rave.portal.web.mvc.Routed;
-import org.apache.rave.portal.web.util.ModelKeys;
-import org.apache.rave.portal.web.util.ViewNames;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.View;
+import org.springframework.web.servlet.view.RedirectView;
 
 @Routed
-@Controller
 public class UserProfileFormController {
 
        private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -52,9 +50,8 @@ public class UserProfileFormController {
 
     @Named
     @RequestMapping
-    public String render(NestedHandlerContext hc, ModelMap model) {
-        model.addAttribute("context", hc);
-        return hc.getConfig().getViewName();
+    public String render(PageFragmentContext context, ModelMap model) {
+        return context.getFragmentViewName();
     }
 
        /**
@@ -66,7 +63,7 @@ public class UserProfileFormController {
         * @return the view name of the user profile page
         */
     @RequestMapping(method = RequestMethod.POST, value="/update")
-    public String updateProfile(ModelMap model,
+    public View updateProfile(PageFragmentContext context, ModelMap model,
                                 @RequestParam(required = false) Long 
referringPageId,
                                 @ModelAttribute("updatedUser") UserForm 
updatedUser) {
 
@@ -84,10 +81,17 @@ public class UserProfileFormController {
         //update the user profile
         userService.updateUserProfile(user);
 
-        //set about tag page as default page for the changes to be visible
-        model.addAttribute(ModelKeys.USER_PROFILE, user);
-        model.addAttribute(ModelKeys.REFERRING_PAGE_ID, referringPageId);
+        RedirectView view = new RedirectView();
+        view.setExposeModelAttributes(false);
+        view.setContextRelative(true);
+
+        if (referringPageId != null) {
+            
view.setUrl(context.getRoutePath()+"?referringPageId="+referringPageId.toString());
+        }
+        else {
+            view.setUrl(context.getRoutePath());
+        }
 
-        return ViewNames.REDIRECT + "app/person/" + user.getUsername();
+        return view;
     }
 }

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/AuthenticatedUserInterceptor.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/AuthenticatedUserInterceptor.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/AuthenticatedUserInterceptor.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/AuthenticatedUserInterceptor.java
 Wed Oct 10 12:47:40 2012
@@ -20,16 +20,16 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.rave.portal.service.UserService;
-import org.apache.rave.portal.web.mvc.HandlerContext;
-import org.apache.rave.portal.web.mvc.RoutedHandlerInterceptorAdapter;
-import org.apache.rave.portal.web.mvc.RoutedHandlerMethod;
+import org.apache.rave.portal.web.mvc.HandlerMethodContext;
+import org.apache.rave.portal.web.mvc.RoutedHandlerMethodInterceptorAdapter;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ExtendedModelMap;
+import org.springframework.web.method.HandlerMethod;
 
-public class AuthenticatedUserInterceptor extends 
RoutedHandlerInterceptorAdapter {
+public class AuthenticatedUserInterceptor extends 
RoutedHandlerMethodInterceptorAdapter {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -41,7 +41,7 @@ public class AuthenticatedUserIntercepto
     }
 
     @Override
-    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, RoutedHandlerMethod handler, HandlerContext 
context, ExtendedModelMap modelMap) throws Exception {
+    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, HandlerMethod handler, HandlerMethodContext 
context, ExtendedModelMap modelMap) throws Exception {
         modelMap.put(ModelKeys.USER, userService.getAuthenticatedUser());
         return true;
     }

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/MobileDeviceInterceptor.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/MobileDeviceInterceptor.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/MobileDeviceInterceptor.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/MobileDeviceInterceptor.java
 Wed Oct 10 12:47:40 2012
@@ -19,17 +19,20 @@ package org.apache.rave.portal.web.mvc.i
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.rave.portal.web.mvc.HandlerContext;
-import org.apache.rave.portal.web.mvc.RoutedHandlerInterceptorAdapter;
-import org.apache.rave.portal.web.mvc.RoutedHandlerMethod;
+import org.apache.rave.portal.web.mvc.HandlerMethodContext;
+import org.apache.rave.portal.web.mvc.RoutedHandlerMethodInterceptorAdapter;
 import org.springframework.mobile.device.DeviceUtils;
 import org.springframework.ui.ExtendedModelMap;
+import org.springframework.web.method.HandlerMethod;
 
-public class MobileDeviceInterceptor extends RoutedHandlerInterceptorAdapter {
+public class MobileDeviceInterceptor extends 
RoutedHandlerMethodInterceptorAdapter {
 
     @Override
-    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, RoutedHandlerMethod handler, HandlerContext 
context, ExtendedModelMap modelMap) throws Exception {
-        modelMap.addAttribute("mobileDevice", 
Boolean.valueOf(DeviceUtils.getCurrentDevice(request).isMobile()));
+    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, HandlerMethod handler, HandlerMethodContext 
context, ExtendedModelMap modelMap) throws Exception {
+        // only need mobileDevice detection when doing page rendering
+        if (context.isPageFragmentRenderRequest()) {
+            modelMap.addAttribute("mobileDevice", 
Boolean.valueOf(DeviceUtils.getCurrentDevice(request).isMobile()));
+        }
         return true;
     }
 }

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/TopMenuInterceptor.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/TopMenuInterceptor.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/TopMenuInterceptor.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/TopMenuInterceptor.java
 Wed Oct 10 12:47:40 2012
@@ -16,7 +16,9 @@
  */
 package org.apache.rave.portal.web.mvc.interceptors;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -28,14 +30,14 @@ import org.apache.rave.portal.model.User
 import org.apache.rave.portal.service.UserService;
 import org.apache.rave.portal.web.model.NavigationItem;
 import org.apache.rave.portal.web.model.NavigationMenu;
-import org.apache.rave.portal.web.mvc.NestedHandlerContext;
-import org.apache.rave.portal.web.mvc.NestedHandlerInterceptorAdapter;
-import org.apache.rave.portal.web.mvc.NestedHandlerMethod;
+import org.apache.rave.portal.web.mvc.PageFragmentContext;
+import org.apache.rave.portal.web.mvc.RoutedPageInterceptorAdapter;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ExtendedModelMap;
+import org.springframework.web.method.HandlerMethod;
 
-public class TopMenuInterceptor extends NestedHandlerInterceptorAdapter {
+public class TopMenuInterceptor extends RoutedPageInterceptorAdapter {
 
     private UserService userService;
 
@@ -45,9 +47,7 @@ public class TopMenuInterceptor extends 
     }
 
     @Override
-    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, NestedHandlerMethod handler, NestedHandlerContext 
context, final ExtendedModelMap modelMap) throws Exception {
-
-        String mountPath = context.getMountPath();
+    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, HandlerMethod handler, PageFragmentContext 
context, ExtendedModelMap modelMap) throws Exception {
 
         Long referringPageId = null;
 
@@ -59,25 +59,49 @@ public class TopMenuInterceptor extends 
             catch (NumberFormatException nfe) {}
         }
 
-        String referringPageQuery = referringPageId != null ? 
"?referringPageId="+referringPageId.toString() : "";
-        String pageBackPath = mountPath + (referringPageId != null ? 
"/page/view/"+referringPageId.toString() : "/");
-
         if (referringPageId != null) {
             modelMap.addAttribute(ModelKeys.REFERRING_PAGE_ID, 
referringPageId);
         }
+
+        // only need to add menu when doing rendering page
+        if (context.isPageFragmentRenderRequest()) {
+            NavigationMenu menu = buildNavigationMenu(request, context, 
modelMap, referringPageId);
+            modelMap.addAttribute(menu.getName(), menu);
+        }
+        return true;
+    }
+
+    protected NavigationMenu buildNavigationMenu(HttpServletRequest request, 
PageFragmentContext context, ExtendedModelMap modelMap, Long referringPageId) {
+
         NavigationMenu menu = new NavigationMenu("topnav");
 
+        String mountPath = context.getMountPath();
+
+        String referringPageQuery = referringPageId != null ? 
"?referringPageId="+referringPageId.toString() : "";
+
+        String homePath = context.getRouteContext("homeRoute").getRoutePath();
+        String pageBackPath = homePath;
+
+        if (referringPageId != null) {
+            Map<String, String> pathVariables = new HashMap<String, String>();
+            pathVariables.put("pageId", referringPageId.toString());
+            pageBackPath = 
context.getRouteContext("pageRoute").getRoutePath(pathVariables);
+        }
+
         // if on userPage page
         if (Boolean.parseBoolean(getConfigProperty(context, "topnav.userPage", 
"false"))) {
 
             if (referringPageId == null) {
-              Page page = (Page)modelMap.get(ModelKeys.PAGE);
+                Page page = (Page)modelMap.get(ModelKeys.PAGE);
                 referringPageQuery = 
"?referringPageId="+page.getId().toString();
             }
 
             User user = (User) modelMap.get(ModelKeys.USER);
             if (user != null) {
-                NavigationItem profile = new 
NavigationItem("page.profile.title", getDisplayName(user), mountPath + 
"/person/" + user.getUsername() + referringPageQuery);
+                Map<String, String> pathVariables = new HashMap<String, 
String>();
+                pathVariables.put("username", user.getUsername());
+                String userProfilePath = 
context.getRouteContext("userProfileRoute").getRoutePath(pathVariables);
+                NavigationItem profile = new 
NavigationItem("page.profile.title", getDisplayName(user), userProfilePath + 
referringPageQuery);
                 menu.addNavigationItem(profile);
             }
             PageUser pageUser = (PageUser)modelMap.get(ModelKeys.PAGE_USER);
@@ -122,7 +146,7 @@ public class TopMenuInterceptor extends 
 
         // if on admin page
         if (Boolean.parseBoolean(getConfigProperty(context, "topnav.admin", 
"false"))) {
-            menu.addNavigationItem(new NavigationItem("page.general.back", 
null, mountPath + "/"));
+            menu.addNavigationItem(new NavigationItem("page.general.back", 
null, homePath));
         }
         else {
             // link to admin for all others (if allowed: url security check 
during rendering)
@@ -132,9 +156,7 @@ public class TopMenuInterceptor extends 
         // always can logout
         menu.addNavigationItem(new NavigationItem("page.general.logout", null, 
"/j_spring_security_logout"));
 
-        modelMap.addAttribute(menu.getName(), menu);
-
-        return true;
+        return menu;
     }
 
     protected String getDisplayName(User user) {
@@ -142,9 +164,9 @@ public class TopMenuInterceptor extends 
         return (displayName == null || "".equals(displayName)) ? 
user.getUsername() : displayName;
     }
 
-    protected String getConfigProperty(NestedHandlerContext context, String 
name, String defaultValue) {
+    protected String getConfigProperty(PageFragmentContext context, String 
name, String defaultValue) {
         // NB: properties retrieved from *only* the root config handler
-        String value = context.getConfig().getProperty(name);
+        String value = context.getFragmentProperty(name);
         return value != null ? value : defaultValue;
     }
 }

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserPageInterceptor.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserPageInterceptor.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserPageInterceptor.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserPageInterceptor.java
 Wed Oct 10 12:47:40 2012
@@ -27,16 +27,16 @@ import org.apache.rave.portal.model.Page
 import org.apache.rave.portal.model.PageUser;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.service.PageService;
-import org.apache.rave.portal.web.mvc.HandlerContext;
-import org.apache.rave.portal.web.mvc.RoutedHandlerInterceptorAdapter;
-import org.apache.rave.portal.web.mvc.RoutedHandlerMethod;
+import org.apache.rave.portal.web.mvc.HandlerMethodContext;
+import org.apache.rave.portal.web.mvc.RoutedHandlerMethodInterceptorAdapter;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ExtendedModelMap;
+import org.springframework.web.method.HandlerMethod;
 
-public class UserPageInterceptor extends RoutedHandlerInterceptorAdapter {
+public class UserPageInterceptor extends RoutedHandlerMethodInterceptorAdapter 
{
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -48,7 +48,7 @@ public class UserPageInterceptor extends
     }
 
     @Override
-    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, RoutedHandlerMethod handler, HandlerContext 
context, final ExtendedModelMap modelMap) throws Exception {
+    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, HandlerMethod handler, HandlerMethodContext 
context, ExtendedModelMap modelMap) throws Exception {
         Map<String, String> uriTemplateVariables = 
getUriTemplateVariables(request);
         Long pageId = null;
         User user = (User) modelMap.get(ModelKeys.USER);

Modified: 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserProfileInterceptor.java
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserProfileInterceptor.java?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserProfileInterceptor.java
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/java/org/apache/rave/portal/web/mvc/interceptors/UserProfileInterceptor.java
 Wed Oct 10 12:47:40 2012
@@ -25,16 +25,16 @@ import org.apache.rave.portal.model.Page
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.service.PageService;
 import org.apache.rave.portal.service.UserService;
-import org.apache.rave.portal.web.mvc.HandlerContext;
-import org.apache.rave.portal.web.mvc.RoutedHandlerInterceptorAdapter;
-import org.apache.rave.portal.web.mvc.RoutedHandlerMethod;
+import org.apache.rave.portal.web.mvc.HandlerMethodContext;
+import org.apache.rave.portal.web.mvc.RoutedHandlerMethodInterceptorAdapter;
 import org.apache.rave.portal.web.util.ModelKeys;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ExtendedModelMap;
+import org.springframework.web.method.HandlerMethod;
 
-public class UserProfileInterceptor extends RoutedHandlerInterceptorAdapter {
+public class UserProfileInterceptor extends 
RoutedHandlerMethodInterceptorAdapter {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -48,7 +48,7 @@ public class UserProfileInterceptor exte
     }
 
     @Override
-    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, RoutedHandlerMethod handler, HandlerContext 
context, final ExtendedModelMap modelMap) throws Exception {
+    protected boolean preHandle(HttpServletRequest request, 
HttpServletResponse response, HandlerMethod handler, HandlerMethodContext 
context, ExtendedModelMap modelMap) throws Exception {
         Map<String, String> uriTemplateVariables = 
getUriTemplateVariables(request);
         User user = null;
         if (uriTemplateVariables.get("userid") != null) {

Modified: 
rave/sandbox/content-services/demo-portal/src/main/resources/page-config.json
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/resources/page-config.json?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/resources/page-config.json 
(original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/resources/page-config.json 
Wed Oct 10 12:47:40 2012
@@ -2,46 +2,51 @@
     "jcr:primaryType":"rave:folder",
     "routes":{
         "jcr:primaryType":"raveconfig:routes",
-        "r1":{
+        "homeRoute":{
             "jcr:primaryType":"raveconfig:route",
             "path":"/",
-            "component":"/userPage"
+            "component":"/userPage",
+            "referenceId":"homeRoute"
         },
-        "r2":{
+        "r1":{
             "jcr:primaryType":"raveconfig:route",
             "path":"/page",
             "component":"/userPage"
         },
-        "r3":{
+        "r2":{
             "jcr:primaryType":"raveconfig:route",
             "path":"/page/view",
             "component":"/userPage"
         },
-        "r4":{
+        "pageRoute":{
             "jcr:primaryType":"raveconfig:route",
             "path":"/page/view/{pageId}",
-            "component":"/userPage"
+            "component":"/userPage",
+            "referenceId":"pageRoute"
         },
-        "userProfileName":{
+        "userProfileRoute":{
             "jcr:primaryType":"raveconfig:route",
             "path":"/person/{username:.*}",
-            "component":"/userProfile"
+            "component":"/userProfile",
+            "referenceId":"userProfileRoute"
         },
-        "userProfileId":{
+        "r3":{
             "jcr:primaryType":"raveconfig:route",
-            "path":"/person/id/{userId:.*}",
+            "path":"/person/id/{userid:.*}",
             "component":"/userProfile"
         },
-        "r5":{
-            "jcr:primaryType":"raveconfig:route",
-            "path":"/dynapi/rest/widgets",
-            "component":"org.apache.rave.portal.web.mvc.api.rest.DynWidgetApi"
-        },
-        "binaries":{
+        "binariesRoute":{
             "jcr:primaryType":"raveconfig:route",
             "path":"/binaries",
             "prop.contentPathPrefix":"/binaries",
-            
"component":"org.apache.rave.portal.web.mvc.view.BinaryRepositoryController"
+            
"component":"org.apache.rave.portal.web.mvc.view.BinaryRepositoryController",
+            "handler":"render",
+            "referenceId":"binariesRoute"
+        },
+        "r4":{
+            "jcr:primaryType":"raveconfig:route",
+            "path":"/dynapi/rest/widgets",
+            "component":"org.apache.rave.portal.web.mvc.api.rest.DynWidgetApi"
         }
     },
     "pages":{

Modified: 
rave/sandbox/content-services/demo-portal/src/main/resources/template-data.json
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/resources/template-data.json?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/resources/template-data.json 
(original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/resources/template-data.json 
Wed Oct 10 12:47:40 2012
@@ -9,7 +9,7 @@
             "id" : "freemarker",
             "jcr:encoding" : "test",
             "jcr:mimeType" : "text/plain",
-            "rave:src" : "<#import \"/spring.ftl\" as spring />\n <#assign 
ravehmvc=JspTaglibs[\"http://www.apache-rave.org/jsp/hmvc\";] />\n <#assign 
tiles=JspTaglibs[\"http://tiles.apache.org/tags-tiles\";] />\n <#assign 
portal=JspTaglibs[\"http://www.apache.org/rave/tags\";] />\n <#assign 
sec=JspTaglibs[\"http://www.springframework.org/security/tags\";] />\n <#assign 
c=JspTaglibs[\"http://java.sun.com/jsp/jstl/core\";] />\n <#assign 
fmt=JspTaglibs[\"http://java.sun.com/jsp/jstl/fmt\";] />\n <#assign 
fn=JspTaglibs[\"http://java.sun.com/jsp/jstl/functions\";] />\n <#assign 
form=JspTaglibs[\"http://www.springframework.org/tags/form\";] />",
+            "rave:src" : "<#import \"/spring.ftl\" as spring />\n<#assign 
ravehmvc=JspTaglibs[\"http://www.apache-rave.org/jsp/hmvc\";] />\n<#assign 
ravejcr=JspTaglibs[\"http://www.apache-rave.org/jsp/jcr\"]/>\n<#assign 
tiles=JspTaglibs[\"http://tiles.apache.org/tags-tiles\";] />\n<#assign 
portal=JspTaglibs[\"http://www.apache.org/rave/tags\";] />\n<#assign 
sec=JspTaglibs[\"http://www.springframework.org/security/tags\";] />\n<#assign 
c=JspTaglibs[\"http://java.sun.com/jsp/jstl/core\";] />\n<#assign 
fmt=JspTaglibs[\"http://java.sun.com/jsp/jstl/fmt\";] />\n<#assign 
fn=JspTaglibs[\"http://java.sun.com/jsp/jstl/functions\";] />\n<#assign 
form=JspTaglibs[\"http://www.springframework.org/tags/form\";] />",
             "jcr:lastModified" : "2012-08-30T10:48:40.534+0200"
         },
         "footer.ftl" : {
@@ -19,7 +19,7 @@
             "id" : "footer",
             "jcr:encoding" : "test",
             "jcr:mimeType" : "text/plain",
-            "rave:src" : "<#import \"/spring.ftl\"as spring/>\n<#assign 
ravejcr=JspTaglibs[\"http://www.apache-rave.org/jsp/jcr\"]/>\n<#assign 
c=JspTaglibs[\"http://java.sun.com/jsp/jstl/core\";] />\n<footer>\n    <div 
class=\"container\">\n        <div class=\"row\">\n            <div 
class=\"span12 version\">\n            <@ravejcr.content 
path=\"/content/documents/rave.txt\" type=\"Article\" var=\"raveArticle\"/>\n   
             <span>${raveArticle.title} 
${applicationProperties['portal.version']}</span>\n                <a 
href=\"http://rave.apache.org\";><img class=\"footer-logo\" alt=\"Apache Rave\" 
title=\"Apache Rave\" src=\"<@c.url 
value=\"/dyn/binaries/images/rave-logo.png\"/>\"/></a>\n            </div>\n    
    </div>\n    </div>\n</footer>",
+            "rave:src" : "<#import \"/spring.ftl\"as spring/>\n<#include 
\"taglibs.ftl\"/>\n<footer>\n    <div class=\"container\">\n        <div 
class=\"row\">\n            <div class=\"span12 version\">\n            
<@ravejcr.content path=\"/content/documents/rave.txt\" type=\"Article\" 
var=\"raveArticle\"/>\n                <span>${raveArticle.title} 
${applicationProperties['portal.version']}</span>\n                <a 
href=\"http://rave.apache.org\";><img class=\"footer-logo\" alt=\"Apache Rave\" 
title=\"Apache Rave\" src=\"<@ravehmvc.path 
route=\"binariesRoute\"/>/images/rave-logo.png\"/></a>\n            </div>\n    
    </div>\n    </div>\n</footer>",
             "jcr:lastModified" : "2012-08-30T10:48:40.534+0200"
         },
         "userpage" : {

Modified: 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/footer.ftl
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/footer.ftl?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/footer.ftl
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/footer.ftl
 Wed Oct 10 12:47:40 2012
@@ -17,15 +17,14 @@
   under the License.
 -->
 <#import "/spring.ftl"as spring/>
-<#assign ravejcr=JspTaglibs["http://www.apache-rave.org/jsp/jcr"]/>
-<#assign c=JspTaglibs["http://java.sun.com/jsp/jstl/core";] />
+<#include "taglibs.ftl"/>
 <footer>
     <div class="container">
         <div class="row">
             <div class="span12 version">
             <@ravejcr.content path="/content/documents/rave.txt" 
type="Article" var="raveArticle"/>
                 <span>${raveArticle.title} 
${applicationProperties['portal.version']}</span>
-                <a href="http://rave.apache.org";><img class="footer-logo" 
alt="Apache Rave" title="Apache Rave" src="<@c.url 
value="/dyn/binaries/images/rave-logo.png"/>"/></a>
+                <a href="http://rave.apache.org";><img class="footer-logo" 
alt="Apache Rave" title="Apache Rave" src="<@ravehmvc.path 
route="binariesRoute"/>/images/rave-logo.png"/></a>
             </div>
         </div>
     </div>

Modified: 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/taglibs.ftl
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/taglibs.ftl?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/taglibs.ftl
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/freemarker/views/pages/taglibs.ftl
 Wed Oct 10 12:47:40 2012
@@ -18,6 +18,7 @@
 -->
 <#import "/spring.ftl" as spring />
 <#assign ravehmvc=JspTaglibs["http://www.apache-rave.org/jsp/hmvc";] />
+<#assign ravejcr=JspTaglibs["http://www.apache-rave.org/jsp/jcr"]/>
 <#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles";] />
 <#assign portal=JspTaglibs["http://www.apache.org/rave/tags";] />
 <#assign sec=JspTaglibs["http://www.springframework.org/security/tags";] />

Modified: 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/pages/userprofile/page-form.jsp
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/pages/userprofile/page-form.jsp?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/pages/userprofile/page-form.jsp
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/pages/userprofile/page-form.jsp
 Wed Oct 10 12:47:40 2012
@@ -21,8 +21,8 @@
 <%@ taglib uri="http://www.apache-rave.org/jsp/hmvc"; prefix="hmvc" %>
 <div id="personProfileContent">
 
-  <hmvc:path pathFor="handler" handler="updateProfile" var="profilePath"/>
-  <c:url var="profileUrl" value="${profilePath}">
+  <hmvc:path handler="updateProfile" var="profilePath"/>
+  <c:url var="profileUrl" value="${profilePath}" context="/">
     <c:param name="referringPageId" value="${referringPageId}" />
   </c:url>
   <form:form id="editAccountForm" commandName="userProfile" 
action="${profileUrl}" method="POST" class="form-horizontal">

Copied: 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routed-dispatcher-servlet.xml
 (from r1390464, 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/nested-dispatcher-servlet.xml)
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routed-dispatcher-servlet.xml?p2=rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routed-dispatcher-servlet.xml&p1=rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/nested-dispatcher-servlet.xml&r1=1390464&r2=1396571&rev=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/nested-dispatcher-servlet.xml
 (original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routed-dispatcher-servlet.xml
 Wed Oct 10 12:47:40 2012
@@ -170,7 +170,7 @@
   </util:map>
 
   <!-- JCR|File based LOADING -->
-  <bean name="nestedHandlerMethodHandlerMapping" 
class="org.apache.rave.portal.web.mvc.NestedHandlerMethodHandlerMapping">
+  <bean name="routedRequestMappingHandlerMapping" 
class="org.apache.rave.portal.web.mvc.RoutedRequestMappingHandlerMapping">
     <property name="order" value="-1"/>
     <property name="configManager" ref="enhancedPagesConfigManager"/>
     <property name="interceptors" ref="interceptors"/>
@@ -241,9 +241,9 @@
     <property name="interceptors" ref="interceptors"/>
   </bean>
 
-  <bean name="nestedHandlerMethodHandlerAdapter" 
class="org.apache.rave.portal.web.mvc.NestedHandlerMethodHandlerAdapterAdapter">
+  <bean name="routedHandlerMethodHandlerAdapter" 
class="org.apache.rave.portal.web.mvc.RoutedHandlerMethodHandlerAdapterAdapter">
     <constructor-arg>
-      <bean 
class="org.apache.rave.portal.web.mvc.NestedHandlerMethodHandlerAdapter">
+      <bean 
class="org.apache.rave.portal.web.mvc.RoutedHandlerMethodHandlerAdapter">
         <property name="order" value="-1"/>
         <property name="webBindingInitializer">
           <bean 
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">

Modified: 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routes.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routes.xml?rev=1396571&r1=1396570&r2=1396571&view=diff
==============================================================================
--- 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routes.xml 
(original)
+++ 
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/routes.xml 
Wed Oct 10 12:47:40 2012
@@ -18,15 +18,15 @@
   under the License.
   -->
 <routes name="default">
-  <route path="/"                      component="/userPage"/>
+  <route path="/"                      component="/userPage"      
referenceId="homeRoute"/>
   <route path="/page"                  component="/userPage"/>
   <route path="/page/view"             component="/userPage"/>
-  <route path="/page/view/{pageId}"    component="/userPage"/>
-  <route path="/person/{username:.*}"  component="/userProfile"/>
+  <route path="/page/view/{pageId}"    component="/userPage"      
referenceId="pageRoute"/>
+  <route path="/person/{username:.*}"  component="/userProfile"   
referenceId="userProfileRoute"/>
   <route path="/person/id/{userid:.*}" component="/userProfile"/>
 
   <!-- service for rendering resources (images, etc.) from the jcr repository 
-->
-  <route path="/binaries"              
component="org.apache.rave.portal.web.mvc.view.BinaryRepositoryController">
+  <route path="/binaries"              
component="org.apache.rave.portal.web.mvc.view.BinaryRepositoryController" 
handler="render" referenceId="binariesRoute">
     <property name="contentPathPrefix">/binaries</property>
   </route>
 

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=1396571&r1=1396570&r2=1396571&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 
Wed Oct 10 12:47:40 2012
@@ -57,10 +57,10 @@
     <load-on-startup>1</load-on-startup>
   </servlet>
 
-  <!-- Handles all routed/nested requests into the application -->
+  <!-- Handles all routed requests into the application -->
   <servlet>
-    <servlet-name>nested-dispatcher</servlet-name>
-    
<servlet-class>org.apache.rave.portal.web.mvc.servlet.NestedDispatcherServlet</servlet-class>
+    <servlet-name>routed-dispatcher</servlet-name>
+    
<servlet-class>org.apache.rave.portal.web.mvc.servlet.PageFragmentDispatcherServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
   </servlet>
 
@@ -79,8 +79,8 @@
   </servlet-mapping>
 
   <servlet-mapping>
-    <servlet-name>nested-dispatcher</servlet-name>
-    <url-pattern>/dyn/*</url-pattern>
+    <servlet-name>routed-dispatcher</servlet-name>
+    <url-pattern>/routed/*</url-pattern>
   </servlet-mapping>
 
   <welcome-file-list>


Reply via email to