+
+CURL Usage Examples
+-------------
+
+The following variables should be replaced:
- host.name: Host name where WiseMapping is deployed. Default Value: localhost
- host.post: Post number where WiseMapping is deployed. Default Value: 8080
-- context.path: Context Path name where the application is deployed. Default Value: wisemapping
-
-Supported Operations
-----------------------
+- context.path: Context Path name where the application is deployed. Default Value: wisemapping
Obtaining user information by email:
* Template Path: /service/admin/users/email/{user.email}.json
@@ -30,3 +38,5 @@ Creating a new user:
* Template Path: /service/admin/users/
* Method: Post
* curl "http://{host.name}:{host.port}/{context.path}/service/admin/users" --request post --basic -u "admin@wisemapping.org:admin" -H "Content-Type:application/json" --data '{"email": "te2@mydomain.de", "lastname": "lastname", "firstname":"myfirstname","password":"password"}'
+
+
diff --git a/wise-webapp/pom.xml b/wise-webapp/pom.xml
index 44322a5b..183272ce 100644
--- a/wise-webapp/pom.xml
+++ b/wise-webapp/pom.xml
@@ -288,7 +288,6 @@
jackson-core-asl1.9.4
-
org.codehaus.jacksonjackson-mapper-asl
@@ -319,106 +318,60 @@
jsoup1.7.1
+
+ com.mangofactory
+ swagger-springmvc
+ 0.6.6
+
-
-
- hsqldb
-
- true
-
-
-
-
- org.codehaus.mojo
- sql-maven-plugin
- 1.5
-
-
- org.hsqldb.jdbc.JDBCDriver
- jdbc:hsqldb:file:${project.build.directory}/db/wisemapping
- sa
-
-
-
-
- org.hsqldb
- hsqldb
- 2.2.8
-
-
-
-
-
-
- drop-schemas
- prepare-package
-
- execute
-
-
- continue
- descending
-
- ${project.basedir}
-
- config/database/hsql/drop-schemas.sql
- config/database/hsql/create-schemas.sql
- config/database/hsql/atest-data.sql
-
-
-
-
-
-
-
-
-
-
- mysqldb
-
- false
-
-
-
-
- org.codehaus.mojo
- sql-maven-plugin
- 1.5
-
-
- mysql
- mysql-connector-java
- 5.1.5
-
-
-
-
- init-schema
-
- execute
-
- prepare-package
-
-
-
- com.mysql.jdbc.Driver
- root
-
- jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=UTF-8
- false
-
- config/database/mysql/create-database.sql
- config/database/mysql/create-schemas.sql
- config/database/mysql/test-data.sql
-
-
-
-
-
-
-
+
+ org.codehaus.mojo
+ sql-maven-plugin
+ 1.5
+
+
+ org.hsqldb.jdbc.JDBCDriver
+ jdbc:hsqldb:file:${project.build.directory}/db/wisemapping
+ sa
+
+
+
+
+ mysql
+ mysql-connector-java
+ 5.1.5
+
+
+ org.hsqldb
+ hsqldb
+ 2.2.8
+
+
+
+
+
+ drop-schemas
+ prepare-package
+
+ execute
+
+
+ continue
+ descending
+
+ ${project.basedir}
+
+ config/database/hsql/drop-schemas.sql
+ config/database/hsql/create-schemas.sql
+ config/database/hsql/apopulate-schemas.sql
+
+
+
+
+
+ org.codehaus.mojonative2ascii-maven-plugin
@@ -505,6 +458,20 @@
maven-surefire-plugin
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+
+ /wisemapping
+ ${project.build.directory}/wisemapping.war
+ war
+ true
+
+ ${project.build.directory}
+
+
+
+
org.mortbay.jettyjetty-maven-plugin
diff --git a/wise-webapp/src/main/java/com/wisemapping/model/User.java b/wise-webapp/src/main/java/com/wisemapping/model/User.java
index 4e34dd71..81f54cf1 100644
--- a/wise-webapp/src/main/java/com/wisemapping/model/User.java
+++ b/wise-webapp/src/main/java/com/wisemapping/model/User.java
@@ -120,7 +120,8 @@ public class User
}
public char getAutheticationTypeCode() {
- return this.authenticationType != null ? this.authenticationType.getCode() : null;
+ // Default authentication is database ....
+ return this.authenticationType != null ? this.authenticationType.getCode() : AuthenticationType.DATABASE.getCode();
}
public void setAutheticationTypeCode(char code) {
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java b/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java
index 6084fafb..52413781 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/AccountController.java
@@ -18,6 +18,7 @@
package com.wisemapping.rest;
+import com.mangofactory.swagger.annotations.ApiIgnore;
import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.mail.NotificationService;
import com.wisemapping.model.Collaboration;
@@ -27,6 +28,7 @@ import com.wisemapping.rest.model.RestLogItem;
import com.wisemapping.security.Utils;
import com.wisemapping.service.MindmapService;
import com.wisemapping.service.UserService;
+import com.wordnik.swagger.annotations.Api;
import org.apache.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +43,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
+@Api(value="UserApi",description = "Account Account Related Objects.")
@Controller
public class AccountController extends BaseController {
@Qualifier("userService")
@@ -121,6 +124,7 @@ public class AccountController extends BaseController {
}
+ @ApiIgnore
@RequestMapping(method = RequestMethod.POST, value = "logger/editor", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void logError(@RequestBody RestLogItem item, @NotNull HttpServletRequest request) {
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 206b90e8..36f4620a 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/AdminController.java
@@ -18,18 +18,30 @@
package com.wisemapping.rest;
+import com.mangofactory.swagger.annotations.ApiModel;
import com.wisemapping.exceptions.WiseMappingException;
-import com.wisemapping.model.*;
+import com.wisemapping.model.AuthenticationType;
+import com.wisemapping.model.Collaboration;
+import com.wisemapping.model.Mindmap;
+import com.wisemapping.model.User;
import com.wisemapping.rest.model.RestUser;
import com.wisemapping.service.MindmapService;
import com.wisemapping.service.UserService;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -38,6 +50,7 @@ import java.util.Calendar;
import java.util.List;
import java.util.regex.Pattern;
+@Api(value = "AdminApi", description = "Administrative Related Objects.")
@Controller
public class AdminController extends BaseController {
@Qualifier("userService")
@@ -48,30 +61,32 @@ public class AdminController extends BaseController {
@Autowired
private MindmapService mindmapService;
-
- @RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "text/html", "application/xml"})
+ @ApiOperation("Note: Administration permissions required.")
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/{id}", produces = {"application/json", "application/xml"})
@ResponseBody
- public ModelAndView getUserById(@PathVariable long id) throws IOException {
+ public RestUser getUserById(@PathVariable @ApiParam(required = true, value = "User Id", allowableValues = "range[1," + Long.MAX_VALUE + "]") long id) throws IOException {
final User userBy = userService.getUserBy(id);
if (userBy == null) {
throw new IllegalArgumentException("User could not be found");
}
- return new ModelAndView("userView", "user", new RestUser(userBy));
+ return new RestUser(userBy);
}
- @RequestMapping(method = RequestMethod.GET, value = "admin/users/email/{email}", produces = {"application/json", "text/html", "application/xml"})
+ @ApiOperation("Note: Administration permissions required.")
+ @RequestMapping(method = RequestMethod.GET, value = "admin/users/email/{email}", produces = {"application/json", "application/xml"})
@ResponseBody
- public ModelAndView getUserByEmail(@PathVariable String email) throws IOException {
+ public RestUser getUserByEmail(@PathVariable String email) throws IOException {
final User user = userService.getUserBy(email);
if (user == null) {
throw new IllegalArgumentException("User '" + email + "' could not be found");
}
- return new ModelAndView("userView", "user", new RestUser(user));
+ return new RestUser(user);
}
- @RequestMapping(method = RequestMethod.POST, value = "admin/users", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
+ @ApiOperation("Note: Administration permissions required.")
+ @RequestMapping(method = RequestMethod.POST, value = "admin/users", consumes = {"application/xml", "application/json"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.CREATED)
- public void createUser(@RequestBody RestUser user, HttpServletResponse response) throws WiseMappingException {
+ public void createUser(@RequestBody @ApiParam(required = true) RestUser user, HttpServletResponse response) throws WiseMappingException {
if (user == null) {
throw new IllegalArgumentException("User could not be found");
}
@@ -100,9 +115,10 @@ public class AdminController extends BaseController {
response.setHeader("Location", "/service/admin/users/" + user.getId());
}
+ @ApiOperation("Note: Administration permissions required.")
@RequestMapping(method = RequestMethod.PUT, value = "admin/users/{id}/password", consumes = {"text/plain"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
- public void changePassword(@RequestBody String password, @PathVariable long id) throws WiseMappingException {
+ public void changePassword(@RequestBody @ApiParam(required = true) String password, @PathVariable @ApiParam(required = true, value = "User Id", allowableValues = "range[1," + Long.MAX_VALUE + "]") long id) throws WiseMappingException {
if (password == null) {
throw new IllegalArgumentException("Password can not be null");
}
@@ -115,6 +131,7 @@ public class AdminController extends BaseController {
userService.changePassword(user);
}
+ @ApiOperation("Note: Administration permissions required.")
@RequestMapping(method = RequestMethod.DELETE, value = "admin/users/{id}")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void deleteUserByEmail(@PathVariable long id) throws WiseMappingException {
@@ -132,6 +149,7 @@ public class AdminController extends BaseController {
userService.deleteUser(user);
}
+ @ApiOperation("Note: Administration permissions required.")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
@RequestMapping(method = RequestMethod.GET, value = "admin/database/purge")
public void purgeDB(@RequestParam(required = true) Integer minUid, @RequestParam(required = true) Integer maxUid, @RequestParam(required = true) Boolean apply) throws WiseMappingException, UnsupportedEncodingException {
@@ -139,7 +157,6 @@ public class AdminController extends BaseController {
for (int i = minUid; i < maxUid; i++) {
try {
-
System.out.println("Looking for user:" + i);
final User user = userService.getUserBy(i);
if (user != null) {
@@ -186,6 +203,7 @@ public class AdminController extends BaseController {
}
}
+ @ApiOperation("Note: Administration permissions required.")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
@RequestMapping(method = RequestMethod.GET, value = "admin/database/purge/history")
public void purgeHistory(@RequestParam(required = true) Integer mapId) throws WiseMappingException, IOException {
@@ -193,7 +211,6 @@ public class AdminController extends BaseController {
mindmapService.purgeHistory(mapId);
}
-
private boolean isWelcomeMap(@NotNull Mindmap mindmap) throws UnsupportedEncodingException {
// Is welcome map ?
final String xmlStr = mindmap.getXmlStr();
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 009a732e..b97f65e1 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java
@@ -18,20 +18,37 @@
package com.wisemapping.rest;
-
-import com.wisemapping.exceptions.*;
+import com.mangofactory.swagger.annotations.ApiIgnore;
+import com.wisemapping.exceptions.ImportUnexpectedException;
+import com.wisemapping.exceptions.MapCouldNotFoundException;
+import com.wisemapping.exceptions.MultipleSessionsOpenException;
+import com.wisemapping.exceptions.SessionExpiredException;
+import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.importer.ImportFormat;
import com.wisemapping.importer.Importer;
import com.wisemapping.importer.ImporterException;
import com.wisemapping.importer.ImporterFactory;
-import com.wisemapping.model.*;
-import com.wisemapping.rest.model.*;
+import com.wisemapping.model.Collaboration;
+import com.wisemapping.model.CollaborationProperties;
+import com.wisemapping.model.CollaborationRole;
+import com.wisemapping.model.MindMapHistory;
+import com.wisemapping.model.Mindmap;
+import com.wisemapping.model.User;
+import com.wisemapping.rest.model.RestCollaboration;
+import com.wisemapping.rest.model.RestCollaborationList;
+import com.wisemapping.rest.model.RestMindmap;
+import com.wisemapping.rest.model.RestMindmapHistory;
+import com.wisemapping.rest.model.RestMindmapHistoryList;
+import com.wisemapping.rest.model.RestMindmapInfo;
+import com.wisemapping.rest.model.RestMindmapList;
import com.wisemapping.security.Utils;
import com.wisemapping.service.CollaborationException;
import com.wisemapping.service.LockInfo;
import com.wisemapping.service.LockManager;
import com.wisemapping.service.MindmapService;
import com.wisemapping.validator.MapInfoValidator;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiParam;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -39,15 +56,28 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+@Api(value = "mindmap", description = "User Mindmap Objects.")
@Controller
public class MindmapController extends BaseController {
@@ -58,12 +88,10 @@ public class MindmapController extends BaseController {
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/json", "application/xml", "text/html"})
@ResponseBody
- public ModelAndView retrieve(@PathVariable int id) throws WiseMappingException {
+ public RestMindmap retrieve(@PathVariable int id) throws WiseMappingException {
final User user = Utils.getUser();
final Mindmap mindMap = findMindmapById(id);
- final RestMindmap map = new RestMindmap(mindMap, user);
-
- return new ModelAndView("mapView", "map", map);
+ return new RestMindmap(mindMap, user);
}
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/wisemapping+xml"}, params = {"download=wxml"})
@@ -88,7 +116,6 @@ public class MindmapController extends BaseController {
return new ModelAndView("transformViewFreemind", values);
}
-
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"text/plain"}, params = {"download=txt"})
@ResponseBody
public ModelAndView retrieveDocumentAsText(@PathVariable int id) throws IOException, MapCouldNotFoundException {
@@ -109,7 +136,6 @@ public class MindmapController extends BaseController {
return new ModelAndView("transformViewMMap", values);
}
-
@RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/vnd.ms-excel"}, params = {"download=xls"})
@ResponseBody
public ModelAndView retrieveDocumentAsExcel(@PathVariable int id) throws IOException, MapCouldNotFoundException {
@@ -130,9 +156,8 @@ public class MindmapController extends BaseController {
return new ModelAndView("transformViewOdt", values);
}
-
- @RequestMapping(method = RequestMethod.GET, value = "/maps/", produces = {"application/json", "text/html", "application/xml"})
- public ModelAndView retrieveList(@RequestParam(required = false) String q) throws IOException {
+ @RequestMapping(method = RequestMethod.GET, value = "/maps/", produces = {"application/json", "application/xml"})
+ public RestMindmapList retrieveList(@RequestParam(required = false) String q) throws IOException {
final User user = Utils.getUser();
final MindmapFilter filter = MindmapFilter.parse(q);
@@ -145,22 +170,19 @@ public class MindmapController extends BaseController {
mindmaps.add(mindmap);
}
}
- final RestMindmapList restMindmapList = new RestMindmapList(mindmaps, user);
- return new ModelAndView("mapsView", "list", restMindmapList);
+ return new RestMindmapList(mindmaps, user);
}
-
- @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}/history", produces = {"application/json", "text/html", "application/xml"})
- public ModelAndView retrieveHistory(@PathVariable int id) throws IOException {
+ @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}/history", produces = {"application/json", "application/xml"})
+ public RestMindmapHistoryList retrieveHistory(@PathVariable int id) throws IOException {
final List histories = mindmapService.findMindmapHistory(id);
final RestMindmapHistoryList result = new RestMindmapHistoryList();
for (MindMapHistory history : histories) {
result.addHistory(new RestMindmapHistory(history));
}
- return new ModelAndView("historyView", "list", result);
+ return result;
}
-
@RequestMapping(value = "maps/{id}/history/{hid}", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateRevertMindmap(@PathVariable int id, @PathVariable String hid) throws WiseMappingException, IOException {
@@ -180,9 +202,9 @@ public class MindmapController extends BaseController {
}
}
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/document", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/document", consumes = {"application/xml", "application/json"}, produces = {"application/json", "application/xml"})
@ResponseBody
- public long updateDocument(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor, @RequestParam(required = false) Long timestamp, @RequestParam(required = false) Long session) throws WiseMappingException, IOException {
+ public Long updateDocument(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor, @RequestParam(required = false) Long timestamp, @RequestParam(required = false) Long session) throws WiseMappingException, IOException {
final Mindmap mindmap = findMindmapById(id);
final User user = Utils.getUser();
@@ -194,7 +216,9 @@ public class MindmapController extends BaseController {
}
// Could the map be updated ?
- verifyLock(mindmap, user, session, timestamp);
+ if (session != null) {
+ verifyLock(mindmap, user, session, timestamp);
+ }
// Update collaboration properties ...
final CollaborationProperties collaborationProperties = mindmap.findCollaborationProperties(user);
@@ -212,10 +236,15 @@ public class MindmapController extends BaseController {
// Update edition timeout ...
final LockManager lockManager = mindmapService.getLockManager();
- final LockInfo lockInfo = lockManager.updateExpirationTimeout(mindmap, user);
- return lockInfo.getTimestamp();
+ long result = -1;
+ if (session != null) {
+ final LockInfo lockInfo = lockManager.updateExpirationTimeout(mindmap, user);
+ result = lockInfo.getTimestamp();
+ }
+ return result;
}
+ @ApiIgnore
@RequestMapping(method = RequestMethod.GET, value = {"/maps/{id}/document/xml", "/maps/{id}/document/xml-pub"}, consumes = {"text/plain"}, produces = {"application/xml"})
@ResponseBody
public byte[] retrieveDocument(@PathVariable int id, @NotNull HttpServletResponse response) throws WiseMappingException, IOException {
@@ -227,6 +256,22 @@ public class MindmapController extends BaseController {
return xmlStr.getBytes("UTF-8");
}
+ @ApiIgnore
+ @RequestMapping(method = RequestMethod.PUT, value = {"/maps/{id}/document/xml"}, consumes = {"text/plain"})
+ @ResponseBody
+ public void updateDocument(@PathVariable int id, @RequestBody String xmlDoc) throws WiseMappingException, IOException {
+
+ final Mindmap mindmap = findMindmapById(id);
+ final User user = Utils.getUser();
+ if (xmlDoc != null && !xmlDoc.isEmpty()) {
+ mindmap.setXmlStr(xmlDoc);
+ }
+
+ mindmap.setXmlStr(xmlDoc);
+ saveMindmapDocument(false,mindmap,user);
+ }
+
+
@RequestMapping(method = RequestMethod.GET, value = {"/maps/{id}/{hid}/document/xml"}, consumes = {"text/plain"}, produces = {"application/xml"})
@ResponseBody
public byte[] retrieveDocument(@PathVariable int id, @PathVariable int hid, @NotNull HttpServletResponse response) throws WiseMappingException, IOException {
@@ -236,7 +281,6 @@ public class MindmapController extends BaseController {
return mindmapHistory.getUnzipXml();
}
-
private void verifyLock(@NotNull Mindmap mindmap, @NotNull User user, long session, long timestamp) throws WiseMappingException {
// The lock was lost, reclaim as the ownership of it.
@@ -267,9 +311,9 @@ public class MindmapController extends BaseController {
/**
* The intention of this method is the update of several properties at once ...
*/
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}", consumes = {"application/xml", "application/json"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}", consumes = {"application/xml", "application/json"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
- public void update(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException {
+ public void updateProperties(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException {
final Mindmap mindmap = findMindmapById(id);
final User user = Utils.getUser();
@@ -319,8 +363,7 @@ public class MindmapController extends BaseController {
return result;
}
-
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/title", consumes = {"text/plain"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/title", consumes = {"text/plain"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateTitle(@RequestBody String title, @PathVariable int id) throws WiseMappingException {
@@ -339,7 +382,7 @@ public class MindmapController extends BaseController {
mindmapService.updateMindmap(mindMap, !true);
}
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/collabs", consumes = {"application/json", "application/xml"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/collabs", consumes = {"application/json", "application/xml"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateCollabs(@PathVariable int id, @NotNull @RequestBody RestCollaborationList restCollabs) throws CollaborationException, MapCouldNotFoundException {
final Mindmap mindMap = findMindmapById(id);
@@ -379,9 +422,8 @@ public class MindmapController extends BaseController {
}
}
-
- @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}/collabs", produces = {"application/json", "text/html", "application/xml"})
- public ModelAndView retrieveList(@PathVariable int id) throws MapCouldNotFoundException {
+ @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}/collabs", produces = {"application/json", "application/xml"})
+ public RestCollaborationList retrieveList(@PathVariable int id) throws MapCouldNotFoundException {
final Mindmap mindMap = findMindmapById(id);
final Set collaborations = mindMap.getCollaborations();
@@ -390,14 +432,13 @@ public class MindmapController extends BaseController {
collabs.add(new RestCollaboration(collaboration));
}
- final RestCollaborationList restCollaborationList = new RestCollaborationList();
- restCollaborationList.setCollaborations(collabs);
+ final RestCollaborationList result = new RestCollaborationList();
+ result.setCollaborations(collabs);
- return new ModelAndView("collabsView", "list", restCollaborationList);
+ return result;
}
-
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/description", consumes = {"text/plain"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/description", consumes = {"text/plain"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateDescription(@RequestBody String description, @PathVariable int id) throws WiseMappingException {
@@ -410,7 +451,7 @@ public class MindmapController extends BaseController {
mindmapService.updateMindmap(mindMap, !true);
}
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/publish", consumes = {"text/plain"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/publish", consumes = {"text/plain"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updatePublishState(@RequestBody String value, @PathVariable int id) throws WiseMappingException {
@@ -435,9 +476,9 @@ public class MindmapController extends BaseController {
mindmapService.removeMindmap(mindmap, user);
}
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/starred", consumes = {"text/plain"}, produces = {"application/json", "text/html", "application/xml"})
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/starred", consumes = {"text/plain"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
- public void updateStarredState(@RequestBody String value, @PathVariable int id) throws WiseMappingException {
+ public void updateStarredState(@RequestBody @ApiParam(defaultValue = "false", allowableValues = "true,false") String value, @PathVariable int id) throws WiseMappingException {
final Mindmap mindmap = findMindmapById(id);
final User user = Utils.getUser();
@@ -452,7 +493,8 @@ public class MindmapController extends BaseController {
mindmapService.updateCollaboration(user, collaboration);
}
- @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/lock", consumes = {"text/plain"}, produces = {"application/json", "text/html", "application/xml"})
+ @ApiIgnore
+ @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/lock", consumes = {"text/plain"}, produces = {"application/json", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateMapLock(@RequestBody String value, @PathVariable int id) throws IOException, WiseMappingException {
final User user = Utils.getUser();
@@ -467,6 +509,7 @@ public class MindmapController extends BaseController {
}
}
+ @ApiIgnore
@RequestMapping(method = RequestMethod.DELETE, value = "/maps/batch")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void batchDelete(@RequestParam(required = true) String ids) throws IOException, WiseMappingException {
@@ -535,7 +578,7 @@ public class MindmapController extends BaseController {
createMap(new RestMindmap(mindMap, null), response, title, description);
}
- @RequestMapping(method = RequestMethod.POST, value = "/maps/{id}", consumes = {"application/xml", "application/json"})
+ @RequestMapping(method = RequestMethod.POST, value = "/maps/{id}", consumes = {"application/xml", "application/json"},produces = {"application/xml", "application/json","text/plain"})
@ResponseStatus(value = HttpStatus.CREATED)
public void createDuplicate(@RequestBody RestMindmapInfo restMindmap, @PathVariable int id, @NotNull HttpServletResponse response) throws IOException, WiseMappingException {
// Validate ...
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java b/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java
index c21a0b3e..469b6585 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/ValidationException.java
@@ -27,7 +27,7 @@ public class ValidationException extends WiseMappingException{
private Errors errors;
public ValidationException(@NotNull Errors errors) {
- super("Validation Exceptions");
+ super("Validation Exceptions:"+errors);
this.errors = errors;
}
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 804f465e..f90506c2 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
@@ -20,18 +20,23 @@ package com.wisemapping.rest.model;
import com.wisemapping.exceptions.WiseMappingException;
-import com.wisemapping.model.*;
+import com.wisemapping.model.CollaborationProperties;
+import com.wisemapping.model.CollaborationRole;
+import com.wisemapping.model.Collaborator;
+import com.wisemapping.model.Mindmap;
+import com.wisemapping.model.User;
import com.wisemapping.util.TimeUtils;
-import org.codehaus.jackson.annotate.*;
+import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import javax.xml.bind.annotation.*;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
import java.io.IOException;
-import java.text.SimpleDateFormat;
import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
@XmlRootElement(name = "map")
@XmlAccessorType(XmlAccessType.PROPERTY)
@@ -65,6 +70,9 @@ public class RestMindmap {
}
}
+ public void setCreationTime(final String creationTime){
+ // Ignore
+ }
public String getCreationTime() {
final Calendar creationTime = mindmap.getCreationTime();
@@ -79,22 +87,43 @@ public class RestMindmap {
return mindmap.getDescription();
}
+ public void setDescription(String description) {
+ mindmap.setDescription(description);
+ }
+
public String getTags() {
return mindmap.getTags();
}
+ public void setTags(String tags) {
+ mindmap.setTags(tags);
+ }
+
public String getTitle() {
return mindmap.getTitle();
}
+ public void setTitle(String title) {
+ mindmap.setTitle(title);
+ }
+
public int getId() {
return mindmap.getId();
}
- public String getCreator() {
- return mindmap.getCreator().getEmail();
+ public void setId(int id) {
+ mindmap.setId(id);
}
+ public String getCreator() {
+ final User creator = mindmap.getCreator();
+ return creator != null ? creator.getEmail() : null;
+ }
+
+ public void setCreator(String creatorUser) {
+ }
+
+
public RestCollaborator getLastModifierUser() {
final User lastEditor = mindmap.getLastEditor();
@@ -105,6 +134,9 @@ public class RestMindmap {
return result;
}
+ public void setLastModifierUser(RestUser lastModifierUser) {
+ }
+
public String getLastModificationTime() {
final Calendar date = mindmap.getLastModificationTime();
String result = null;
@@ -114,11 +146,13 @@ public class RestMindmap {
return result;
}
+ public void setLastModificationTime(final String value) {
+ }
+
public boolean isPublic() {
return mindmap.isPublic();
}
-
public void setPublic(boolean value) {
// return mindmap.isPublic();
}
@@ -127,50 +161,19 @@ public class RestMindmap {
return mindmap.getXmlStr();
}
-
public void setXml(@Nullable String xml) throws IOException {
if (xml != null)
mindmap.setXmlStr(xml);
}
- public void setId(int id) {
- mindmap.setId(id);
- }
-
- public void setTitle(String title) {
- mindmap.setTitle(title);
- }
-
- public void setTags(String tags) {
- mindmap.setTags(tags);
- }
-
- public void setDescription(String description) {
- mindmap.setDescription(description);
- }
-
- public void setOwner(String owner) {
-
- }
-
public String getOwner() {
final User owner = mindmap.getCreator();
return owner != null ? owner.getEmail() : null;
}
- public void setCreator(String creatorUser) {
- }
+ public void setOwner(String owner) {
-
- public void setProperties(@Nullable String properties) {
- this.properties = properties;
- }
-
- public void setLastModificationTime(final String value) {
- }
-
- public void setLastModifierUser(String lastModifierUser) {
}
@Nullable
@@ -178,6 +181,10 @@ public class RestMindmap {
return properties;
}
+ public void setProperties(@Nullable String properties) {
+ this.properties = properties;
+ }
+
public boolean getStarred() {
boolean result = false;
if (collaborator != null) {
diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java
index 1b3db88e..d1dad7ce 100644
--- a/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java
+++ b/wise-webapp/src/main/java/com/wisemapping/rest/model/RestMindmapInfo.java
@@ -25,17 +25,16 @@ import com.wisemapping.model.Mindmap;
import com.wisemapping.model.User;
import com.wisemapping.security.Utils;
import com.wisemapping.util.TimeUtils;
-import org.codehaus.jackson.annotate.*;
+import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
-import java.text.SimpleDateFormat;
import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
@XmlRootElement(name = "map")
@XmlAccessorType(XmlAccessType.PROPERTY)
@@ -62,28 +61,53 @@ public class RestMindmapInfo {
this.collaborator = collaborator;
}
+ public void setCreationTime(String value){
+ // Ignore
+ }
+
public String getCreationTime() {
- return TimeUtils.toISO8601(mindmap.getCreationTime().getTime());
+ final Calendar creationTime = mindmap.getCreationTime();
+ return creationTime != null ? TimeUtils.toISO8601(creationTime.getTime()) : null;
}
public String getDescription() {
return mindmap.getDescription();
}
+ public void setDescription(String description) {
+ mindmap.setDescription(description);
+ }
+
public String getTags() {
return mindmap.getTags();
}
+ public void setTags(String tags) {
+ mindmap.setTags(tags);
+ }
+
public String getTitle() {
return mindmap.getTitle();
}
+ public void setTitle(String title) {
+ mindmap.setTitle(title);
+ }
+
public int getId() {
return mindmap.getId();
}
+ public void setId(int id) {
+ }
+
public String getCreator() {
- return mindmap.getCreator().getFullName();
+ final User creator = mindmap.getCreator();
+ return creator!=null?creator.getFullName():null;
+ }
+
+ public void setCreator(String email) {
+
}
public void setCreator() {
@@ -95,7 +119,7 @@ public class RestMindmapInfo {
return collaboration != null ? collaboration.getRole().getLabel() : "none";
}
- public void setRole() {
+ public void setRole(String value) {
// Do nothing ...
}
@@ -104,48 +128,29 @@ public class RestMindmapInfo {
return user != null ? user.getFullName() : "unknown";
}
+ public void setLastModifierUser(String value) {
+ }
+
public String getLastModificationTime() {
final Calendar calendar = mindmap.getLastModificationTime();
- return TimeUtils.toISO8601(calendar.getTime());
+ return calendar!=null?TimeUtils.toISO8601(calendar.getTime()):null;
+ }
+
+ public void setLastModificationTime(String value) {
}
public boolean isPublic() {
return mindmap.isPublic();
}
- public void setId(int id) {
- }
-
public boolean getStarred() {
return mindmap.isStarred(collaborator);
}
- public void setStarred(int value) {
+ public void setStarred(boolean value) {
}
- public void setTitle(String title) {
- mindmap.setTitle(title);
- }
-
- public void setTags(String tags) {
- mindmap.setTags(tags);
- }
-
- public void setDescription(String description) {
- mindmap.setDescription(description);
- }
-
- public void setCreator(String email) {
-
- }
-
- public void setLastModificationTime(String value) {
- }
-
- public void setLastModifierUser(String value) {
- }
-
@JsonIgnore
public Mindmap getDelegated() {
return this.mindmap;
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 310fecf0..a74f8972 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
@@ -31,6 +31,8 @@ import javax.xml.bind.annotation.XmlRootElement;
import java.util.Calendar;
import java.util.Set;
+
+
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.PROPERTY)
@JsonAutoDetect(
diff --git a/wise-webapp/src/main/webapp/WEB-INF/app.properties b/wise-webapp/src/main/webapp/WEB-INF/app.properties
index aea43dc6..45912ceb 100755
--- a/wise-webapp/src/main/webapp/WEB-INF/app.properties
+++ b/wise-webapp/src/main/webapp/WEB-INF/app.properties
@@ -142,6 +142,13 @@ security.ldap.firstName.attribute=givenName
# Enable OpenId Authentication.
security.openid.enabled=false
+# REST Documentation
+#
+# This properties are used for REST API Documentation( http://localhost:8080/doc/rest/index.html)
+# Change the URL for proper documentation console setup.
+documentation.services.basePath=http://localhost:8080/wisemapping/service
+documentation.services.version=3.0.1
+
diff --git a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/mapView.jsp b/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/mapView.jsp
deleted file mode 100644
index 95e23838..00000000
--- a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/mapView.jsp
+++ /dev/null
@@ -1,48 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-
-
- Mindmap Detail
-
-
-
Details for map with id '${map.id}'
-
-
-
-
Id:
-
${map.id}
-
-
-
Title:
-
${map.title}
-
-
-
Description:
-
${map.description}
-
-
-
Owner:
-
${map.owner}
-
-
-
Xml:
-
-
-
-
-
Last Modified:
-
${map.lastModifierUser}
-
-
-
Creator:
-
${map.creator}
-
-
-
Public:
-
${map.public}
-
-
-
-
-
\ No newline at end of file
diff --git a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/mapsView.jsp b/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/mapsView.jsp
deleted file mode 100644
index 2a40ceb2..00000000
--- a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/mapsView.jsp
+++ /dev/null
@@ -1,51 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-
-
- Mindmaps List
-
-
-
Mindmaps List
-
-
-
-
-
Id:
-
${map.id}
-
-
-
Title:
-
${map.title}
-
-
-
Description:
-
${map.description}
-
-
-
Owner:
-
${map.owner}
-
-
-
Xml:
-
-
-
-
-
Last Modified:
-
${map.lastModifierUser}
-
-
-
Creator:
-
${map.creator}
-
-
-
Public:
-
${map.public}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/responseView.jsp b/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/responseView.jsp
deleted file mode 100644
index 46c69913..00000000
--- a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/responseView.jsp
+++ /dev/null
@@ -1,11 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-
-
-
-
-
Message: ${message}
-
-
-
\ No newline at end of file
diff --git a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/userView.jsp b/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/userView.jsp
deleted file mode 100644
index 7c568172..00000000
--- a/wise-webapp/src/main/webapp/WEB-INF/jsp-rest/userView.jsp
+++ /dev/null
@@ -1,35 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
-
-
- Mindmap Detail
-
-
-
Details for User with id '${user.id}'
-
-
-
-
Email:
-
${user.email}
-
-
-
Fist Name:
-
${user.firstname}
-
-
-
Last Name:
-
${user.lastname}
-
-
-
Username:
-
${user.username}
-
-
-
Active:
-
${user.active}
-
-
-
-
-
\ No newline at end of file
diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml
index a83725f1..53384828 100644
--- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml
+++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml
@@ -52,7 +52,6 @@