diff --git a/pom.xml b/pom.xml
index e63c3216..4569e0e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,10 +49,6 @@
maven-surefire-plugin
2.12
-
- maven-site-plugin
- 3.0
-
org.apache.maven.plugins
maven-resources-plugin
diff --git a/wise-webapp/src/main/java/com/wisemapping/controller/MindmapSharingController.java b/wise-webapp/src/main/java/com/wisemapping/controller/MindmapSharingController.java
index 028043ba..85258eee 100644
--- a/wise-webapp/src/main/java/com/wisemapping/controller/MindmapSharingController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/controller/MindmapSharingController.java
@@ -85,7 +85,7 @@ public class MindmapSharingController extends BaseMultiActionController {
final ColaborationEmail email = new ColaborationEmail();
email.setSubject(request.getParameter("subject"));
email.setMessage(request.getParameter("message"));
- getMindmapService().addColaborators(mindMap, emails, role, email);
+ getMindmapService().addCollaborators(mindMap, emails, role, email);
return new MindMapBean(mindMap);
}
diff --git a/wise-webapp/src/main/java/com/wisemapping/controller/NewMindmapController.java b/wise-webapp/src/main/java/com/wisemapping/controller/NewMindmapController.java
index d38045a1..49fb469b 100644
--- a/wise-webapp/src/main/java/com/wisemapping/controller/NewMindmapController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/controller/NewMindmapController.java
@@ -51,25 +51,11 @@ public class NewMindmapController
mindmap.setTitle(title);
mindmap.setOwner(user);
- final String xml = getDefaultMindmapXml(title);
+ final String xml = MindMap.getDefaultMindmapXml(title);
mindmap.setXmlStr(xml);
- final User dbUSer = getUserService().getUserBy(user.getId());
-
- service.addMindmap(mindmap, dbUSer);
+ service.addMindmap(mindmap, user);
return new ModelAndView("redirect:editor.htm?mapId=" + mindmap.getId() + "&action=open");
}
-
-
- private String getDefaultMindmapXml(final String title) {
-
- final StringBuffer map = new StringBuffer();
- map.append("");
- return map.toString();
- }
-
}
diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java
index 63daab2a..246f26c0 100644
--- a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java
+++ b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java
@@ -147,7 +147,7 @@ public class MindmapManagerImpl
}
public MindMap getMindmapById(int mindmapId) {
- return (MindMap) getHibernateTemplate().get(MindMap.class, mindmapId);
+ return getHibernateTemplate().get(MindMap.class, mindmapId);
}
public MindMap getMindmapByTitle(final String title, final User user) {
diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java
index 5f4df024..9789307e 100644
--- a/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java
+++ b/wise-webapp/src/main/java/com/wisemapping/dao/UserManagerImpl.java
@@ -22,8 +22,10 @@ import com.wisemapping.model.Collaborator;
import com.wisemapping.model.MindmapUser;
import com.wisemapping.model.User;
import com.wisemapping.model.UserLogin;
+import com.wisemapping.security.CustomPasswordEncoder;
import org.jetbrains.annotations.NotNull;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
//import org.acegisecurity.providers.encoding.PasswordEncoder;
import java.util.List;
@@ -33,12 +35,12 @@ public class UserManagerImpl
extends HibernateDaoSupport
implements UserManager {
-// private PasswordEncoder passwordEncoder;
-//
-// public void setEncoder(PasswordEncoder passwordEncoder)
-// {
-// this.passwordEncoder = passwordEncoder;
-// }
+ private PasswordEncoder passwordEncoder;
+
+ public void setEncoder(PasswordEncoder passwordEncoder)
+ {
+ this.passwordEncoder = passwordEncoder;
+ }
public List getAllUsers() {
return getHibernateTemplate().find("from com.wisemapping.model.User user");
@@ -99,13 +101,13 @@ public class UserManagerImpl
@Override
public void createUser(User user) {
assert user != null : "Trying to store a null user";
-// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
+ user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
getHibernateTemplate().saveOrUpdate(user);
}
@Override
public User createUser(@NotNull User user, @NotNull Collaborator col) {
-// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
+ user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
assert user != null : "Trying to store a null user";
final Set set = col.getMindmapUsers();
@@ -138,7 +140,7 @@ public class UserManagerImpl
public void updateUser(User user) {
assert user != null : "user is null";
-// user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
+ user.setPassword(passwordEncoder.encodePassword(user.getPassword(),null));
getHibernateTemplate().update(user);
}
diff --git a/wise-webapp/src/main/java/com/wisemapping/model/MindMap.java b/wise-webapp/src/main/java/com/wisemapping/model/MindMap.java
index 54a29152..01b08db4 100644
--- a/wise-webapp/src/main/java/com/wisemapping/model/MindMap.java
+++ b/wise-webapp/src/main/java/com/wisemapping/model/MindMap.java
@@ -84,7 +84,11 @@ public class MindMap {
}
public String getXmlStr() throws UnsupportedEncodingException {
- return new String(this.xml, UTF_8);
+ String result = null;
+ if (this.xml != null) {
+ result = new String(this.xml, UTF_8);
+ }
+ return result;
}
public byte[] getZippedXml()
@@ -219,4 +223,15 @@ public class MindMap {
public User getOwner() {
return owner;
}
+
+ public static String getDefaultMindmapXml(@NotNull final String title) {
+
+ final StringBuilder result = new StringBuilder();
+ result.append("");
+ result.append("");
+ return result.toString();
+ }
+
}
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
index 3b9c14fc..b00d277e 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
@@ -26,7 +26,7 @@ public class AdminController extends BaseController {
if (userBy == null) {
throw new IllegalArgumentException("User could not be found");
}
- return new ModelAndView("userView", "user", new RestUser(userBy));
+ return new ModelAndView("userView", "user", new RestUser(userBy));
}
@RequestMapping(method = RequestMethod.GET, value = "admin/users/email/{email}", produces = {"application/json", "text/html", "application/xml"})
@@ -39,9 +39,19 @@ public class AdminController extends BaseController {
return new ModelAndView("userView", "user", new RestUser(user));
}
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/username/{username}", produces = {"application/json", "text/html", "application/xml"})
+ @ResponseBody
+ public ModelAndView getUserByUsername(@PathVariable String username) throws IOException {
+ final User user = userService.getUserByUsername(username);
+ if (user == null) {
+ throw new IllegalArgumentException("User '" + username + "' could not be found");
+ }
+ return new ModelAndView("userView", "user", new RestUser(user));
+ }
+
@RequestMapping(method = RequestMethod.POST, value = "admin/users", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
@ResponseStatus(value = HttpStatus.CREATED)
- public void getUserByEmail(@RequestBody RestUser user, HttpServletResponse response) throws IOException, WiseMappingException {
+ public void createUser(@RequestBody RestUser user, HttpServletResponse response) throws IOException, WiseMappingException {
if (user == null) {
throw new IllegalArgumentException("User could not be found");
}
@@ -52,6 +62,16 @@ public class AdminController extends BaseController {
throw new IllegalArgumentException("User already exists with this email.");
}
+ final String username = user.getUsername();
+ if (username == null || username.isEmpty()) {
+ throw new IllegalArgumentException("username can not be null");
+ }
+
+ if (userService.getUserByUsername(username) != null) {
+ throw new IllegalArgumentException("User already exists with this username.");
+ }
+
+ // Run some other validations ...
final User delegated = user.getDelegated();
final String lastname = delegated.getLastname();
if (lastname == null || lastname.isEmpty()) {
@@ -59,17 +79,13 @@ public class AdminController extends BaseController {
}
final String firstName = delegated.getFirstname();
- if (firstName == null || firstName.isEmpty()) {
- throw new IllegalArgumentException("firstname can not be null");
- }
-
- final String username = delegated.getUsername();
- if (username == null || username.isEmpty()) {
- throw new IllegalArgumentException("username can not be null");
- }
+ if (firstName == null || firstName.isEmpty()) {
+ throw new IllegalArgumentException("firstname can not be null");
+ }
+ // Finally create the user ...
userService.createUser(delegated, false);
- response.setHeader("Location","/service/admin/users/" + user.getId());
+ response.setHeader("Location", "/service/admin/users/" + user.getId());
}
@RequestMapping(method = RequestMethod.PUT, value = "admin/users/{id}/password", consumes = {"text/plain"})
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java
index b6acfd4a..f1c4d9d2 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java
@@ -7,14 +7,17 @@ import com.wisemapping.model.MindmapUser;
import com.wisemapping.model.User;
import com.wisemapping.rest.model.RestMindmap;
import com.wisemapping.rest.model.RestMindmapList;
+import com.wisemapping.rest.model.RestUser;
import com.wisemapping.security.Utils;
import com.wisemapping.service.MindmapService;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
@@ -55,43 +58,83 @@ public class MindmapController extends BaseController {
final MindMap mindMap = mindmapService.getMindmapById(id);
final User user = Utils.getUser();
+ // Validate arguments ...
final String properties = restMindmap.getProperties();
+ if (properties == null) {
+ throw new IllegalArgumentException("Map properties can not be null");
+ }
mindMap.setProperties(properties);
- final Calendar now = Calendar.getInstance();
- mindMap.setLastModificationTime(now);
- mindMap.setLastModifierUser(user.getUsername());
-
- final Calendar lastModification = Calendar.getInstance();
- lastModification.setTime(new Date());
- mindMap.setLastModificationTime(lastModification);
-
+ // Validate content ...
final String xml = restMindmap.getXml();
+ if (xml == null) {
+ throw new IllegalArgumentException("Map xml can not be null");
+ }
mindMap.setXmlStr(xml);
- mindmapService.updateMindmap(mindMap, minor);
+
+ // Update map ...
+ updateMindmap(minor, mindMap, user);
}
- @RequestMapping(method = RequestMethod.POST, value = "/maps", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/xml", consumes = {"application/xml"}, produces = {"application/json", "text/html", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
- public void createMap(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException {
+ public void updateMapXml(@RequestBody String xml, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException {
final MindMap mindMap = mindmapService.getMindmapById(id);
final User user = Utils.getUser();
- final String properties = restMindmap.getProperties();
- mindMap.setProperties(properties);
+ if (xml == null || xml.isEmpty()) {
+ throw new IllegalArgumentException("Map xml can not be null");
+ }
+ mindMap.setXmlStr(xml);
+ // Update map ...
+ updateMindmap(minor, mindMap, user);
+ }
+
+
+ private void updateMindmap(boolean minor, MindMap mindMap, User user) throws WiseMappingException {
final Calendar now = Calendar.getInstance();
mindMap.setLastModificationTime(now);
mindMap.setLastModifierUser(user.getUsername());
-
- final Calendar lastModification = Calendar.getInstance();
- lastModification.setTime(new Date());
- mindMap.setLastModificationTime(lastModification);
-
- final String xml = restMindmap.getXml();
- mindMap.setXmlStr(xml);
mindmapService.updateMindmap(mindMap, minor);
}
+ @RequestMapping(method = RequestMethod.POST, value = "/maps", consumes = {"application/xml", "application/json"})
+ @ResponseStatus(value = HttpStatus.CREATED)
+ public void createMap(@RequestBody RestMindmap restMindmap, @NotNull HttpServletResponse response) throws IOException, WiseMappingException {
+
+ final String title = restMindmap.getTitle();
+ if (title == null || title.isEmpty()) {
+ throw new IllegalArgumentException("Map title can not be null");
+ }
+
+ final String description = restMindmap.getDescription();
+ if (description == null || description.isEmpty()) {
+ throw new IllegalArgumentException("Map details can not be null");
+ }
+
+ // Some basic validations ...
+ final User user = Utils.getUser();
+ final MindMap mindMap = mindmapService.getMindmapByTitle(title, user);
+ if (mindMap != null) {
+ throw new IllegalArgumentException("Map already exists with title '" + title + "'");
+ }
+
+ // If the user has not specified the xml content, add one ...
+ final MindMap delegated = restMindmap.getDelegated();
+ String xml = restMindmap.getXml();
+ if (xml == null || xml.isEmpty()) {
+ xml = MindMap.getDefaultMindmapXml(restMindmap.getTitle());
+ }
+ delegated.setXmlStr(xml);
+ delegated.setOwner(user);
+
+ // Add new mindmap ...
+ mindmapService.addMindmap(delegated, user);
+
+ // Return the new created map ...
+ response.setHeader("Location", "/service/maps/" + delegated.getId());
+ }
+
}
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java
index d9823d0c..7e042bee 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmap.java
@@ -4,7 +4,9 @@ package com.wisemapping.rest.model;
import com.wisemapping.model.MindMap;
import com.wisemapping.model.User;
import org.codehaus.jackson.annotate.*;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -21,6 +23,7 @@ import java.util.Date;
isGetterVisibility = JsonAutoDetect.Visibility.NONE,
getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY
)
+@JsonIgnoreProperties(ignoreUnknown = true)
public class RestMindmap {
@JsonIgnore
@@ -35,10 +38,6 @@ public class RestMindmap {
this.mindmap = mindmap;
}
- public String getOwner() {
- return mindmap.getOwner().getUsername();
- }
-
public Calendar getCreationTime() {
return mindmap.getCreationTime();
}
@@ -79,9 +78,10 @@ public class RestMindmap {
return mindmap.getXmlStr();
}
- public void setXml(@NotNull String xml) throws IOException {
+ public void setXml(@Nullable String xml) throws IOException {
- mindmap.setXmlStr(xml);
+ if (xml != null)
+ mindmap.setXmlStr(xml);
}
public void setId(int id) {
@@ -101,11 +101,10 @@ public class RestMindmap {
}
public void setOwner(User owner) {
- mindmap.setOwner(owner);
+
}
public void setCreator(String creatorUser) {
- mindmap.setCreator(creatorUser);
}
@@ -114,11 +113,9 @@ public class RestMindmap {
}
public void setLastModificationTime(Calendar lastModificationTime) {
- mindmap.setLastModificationTime(lastModificationTime);
}
public void setLastModifierUser(String lastModifierUser) {
- mindmap.setLastModifierUser(lastModifierUser);
}
public String getProperties() {
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java
index 96022155..5e8f4569 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapList.java
@@ -16,8 +16,10 @@ import java.util.List;
@XmlRootElement(name = "maps")
@XmlAccessorType(XmlAccessType.PROPERTY)
-@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE,
- getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY, isGetterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY)
+@JsonAutoDetect(
+ fieldVisibility = JsonAutoDetect.Visibility.NONE,
+ getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY,
+ isGetterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY)
public class RestMindmapList {
private List mindmaps;
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java
index 8984d671..ff59a707 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestUser.java
@@ -4,6 +4,8 @@ package com.wisemapping.rest.model;
import com.wisemapping.model.User;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.jetbrains.annotations.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
@@ -14,8 +16,11 @@ import java.util.Set;
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.PROPERTY)
-@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE,
- getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY, isGetterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY)
+@JsonAutoDetect(
+ fieldVisibility = JsonAutoDetect.Visibility.NONE,
+ getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY,
+ isGetterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY)
+@JsonIgnoreProperties(ignoreUnknown = true)
public class RestUser {
private User user;
diff --git a/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java b/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java
index bc6f311d..a8c24e33 100755
--- a/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java
+++ b/wise-webapp/src/main/java/com/wisemapping/service/MindmapService.java
@@ -40,7 +40,7 @@ public interface MindmapService {
public void addMindmap(MindMap map, User user) throws WiseMappingException;
- public void addColaborators(MindMap mindmap, String[] colaboratorEmails, UserRole role, ColaborationEmail email)
+ public void addCollaborators(MindMap mindmap, String[] colaboratorEmails, UserRole role, ColaborationEmail email)
throws InvalidColaboratorException;
public void addTags(MindMap mindmap, String tags);
@@ -61,7 +61,7 @@ public interface MindmapService {
public boolean isAllowedToColaborate(User user, int mapId, UserRole grantedRole);
- public boolean isAllowedToColaborate(User user, MindMap map, UserRole grantedRole);
+ public boolean isAllowedToCollaborate(User user, MindMap map, UserRole grantedRole);
public void addWelcomeMindmap(User user) throws WiseMappingException;
diff --git a/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java
index c5548a5a..ee8841d3 100755
--- a/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java
+++ b/wise-webapp/src/main/java/com/wisemapping/service/MindmapServiceImpl.java
@@ -22,6 +22,8 @@ import com.wisemapping.dao.MindmapManager;
import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.mail.Mailer;
import com.wisemapping.model.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.util.*;
@@ -36,7 +38,7 @@ public class MindmapServiceImpl
public boolean isAllowedToColaborate(User user, int mapId, UserRole grantedRole) {
final MindMap map = mindmapManager.getMindmapById(mapId);
- return isAllowedToColaborate(user, map, grantedRole);
+ return isAllowedToCollaborate(user, map, grantedRole);
}
public boolean isAllowedToView(User user, int mapId, UserRole grantedRole) {
@@ -51,13 +53,13 @@ public class MindmapServiceImpl
if (map.isPublic()) {
isAllowed = true;
} else if (user != null) {
- isAllowed = isAllowedToColaborate(user, map, grantedRole);
+ isAllowed = isAllowedToCollaborate(user, map, grantedRole);
}
}
return isAllowed;
}
- public boolean isAllowedToColaborate(User user, MindMap map, UserRole grantedRole) {
+ public boolean isAllowedToCollaborate(@NotNull User user, @Nullable MindMap map, UserRole grantedRole) {
boolean isAllowed = false;
if (map != null) {
if (map.getOwner().getId() == user.getId()) {
@@ -99,6 +101,7 @@ public class MindmapServiceImpl
if (mindMap.getTitle() == null || mindMap.getTitle().length() == 0) {
throw new WiseMappingException("The tile can not be empty");
}
+
mindmapManager.updateMindmap(mindMap, saveHistory);
}
@@ -149,7 +152,7 @@ public class MindmapServiceImpl
}
}
- public void addMindmap(MindMap map, User user) throws WiseMappingException {
+ public void addMindmap(@NotNull MindMap map, @NotNull User user) throws WiseMappingException {
final String title = map.getTitle();
@@ -169,13 +172,15 @@ public class MindmapServiceImpl
map.setLastModificationTime(creationTime);
map.setOwner(user);
- final MindmapUser mindmapUser = new MindmapUser(UserRole.OWNER.ordinal(), user, map);
+ // Hack to reload dbuser ...
+ final User dbUser = userService.getUserBy(user.getId());
+ final MindmapUser mindmapUser = new MindmapUser(UserRole.OWNER.ordinal(), dbUser, map);
map.getMindmapUsers().add(mindmapUser);
mindmapManager.addMindmap(user, map);
}
- public void addColaborators(MindMap mindmap, String[] colaboratorEmails, UserRole role, ColaborationEmail email)
+ public void addCollaborators(MindMap mindmap, String[] colaboratorEmails, UserRole role, ColaborationEmail email)
throws InvalidColaboratorException {
if (colaboratorEmails != null && colaboratorEmails.length > 0) {
final Collaborator owner = mindmap.getOwner();
@@ -187,7 +192,7 @@ public class MindmapServiceImpl
}
MindmapUser mindmapUser = getMindmapUserBy(colaboratorEmail, mindmapUsers);
if (mindmapUser == null) {
- addColaborator(colaboratorEmail, role, mindmap, email);
+ addCollaborator(colaboratorEmail, role, mindmap, email);
} else if (mindmapUser.getRole() != role) {
// If the relationship already exists and the role changed then only update the role
mindmapUser.setRoleId(role.ordinal());
@@ -260,7 +265,7 @@ public class MindmapServiceImpl
return mindmapUser;
}
- private void addColaborator(String colaboratorEmail, UserRole role, MindMap mindmap, ColaborationEmail email) {
+ private void addCollaborator(String colaboratorEmail, UserRole role, MindMap mindmap, ColaborationEmail email) {
Collaborator collaborator = mindmapManager.getCollaboratorBy(colaboratorEmail);
if (collaborator == null) {
diff --git a/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java b/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java
index 324d096f..a517b056 100755
--- a/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java
+++ b/wise-webapp/src/main/java/com/wisemapping/validator/MapInfoValidator.java
@@ -64,11 +64,11 @@ public class MapInfoValidator implements Validator {
}
}
ValidatorUtils.rejectIfExceeded(errors,
- "description",
- "The description must have less than "+Constants.MAX_MAP_DESCRIPTION_LENGTH + " characters.",
- desc,
- Constants.MAX_MAP_DESCRIPTION_LENGTH);
- }
+ "description",
+ "The description must have less than " + Constants.MAX_MAP_DESCRIPTION_LENGTH + " characters.",
+ desc,
+ Constants.MAX_MAP_DESCRIPTION_LENGTH);
+ }
}
diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml
index 640ebada..946b5078 100644
--- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml
+++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-model.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml
index 0092731a..3c593de6 100644
--- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml
+++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml
@@ -62,6 +62,5 @@
-
\ No newline at end of file
diff --git a/wise-webapp/src/test/java/com/wisemapping/test/rest/RestAdminITCase.java b/wise-webapp/src/test/java/com/wisemapping/test/rest/RestAdminITCase.java
index 30f4dbee..10c2e047 100644
--- a/wise-webapp/src/test/java/com/wisemapping/test/rest/RestAdminITCase.java
+++ b/wise-webapp/src/test/java/com/wisemapping/test/rest/RestAdminITCase.java
@@ -26,8 +26,8 @@ import java.util.List;
public class RestAdminITCase {
@NonNls
- private static final String HOST_PORT = "http://localhost:8080/";
- private static final String BASE_REST_URL = HOST_PORT + "service";
+ private static final String HOST_PORT = "http://localhost:8080";
+ private static final String BASE_REST_URL = HOST_PORT + "/service";
@Test(dataProvider = "ContentType-Provider-Function")
public void changePassword(final @NotNull MediaType mediaType) { // Configure media types ...
@@ -35,13 +35,7 @@ public class RestAdminITCase {
final RestTemplate templateRest = createTemplate();
// Fill user data ...
- final RestUser restUser = new RestUser();
- final String email = "foo-to-change" + System.nanoTime() + "@example.org";
- restUser.setEmail(email);
- restUser.setUsername("foo");
- restUser.setFirstname("foo first name");
- restUser.setLastname("foo last name");
- restUser.setPassword("foo password");
+ final RestUser restUser = createDummyUser();
// User has been created ...
final URI location = createUser(requestHeaders, templateRest, restUser);
@@ -52,7 +46,6 @@ public class RestAdminITCase {
// Change password ...
requestHeaders.setContentType(MediaType.TEXT_PLAIN);
HttpEntity createUserEntity = new HttpEntity("some-new-password", requestHeaders);
- System.out.println("Changed password to:" + email);
templateRest.put(BASE_REST_URL + "/admin/users/{id}/password", createUserEntity, result.getBody().getId());
}
@@ -62,14 +55,7 @@ public class RestAdminITCase {
final HttpHeaders requestHeaders = createHeaders(mediaType);
final RestTemplate templateRest = createTemplate();
- // Fill user data ...
- final RestUser restUser = new RestUser();
- final String email = "foo-to-delete" + System.nanoTime() + "@example.org";
- restUser.setEmail(email);
- restUser.setUsername("foo");
- restUser.setFirstname("foo first name");
- restUser.setLastname("foo last name");
- restUser.setPassword("foo password");
+ final RestUser restUser = createDummyUser();
// User has been created ...
final URI location = createUser(requestHeaders, templateRest, restUser);
@@ -89,22 +75,33 @@ public class RestAdminITCase {
}
}
+
@Test(dataProvider = "ContentType-Provider-Function")
- public void createNewUser(final @NotNull MediaType mediaType) {
+ public void findUserByUsername(final @NotNull MediaType mediaType) { // Configure media types ...
+ final HttpHeaders requestHeaders = createHeaders(mediaType);
+ final RestTemplate templateRest = createTemplate();
+
+ final RestUser restUser = createDummyUser();
+
+ // User has been created ...
+ createUser(requestHeaders, templateRest, restUser);
+
+ // Check that the user has been created ...
+ HttpEntity findUserEntity = new HttpEntity(requestHeaders);
+ final ResponseEntity responseEntity = templateRest.exchange(BASE_REST_URL + "/admin/users/username/" + restUser.getUsername(), HttpMethod.GET, findUserEntity, RestUser.class);
+
+ assertEquals(responseEntity.getBody().getUsername(), restUser.getUsername());
+
+ }
+
+ public String createNewUser(final @NotNull MediaType mediaType) {
// Configure media types ...
final HttpHeaders requestHeaders = createHeaders(mediaType);
final RestTemplate templateRest = createTemplate();
// Fill user data ...
- final RestUser restUser = new RestUser();
-
- final String email = "foo" + System.nanoTime() + "@example.org";
- restUser.setEmail(email);
- restUser.setUsername("foo");
- restUser.setFirstname("foo first name");
- restUser.setLastname("foo last name");
- restUser.setPassword("foo password");
+ final RestUser restUser = createDummyUser();
// Create a new user ...
final URI location = createUser(requestHeaders, templateRest, restUser);
@@ -113,16 +110,21 @@ public class RestAdminITCase {
ResponseEntity result = findUser(requestHeaders, templateRest, location);
assertEquals(result.getBody(), restUser, "Returned object object seems not be the same.");
-
// Find by email and check ...
- result = findUserByEmail(requestHeaders, templateRest, email);
+ result = findUserByEmail(requestHeaders, templateRest, restUser.getEmail());
assertEquals(result.getBody(), restUser, "Returned object object seems not be the same.");
+ return restUser.getEmail();
+ }
+
+ @Test(dataProvider = "ContentType-Provider-Function")
+ public void createUser(final @NotNull MediaType mediaType) {
+ this.createNewUser(mediaType);
}
private ResponseEntity findUser(HttpHeaders requestHeaders, RestTemplate templateRest, URI location) {
HttpEntity findUserEntity = new HttpEntity(requestHeaders);
- final String url = "http://localhost:8080" + location;
+ final String url = HOST_PORT + location;
return templateRest.exchange(url, HttpMethod.GET, findUserEntity, RestUser.class);
}
@@ -130,7 +132,7 @@ public class RestAdminITCase {
HttpEntity findUserEntity = new HttpEntity(requestHeaders);
// Add extension only to avoid the fact that the last part is extracted ...
- final String url = "http://localhost:8080/service/admin/users/email/{email}.json";
+ final String url = BASE_REST_URL + "/admin/users/email/{email}.json";
return templateRest.exchange(url, HttpMethod.GET, findUserEntity, RestUser.class, email);
}
@@ -139,7 +141,7 @@ public class RestAdminITCase {
return templateRest.postForLocation(BASE_REST_URL + "/admin/users", createUserEntity);
}
- private HttpHeaders createHeaders(MediaType mediaType) {
+ private HttpHeaders createHeaders(@NotNull MediaType mediaType) {
List acceptableMediaTypes = new ArrayList();
acceptableMediaTypes.add(mediaType);
final HttpHeaders requestHeaders = new HttpHeaders();
@@ -164,6 +166,19 @@ public class RestAdminITCase {
return new RestTemplate(s);
}
+ private RestUser createDummyUser() {
+ final RestUser restUser = new RestUser();
+ final String username = "foo-to-delete" + System.nanoTime();
+ final String email = username + "@example.org";
+ restUser.setEmail(email);
+ restUser.setUsername(username);
+ restUser.setFirstname("foo first name");
+ restUser.setLastname("foo last name");
+ restUser.setPassword("admin");
+ return restUser;
+ }
+
+
@DataProvider(name = "ContentType-Provider-Function")
public Object[][] contentTypes() {
return new Object[][]{{MediaType.APPLICATION_XML}, {MediaType.APPLICATION_JSON}};
diff --git a/wise-webapp/src/test/java/com/wisemapping/test/rest/RestMindmapTCase.java b/wise-webapp/src/test/java/com/wisemapping/test/rest/RestMindmapTCase.java
index fd46529e..920721b3 100644
--- a/wise-webapp/src/test/java/com/wisemapping/test/rest/RestMindmapTCase.java
+++ b/wise-webapp/src/test/java/com/wisemapping/test/rest/RestMindmapTCase.java
@@ -1,6 +1,7 @@
package com.wisemapping.test.rest;
+import com.wisemapping.rest.model.RestMindmap;
import com.wisemapping.rest.model.RestUser;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -8,6 +9,8 @@ import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.security.crypto.codec.Base64;
import org.springframework.web.client.RestTemplate;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeSuite;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -24,32 +27,102 @@ import static org.testng.Assert.fail;
@Test
public class RestMindmapTCase {
- @NonNls
- private static final String HOST_PORT = "http://localhost:8080/";
- private static final String BASE_REST_URL = HOST_PORT + "service";
+ private String userEmail = "admin@wisemapping.com";
+ private static final String HOST_PORT = "http://localhost:8080";
+ private static final String BASE_REST_URL = HOST_PORT + "/service";
- private URI createUser(@NotNull HttpHeaders requestHeaders, @NotNull RestTemplate templateRest) {
- final RestUser restUser = new RestUser();
- final String email = "foo-to-delete" + System.nanoTime() + "@example.org";
- restUser.setEmail(email);
- restUser.setUsername("foo");
- restUser.setFirstname("foo first name");
- restUser.setLastname("foo last name");
- restUser.setPassword("foo password");
+ @BeforeClass
+ void createUser() {
- HttpEntity createUserEntity = new HttpEntity(restUser, requestHeaders);
- return templateRest.postForLocation(BASE_REST_URL + "/admin/users", createUserEntity);
+ final RestAdminITCase restAdminITCase = new RestAdminITCase();
+ userEmail = restAdminITCase.createNewUser(MediaType.APPLICATION_JSON);
}
-
@Test(dataProvider = "ContentType-Provider-Function")
public void createMap(final @NotNull MediaType mediaType) { // Configure media types ...
final HttpHeaders requestHeaders = createHeaders(mediaType);
final RestTemplate templateRest = createTemplate();
+ // Create a sample map ...
+ final RestMindmap restMindmap = new RestMindmap();
+ final String title = "My Map " + mediaType.toString();
+ restMindmap.setTitle(title);
+ restMindmap.setDescription("My Map Desc");
+
+ // Create a new map ...
+ HttpEntity createUserEntity = new HttpEntity(restMindmap, requestHeaders);
+ final URI resourceLocation = templateRest.postForLocation(BASE_REST_URL + "/maps", createUserEntity);
+
+ // Check that the map has been created ...
+ HttpEntity findUserEntity = new HttpEntity(requestHeaders);
+ final ResponseEntity response = templateRest.exchange(HOST_PORT + resourceLocation.toString(), HttpMethod.GET, findUserEntity, RestMindmap.class);
+ assertEquals(response.getBody().getTitle(), title);
}
- private HttpHeaders createHeaders(MediaType mediaType) {
+
+ @Test(dataProvider = "ContentType-Provider-Function")
+ public void updateMapXml(final @NotNull MediaType mediaType) throws IOException { // Configure media types ...
+ final HttpHeaders requestHeaders = createHeaders(mediaType);
+ final RestTemplate templateRest = createTemplate();
+
+ // Create a sample map ...
+ final RestMindmap restMindmap = new RestMindmap();
+ final String title = "Update XML sample " + mediaType.toString();
+ restMindmap.setTitle(title);
+ restMindmap.setDescription("My Map Desc");
+
+ // Create a new map ...
+ HttpEntity createUserEntity = new HttpEntity(restMindmap, requestHeaders);
+ final URI resourceLocation = templateRest.postForLocation(BASE_REST_URL + "/maps", createUserEntity);
+
+ // Update map xml content ...
+ final String resourceUrl = HOST_PORT + resourceLocation.toString();
+ requestHeaders.setContentType(MediaType.APPLICATION_XML);
+ final String newXmlContent = "";
+ HttpEntity updateEntity = new HttpEntity(newXmlContent, requestHeaders);
+ templateRest.put(resourceUrl + "/xml", updateEntity);
+
+ // Check that the map has been updated ...
+ HttpEntity findUserEntity = new HttpEntity(requestHeaders);
+ final ResponseEntity response = templateRest.exchange(HOST_PORT + resourceLocation.toString(), HttpMethod.GET, findUserEntity, RestMindmap.class);
+ assertEquals(response.getBody().getXml(), newXmlContent);
+ }
+
+
+ @Test(dataProvider = "ContentType-Provider-Function")
+ public void updateMap(final @NotNull MediaType mediaType) throws IOException { // Configure media types ...
+ final HttpHeaders requestHeaders = createHeaders(mediaType);
+ final RestTemplate templateRest = createTemplate();
+
+ // Create a sample map ...
+ final RestMindmap newRestMindmap = new RestMindmap();
+ final String title = "Update sample " + mediaType.toString();
+ newRestMindmap.setTitle(title);
+ newRestMindmap.setDescription("My Map Desc");
+
+ // Create a new map ...
+ final HttpEntity createUserEntity = new HttpEntity(newRestMindmap, requestHeaders);
+ final URI resourceLocation = templateRest.postForLocation(BASE_REST_URL + "/maps", createUserEntity);
+
+ // Build map to update ...
+ final RestMindmap mapToUpdate = new RestMindmap();
+ mapToUpdate.setXml("");
+ mapToUpdate.setProperties("{zoom:x}");
+
+ // Update map ...
+ final String resourceUrl = HOST_PORT + resourceLocation.toString();
+ requestHeaders.setContentType(MediaType.APPLICATION_XML);
+ final HttpEntity updateEntity = new HttpEntity(mapToUpdate, requestHeaders);
+ templateRest.put(resourceUrl, updateEntity);
+
+ // Check that the map has been updated ...
+ HttpEntity findUserEntity = new HttpEntity(requestHeaders);
+ final ResponseEntity response = templateRest.exchange(HOST_PORT + resourceLocation.toString(), HttpMethod.GET, findUserEntity, RestMindmap.class);
+ assertEquals(response.getBody().getXml(), mapToUpdate.getXml());
+ assertEquals(response.getBody().getProperties(), mapToUpdate.getProperties());
+ }
+
+ private HttpHeaders createHeaders(@NotNull MediaType mediaType) {
List acceptableMediaTypes = new ArrayList();
acceptableMediaTypes.add(mediaType);
final HttpHeaders requestHeaders = new HttpHeaders();
@@ -65,11 +138,10 @@ public class RestMindmapTCase {
super.prepareConnection(connection, httpMethod);
//Basic Authentication for Police API
- String authorisation = "admin@wisemapping.org" + ":" + "admin";
- byte[] encodedAuthorisation = Base64.encode(authorisation.getBytes());
+ String authorization = userEmail + ":" + "admin";
+ byte[] encodedAuthorisation = Base64.encode(authorization.getBytes());
connection.setRequestProperty("Authorization", "Basic " + new String(encodedAuthorisation));
}
-
};
return new RestTemplate(s);
}