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"/>