Author: mfranklin
Date: Wed Dec 12 06:09:58 2012
New Revision: 1420533
URL: http://svn.apache.org/viewvc?rev=1420533&view=rev
Log:
Applying patch from Aaron Gooch RAVE-848
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/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
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=1420533&r1=1420532&r2=1420533&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
Wed Dec 12 06:09:58 2012
@@ -33,11 +33,13 @@ 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.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
@Controller
@@ -64,17 +66,14 @@ public class ProfileController {
* @return the view name of the user profile page
*/
@RequestMapping(value = {"/{username:.*}"}, method = RequestMethod.GET)
- public String viewProfileByUsername(@PathVariable String username,
ModelMap model, @RequestParam(required = false) String referringPageId) {
+ public String viewProfileByUsername(@PathVariable String username,
ModelMap model, @RequestParam(required = false) String referringPageId,
HttpServletResponse response) {
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;
+ return profileNotFoundErrorHelper(model, referringPageId,
response, user, e);
}
}
/**
@@ -86,20 +85,35 @@ public class ProfileController {
* @return the view name of the user profile page
*/
@RequestMapping(value = {"/id/{userid:.*}"}, method = RequestMethod.GET)
- public String viewProfile(@PathVariable String userid, ModelMap model,
@RequestParam(required = false) String referringPageId) {
+ public String viewProfile(@PathVariable String userid, ModelMap model,
@RequestParam(required = false) String referringPageId, HttpServletResponse
response) {
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;
+ return profileNotFoundErrorHelper(model, referringPageId,
response, user, e);
}
}
+ /**
+ * Helper method to handle error when a person's profile is not found
+ * @param model Model map of values for view
+ * @param referringPageId String
+ * @param response HttpServletResponse object
+ * @param user User of page
+ * @param e Exception that was caught
+ * @return String of the viewname to render
+ */
+ private String profileNotFoundErrorHelper(ModelMap model, String
referringPageId, HttpServletResponse response, User user, Exception e) {
+ logger.error("Caught an exception: " + e.getMessage());
+ addAttributesToModel(model, user, referringPageId);
+ response.setStatus(HttpStatus.NOT_FOUND.value());
+ String view = ViewNames.USER_NOT_FOUND;
+ addNavItemsToModel(view, model, referringPageId, user, null);
+ return view;
+ }
+
private String viewProfileCommon(User user, ModelMap model, String
referringPageId){
Page personProfilePage =
pageService.getPersonProfilePage(user.getId());
addAttributesToModel(model, user, referringPageId);
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=1420533&r1=1420532&r2=1420533&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
Wed Dec 12 06:09:58 2012
@@ -35,6 +35,8 @@ import org.apache.rave.portal.web.util.V
import org.hamcrest.CoreMatchers;
import org.junit.Before;
import org.junit.Test;
+import org.springframework.http.HttpStatus;
+import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.ui.ModelMap;
@@ -55,7 +57,7 @@ public class ProfileControllerTest {
private UserService userService;
private PageService pageService;
- private WidgetService widgetService;
+ private MockHttpServletResponse response;
private Page defaultPage, otherPage;
private List<Page> allProfilePages;
@@ -71,6 +73,7 @@ public class ProfileControllerTest {
public void setup() {
userService = createMock(UserService.class);
pageService = createMock(PageService.class);
+ response = new MockHttpServletResponse();
profileController = new ProfileController(userService,
pageService);
validPageLayout = new PageLayoutImpl();
@@ -111,7 +114,7 @@ public class ProfileControllerTest {
replay(userService, pageService);
- String view = profileController.viewProfileByUsername(username,
model, null);
+ String view = profileController.viewProfileByUsername(username,
model, null, response);
//assert that the model is not null
assertThat(model, CoreMatchers.notNullValue());
@@ -152,7 +155,7 @@ public class ProfileControllerTest {
replay(userService, pageService);
- String view = profileController.viewProfile(USER_ID, model,
null);
+ String view = profileController.viewProfile(USER_ID, model,
null, response);
//assert that the model is not null
assertThat(model, CoreMatchers.notNullValue());
@@ -187,8 +190,32 @@ public class ProfileControllerTest {
replay(userService, pageService);
- String view = profileController.viewProfileByUsername(username, model,
null);
+ String view = profileController.viewProfileByUsername(username, model,
null, response);
assertThat(view, is(ViewNames.USER_NOT_FOUND));
+ assertThat(response.getStatus(), is(HttpStatus.NOT_FOUND.value()));
+
+ verify(userService, pageService);
+ }
+
+ @Test
+ public void viewProfile_invalidUser() {
+ //creating a mock user
+ final User user = null;
+ final ModelMap model = new ModelMap();
+ final int modelSize = 4;
+ final String username="Canonical";
+ Page personProfile = new PageImpl();
+ PageLayout pageLayout = new PageLayoutImpl();
+ pageLayout.setCode("person_profile");
+ personProfile.setPageLayout(pageLayout);
+
+ expect(userService.getUserById(username)).andThrow(new
UsernameNotFoundException("Username does not exist"));
+
+ replay(userService, pageService);
+
+ String view = profileController.viewProfile(username, model, null,
response);
+ assertThat(view, is(ViewNames.USER_NOT_FOUND));
+ assertThat(response.getStatus(), is(HttpStatus.NOT_FOUND.value()));
verify(userService, pageService);
}