Fix NPE on loading maps.

This commit is contained in:
Paulo Gustavo Veiga 2013-03-29 20:32:52 -03:00
parent 4d46864388
commit bd80d95d22

View File

@ -19,6 +19,7 @@
package com.wisemapping.webmvc; package com.wisemapping.webmvc;
import com.wisemapping.exceptions.AccessDeniedSecurityException;
import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.model.CollaborationRole; import com.wisemapping.model.CollaborationRole;
import com.wisemapping.model.Mindmap; import com.wisemapping.model.Mindmap;
@ -28,9 +29,9 @@ import com.wisemapping.service.LockManager;
import com.wisemapping.service.MindmapService; import com.wisemapping.service.MindmapService;
import com.wisemapping.view.MindMapBean; import com.wisemapping.view.MindMapBean;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
@ -47,7 +48,6 @@ import java.util.Locale;
@Controller @Controller
public class MindmapController { public class MindmapController {
public static final String LOCK_SESSION_ATTRIBUTE = "lockSession"; public static final String LOCK_SESSION_ATTRIBUTE = "lockSession";
@Qualifier("mindmapService") @Qualifier("mindmapService")
@Autowired @Autowired
@ -59,7 +59,7 @@ public class MindmapController {
} }
@RequestMapping(value = "maps/{id}/details") @RequestMapping(value = "maps/{id}/details")
public String showDetails(@PathVariable int id, @NotNull Model model,@NotNull HttpServletRequest request) { public String showDetails(@PathVariable int id, @NotNull Model model,@NotNull HttpServletRequest request) throws AccessDeniedSecurityException {
final MindMapBean mindmap = findMindmapBean(id); final MindMapBean mindmap = findMindmapBean(id);
model.addAttribute("mindmap", mindmap); model.addAttribute("mindmap", mindmap);
model.addAttribute("baseUrl", request.getAttribute("site.baseurl")); model.addAttribute("baseUrl", request.getAttribute("site.baseurl"));
@ -67,7 +67,7 @@ public class MindmapController {
} }
@RequestMapping(value = "maps/{id}/print") @RequestMapping(value = "maps/{id}/print")
public String showPrintPage(@PathVariable int id, @NotNull Model model) { public String showPrintPage(@PathVariable int id, @NotNull Model model) throws AccessDeniedSecurityException {
final MindMapBean mindmap = findMindmapBean(id); final MindMapBean mindmap = findMindmapBean(id);
model.addAttribute("principal", Utils.getUser()); model.addAttribute("principal", Utils.getUser());
model.addAttribute("mindmap", mindmap); model.addAttribute("mindmap", mindmap);
@ -77,33 +77,33 @@ public class MindmapController {
} }
@RequestMapping(value = "maps/{id}/export") @RequestMapping(value = "maps/{id}/export")
public String showExportPage(@PathVariable int id, @NotNull Model model) throws IOException { public String showExportPage(@PathVariable int id, @NotNull Model model) throws IOException, AccessDeniedSecurityException {
final Mindmap mindmap = findMindmap(id); final Mindmap mindmap = findMindmap(id);
model.addAttribute("mindmap", mindmap); model.addAttribute("mindmap", mindmap);
return "mindmapExport"; return "mindmapExport";
} }
@RequestMapping(value = "maps/{id}/exportf") @RequestMapping(value = "maps/{id}/exportf")
public String showExportPageFull(@PathVariable int id, @NotNull Model model) throws IOException { public String showExportPageFull(@PathVariable int id, @NotNull Model model) throws IOException, AccessDeniedSecurityException {
showExportPage(id, model); showExportPage(id, model);
return "mindmapExportFull"; return "mindmapExportFull";
} }
@RequestMapping(value = "maps/{id}/share") @RequestMapping(value = "maps/{id}/share")
public String showSharePage(@PathVariable int id, @NotNull Model model) { public String showSharePage(@PathVariable int id, @NotNull Model model) throws AccessDeniedSecurityException {
final Mindmap mindmap = findMindmap(id); final Mindmap mindmap = findMindmap(id);
model.addAttribute("mindmap", mindmap); model.addAttribute("mindmap", mindmap);
return "mindmapShare"; return "mindmapShare";
} }
@RequestMapping(value = "maps/{id}/sharef") @RequestMapping(value = "maps/{id}/sharef")
public String showSharePageFull(@PathVariable int id, @NotNull Model model) { public String showSharePageFull(@PathVariable int id, @NotNull Model model) throws AccessDeniedSecurityException {
showSharePage(id, model); showSharePage(id, model);
return "mindmapShareFull"; return "mindmapShareFull";
} }
@RequestMapping(value = "maps/{id}/publish") @RequestMapping(value = "maps/{id}/publish")
public String showPublishPage(@PathVariable int id, @NotNull Model model,@NotNull HttpServletRequest request) { public String showPublishPage(@PathVariable int id, @NotNull Model model,@NotNull HttpServletRequest request) throws AccessDeniedSecurityException {
final Mindmap mindmap = findMindmap(id); final Mindmap mindmap = findMindmap(id);
model.addAttribute("mindmap", mindmap); model.addAttribute("mindmap", mindmap);
model.addAttribute("baseUrl", request.getAttribute("site.baseurl")); model.addAttribute("baseUrl", request.getAttribute("site.baseurl"));
@ -111,7 +111,7 @@ public class MindmapController {
} }
@RequestMapping(value = "maps/{id}/publishf") @RequestMapping(value = "maps/{id}/publishf")
public String showPublishPageFull(@PathVariable int id, @NotNull Model model,@NotNull HttpServletRequest request) { public String showPublishPageFull(@PathVariable int id, @NotNull Model model,@NotNull HttpServletRequest request) throws AccessDeniedSecurityException {
showPublishPage(id, model,request); showPublishPage(id, model,request);
return "mindmapPublishFull"; return "mindmapPublishFull";
} }
@ -198,7 +198,7 @@ public class MindmapController {
} }
@RequestMapping(value = "maps/{id}/embed") @RequestMapping(value = "maps/{id}/embed")
public ModelAndView showEmbeddedPage(@PathVariable int id, @RequestParam(required = false) Float zoom) { public ModelAndView showEmbeddedPage(@PathVariable int id, @RequestParam(required = false) Float zoom) throws AccessDeniedSecurityException {
ModelAndView view; ModelAndView view;
final MindMapBean mindmap = findMindmapBean(id); final MindMapBean mindmap = findMindmapBean(id);
view = new ModelAndView("mindmapEmbedded", "mindmap", mindmap); view = new ModelAndView("mindmapEmbedded", "mindmap", mindmap);
@ -225,11 +225,19 @@ public class MindmapController {
return "redirect:maps/" + mapId + "/embed?zoom=" + zoom; return "redirect:maps/" + mapId + "/embed?zoom=" + zoom;
} }
private Mindmap findMindmap(long mapId) { @NotNull
return mindmapService.findMindmapById((int) mapId); private Mindmap findMindmap(long mapId) throws AccessDeniedSecurityException {
final Mindmap result = mindmapService.findMindmapById((int) mapId);
if(result==null){
throw new AccessDeniedSecurityException("Map could not be found " + mapId);
}
return result;
} }
private MindMapBean findMindmapBean(long mapId) { @NotNull
return new MindMapBean(findMindmap(mapId), Utils.getUser()); private MindMapBean findMindmapBean(long mapId) throws AccessDeniedSecurityException {
final Mindmap mindmap = findMindmap(mapId);
return new MindMapBean(mindmap, Utils.getUser());
} }
} }