Author: carlucci
Date: Thu Oct  4 17:12:04 2012
New Revision: 1394162

URL: http://svn.apache.org/viewvc?rev=1394162&view=rev
Log:
RAVE-805:  Catch error when trying to visit a user's page who does not exist. 
Patch supplied by Dan Gornstein

Added:
    
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/usernotfound.jsp
Modified:
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
    rave/trunk/rave-portal-resources/src/main/resources/messages.properties
    rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties
    rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
 Thu Oct  4 17:12:04 2012
@@ -35,6 +35,7 @@ import org.apache.rave.portal.web.util.V
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
@@ -69,15 +70,17 @@ public class ProfileController {
         */
        @RequestMapping(value = {"/{username:.*}"}, method = RequestMethod.GET)
        public String viewProfile(@PathVariable String username, ModelMap 
model, @RequestParam(required = false) Long referringPageId) {
-               logger.debug("Viewing person profile for: " + username);
-               User user = userService.getUserByUsername(username);
-        Page personProfilePage = 
pageService.getPersonProfilePage(user.getId());
-        addAttributesToModel(model, user, referringPageId);
-        model.addAttribute(ModelKeys.PAGE, personProfilePage);
-               String view =  
ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
-        List<Person> friendRequests = 
userService.getFriendRequestsReceived(username);
-        addNavItemsToModel(view, model, referringPageId, user, friendRequests);
-        return view;
+        User user = null;
+        try{
+            user = userService.getUserByUsername(username);
+            logger.debug("Viewing person profile for: " + user.getUsername());
+            return viewProfileCommon(user, model, referringPageId);
+        }catch(Exception e){
+            addAttributesToModel(model, user, referringPageId);
+            String view = ViewNames.USER_NOT_FOUND;
+            addNavItemsToModel(view, model, referringPageId, user, null);
+            return view;
+        }
        }
          /**
                 * Views the main page of another user's profile
@@ -89,17 +92,28 @@ public class ProfileController {
                 */
        @RequestMapping(value = {"/id/{userid:.*}"}, method = RequestMethod.GET)
        public String viewProfile(@PathVariable Long userid, ModelMap model, 
@RequestParam(required = false) Long referringPageId) {
-               User user = userService.getUserById(userid);
-               logger.debug("Viewing person profile for: " + 
user.getUsername());
-               
-               Page personProfilePage = 
pageService.getPersonProfilePage(user.getId());
+        User user = null;
+        try{
+            user = userService.getUserById(userid);
+            logger.debug("Viewing person profile for: " + user.getUsername());
+            return viewProfileCommon(user, model, referringPageId);
+        }catch (Exception e){
+            addAttributesToModel(model, user, referringPageId);
+            String view = ViewNames.USER_NOT_FOUND;
+            addNavItemsToModel(view, model, referringPageId, user, null);
+            return view;
+        }
+       }
+
+    private String viewProfileCommon(User user, ModelMap model, Long 
referringPageId){
+        Page personProfilePage = 
pageService.getPersonProfilePage(user.getId());
         addAttributesToModel(model, user, referringPageId);
         model.addAttribute(ModelKeys.PAGE, personProfilePage);
-               String view =  
ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
+        String view =  
ViewNames.getPersonPageView(personProfilePage.getPageLayout().getCode());
         List<Person> friendRequests = 
userService.getFriendRequestsReceived(user.getUsername());
         addNavItemsToModel(view, model, referringPageId, user, friendRequests);
         return view;
-       }
+    }
 
        /**
         * Updates the user's personal information
@@ -146,12 +160,15 @@ public class ProfileController {
         long refPageId = referringPageId != null ? referringPageId : 0;
         final NavigationMenu topMenu = new NavigationMenu("topnav");
 
-        NavigationItem friendRequestItems = new 
NavigationItem("page.profile.friend.requests", 
String.valueOf(friendRequests.size()) , "#");
-        for(Person request : friendRequests) {
-               NavigationItem childItem = new 
NavigationItem((request.getDisplayName()!=null && 
!request.getDisplayName().isEmpty())? request.getDisplayName() : 
request.getUsername(), request.getUsername(), "#");
-               friendRequestItems.addChildNavigationItem(childItem);
+        if(friendRequests != null){
+            NavigationItem friendRequestItems = new 
NavigationItem("page.profile.friend.requests", 
String.valueOf(friendRequests.size()) , "#");
+            for(Person request : friendRequests) {
+                NavigationItem childItem = new 
NavigationItem((request.getDisplayName()!=null && 
!request.getDisplayName().isEmpty())? request.getDisplayName() : 
request.getUsername(), request.getUsername(), "#");
+                friendRequestItems.addChildNavigationItem(childItem);
+            }
+
+            topMenu.addNavigationItem(friendRequestItems);
         }
-       topMenu.addNavigationItem(friendRequestItems);
        topMenu.getNavigationItems().addAll((ControllerUtils.getTopMenu(view, 
refPageId, user, false).getNavigationItems()));
 
        model.addAttribute(topMenu.getName(), topMenu);

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/util/ControllerUtils.java
 Thu Oct  4 17:12:04 2012
@@ -96,7 +96,7 @@ public class ControllerUtils {
 
             NavigationItem logout = getLogoutItem();
             menu.addNavigationItem(logout);
-        } else if (view.startsWith(ViewNames.PERSON_PROFILE)) {
+        } else if (view.startsWith(ViewNames.PERSON_PROFILE) || 
view.startsWith(ViewNames.USER_NOT_FOUND)) {
             NavigationItem back = getBackItem(referringPageId);
             menu.addNavigationItem(back);
 
@@ -105,7 +105,8 @@ public class ControllerUtils {
 
             NavigationItem logout = getLogoutItem();
             menu.addNavigationItem(logout);
-        } else if (view.startsWith(ViewNames.ADD_WIDGET_FORM) || 
view.startsWith(ViewNames.WIDGET)) {
+        }
+        else if (view.startsWith(ViewNames.ADD_WIDGET_FORM) || 
view.startsWith(ViewNames.WIDGET)) {
             if(view.equals(ViewNames.WIDGET_MARKETPLACE)){
                 NavigationItem addWidget = new 
NavigationItem("page.widget.backToMarketplace", null, 
"/app/marketplace?referringPageId=" + referringPageId);
                 menu.addNavigationItem(addWidget);

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/ViewNames.java
 Thu Oct  4 17:12:04 2012
@@ -38,6 +38,7 @@ public final class ViewNames {
     public static final String NEW_ACCOUNT = USER_PREFIX + "newaccount";
     public static final String USER_PROFILE = USER_PREFIX + "userProfile";
     public static final String PERSON_PROFILE = USER_PREFIX + "personProfile";
+    public static final String USER_NOT_FOUND = USER_PREFIX + "usernotfound";
     public static final String ADD_WIDGET_MARKETPLACE = ADD_WIDGET_FORM + 
".marketplace";
     public static final String ADD_WIDGET_W3C = ADD_WIDGET_FORM + ".w3c";
 
@@ -79,4 +80,4 @@ public final class ViewNames {
     public static String getPersonPageView(String layoutName) {
         return new 
StringBuilder(PERSON_PROFILE).append('.').append(layoutName).toString();
     }
-}
\ No newline at end of file
+}

Modified: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
 Thu Oct  4 17:12:04 2012
@@ -172,7 +172,7 @@ public class ProfileControllerTest {
                verify(userService, pageService);
        }
 
-    @Test(expected = UsernameNotFoundException.class)
+    @Test
     public void viewPersonProfile_invalidUser() {
         //creating a mock user
         final User user = null;
@@ -188,7 +188,8 @@ public class ProfileControllerTest {
 
         replay(userService, pageService);
 
-        profileController.viewProfile(username, model, null);
+        String view = profileController.viewProfile(username, model, null);
+        assertThat(view, is(ViewNames.USER_NOT_FOUND));
 
         verify(userService, pageService);
     }

Modified: 
rave/trunk/rave-portal-resources/src/main/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/messages.properties?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/messages.properties 
(original)
+++ rave/trunk/rave-portal-resources/src/main/resources/messages.properties Thu 
Oct  4 17:12:04 2012
@@ -235,6 +235,7 @@ page.personProfile.edit=Edit
 page.personProfile.edit.option=Edit your profile here
 page.personProfile.save=Save
 page.personProfile.cancel=Cancel
+page.personProfile.userNotFound=The user's page you were looking for could not 
be found.
 
 admin.home.title=Rave admin interface
 admin.home.shorttitle=Home

Modified: 
rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties 
(original)
+++ rave/trunk/rave-portal-resources/src/main/resources/messages_es.properties 
Thu Oct  4 17:12:04 2012
@@ -241,6 +241,7 @@ page.personProfile.edit=Editar
 page.personProfile.edit.option=Edite su perfil
 page.personProfile.save=Guardar
 page.personProfile.cancel=Cancelar
+page.personProfile.userNotFound=Página del usuario que estaba buscando no se 
pudo encontrar.
 
 admin.home.title=Interfaz de administraci\u00F3n Rave
 admin.home.shorttitle=Inicio

Modified: 
rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties 
(original)
+++ rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties 
Thu Oct  4 17:12:04 2012
@@ -244,6 +244,7 @@ page.personProfile.edit=Bewerk
 page.personProfile.edit.option=Bewerk uw profiel hier
 page.personProfile.save=Bewaar
 page.personProfile.cancel=Annuleer
+page.personProfile.userNotFound=De gebruiker pagina die u zocht kon niet 
worden gevonden.
 
 admin.home.title=Rave admin interface
 admin.home.shorttitle=Home

Added: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/usernotfound.jsp
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/usernotfound.jsp?rev=1394162&view=auto
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/usernotfound.jsp
 (added)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/usernotfound.jsp
 Thu Oct  4 17:12:04 2012
@@ -0,0 +1,27 @@
+<%--
+  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.
+  --%>
+
+<%@ page language="java" trimDirectiveWhitespaces="true" %>
+<%@ page errorPage="/WEB-INF/jsp/views/error.jsp" %>
+<%@ include file="/WEB-INF/jsp/includes/taglibs.jsp" %>
+<fmt:setBundle basename="messages"/>
+<rave:navbar/>
+<div id="pageContent" class="container-fluid navbar-spacer">
+    <h2><fmt:message key="page.personProfile.userNotFound"/></h2>
+</div>

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml?rev=1394162&r1=1394161&r2=1394162&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tiles-defs.xml Thu 
Oct  4 17:12:04 2012
@@ -48,6 +48,10 @@
         <put-attribute name="layout" value="/WEB-INF/jsp/layouts/{1}.jsp"/>
     </definition>
 
+    <definition name="templates.user.usernotfound" extends="templates.base">
+        <put-attribute name="body" 
value="/WEB-INF/jsp/views/usernotfound.jsp"/>
+    </definition>
+
     <definition name="templates.user.*" extends="templates.base">
         <put-attribute name="pageTitleKey" value="page.{1}.title"/>
         <put-attribute name="body" value="/WEB-INF/jsp/views/{1}.jsp"/>


Reply via email to