diff --git a/wise-api/pom.xml b/wise-api/pom.xml
index aecf4ca6..30c6510b 100644
--- a/wise-api/pom.xml
+++ b/wise-api/pom.xml
@@ -4,7 +4,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.1
+ 3.2.2
org.wisemapping
@@ -199,7 +199,6 @@
-
org.apache.maven.plugins
diff --git a/wise-api/src/main/java/com/wisemapping/Application.java b/wise-api/src/main/java/com/wisemapping/Application.java
index 5ac5f722..5283b2f5 100644
--- a/wise-api/src/main/java/com/wisemapping/Application.java
+++ b/wise-api/src/main/java/com/wisemapping/Application.java
@@ -1,7 +1,6 @@
package com.wisemapping;
import com.wisemapping.config.common.CommonConfig;
-import com.wisemapping.config.mvc.MvcAppConfig;
import com.wisemapping.config.rest.RestAppConfig;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.builder.SpringApplicationBuilder;
diff --git a/wise-api/src/main/java/com/wisemapping/config/mvc/InterceptorsConfig.java b/wise-api/src/main/java/com/wisemapping/config/mvc/InterceptorsConfig.java
deleted file mode 100644
index 400a68e5..00000000
--- a/wise-api/src/main/java/com/wisemapping/config/mvc/InterceptorsConfig.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright [2022] [wisemapping]
- *
- * Licensed under WiseMapping Public License, Version 1.0 (the "License").
- * It is basically the Apache License, Version 2.0 (the "License") plus the
- * "powered by wisemapping" text requirement on every single page;
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the license at
- *
- * http://www.wisemapping.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.wisemapping.config.mvc;
-
-import com.wisemapping.filter.RequestPropertiesInterceptor;
-import com.wisemapping.filter.UserLocaleInterceptor;
-import org.jetbrains.annotations.NotNull;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-//@Configuration
-//@ComponentScan(basePackageClasses = UserLocaleInterceptor.class)
-public class InterceptorsConfig implements WebMvcConfigurer {
- @Autowired
- private UserLocaleInterceptor userLocaleInterceptor;
-
- @Autowired
- private RequestPropertiesInterceptor requestPropertiesInterceptor;
-
- @Override
- public void addInterceptors(@NotNull final InterceptorRegistry registry) {
- registry.addInterceptor(userLocaleInterceptor);
- registry.addInterceptor(requestPropertiesInterceptor);
- }
-}
\ No newline at end of file
diff --git a/wise-api/src/main/java/com/wisemapping/config/mvc/MvcAppConfig.java b/wise-api/src/main/java/com/wisemapping/config/mvc/MvcAppConfig.java
deleted file mode 100644
index c17f0b51..00000000
--- a/wise-api/src/main/java/com/wisemapping/config/mvc/MvcAppConfig.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.wisemapping.config.mvc;
-
-import com.wisemapping.webmvc.MvcMindmapController;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.web.servlet.HandlerExceptionResolver;
-import org.springframework.web.servlet.ViewResolver;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-
-
-//@SpringBootApplication
-//@Import({MvcMindmapController.class, MvcSecurityConfig.class})
-//@EnableWebMvc
-public class MvcAppConfig implements WebMvcConfigurer {
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry
- .addResourceHandler("/**")
- .addResourceLocations("classpath:/public/");
- }
-
- @Bean
- public ViewResolver viewResolver() {
- InternalResourceViewResolver resolver = new InternalResourceViewResolver();
- resolver.setPrefix("/WEB-INF/jsp/");
- resolver.setSuffix(".jsp");
- resolver.setViewClass(JstlView.class);
- return resolver;
- }
-
- @Bean
- HandlerExceptionResolver errorHandler() {
- final SimpleMappingExceptionResolver result = new SimpleMappingExceptionResolver();
-
- //mapping status code with view response.
- result.addStatusCode("reactInclude", 403);
-
- //setting default error view
- result.setDefaultErrorView("reactInclude");
- result.setDefaultStatusCode(500);
- return result;
- }
-}
\ No newline at end of file
diff --git a/wise-api/src/main/java/com/wisemapping/config/mvc/MvcSecurityConfig.java b/wise-api/src/main/java/com/wisemapping/config/mvc/MvcSecurityConfig.java
deleted file mode 100644
index cb236793..00000000
--- a/wise-api/src/main/java/com/wisemapping/config/mvc/MvcSecurityConfig.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.wisemapping.config.mvc;
-
-import org.jetbrains.annotations.NotNull;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.annotation.Order;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
-import org.springframework.security.web.SecurityFilterChain;
-import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher;
-import org.springframework.web.servlet.handler.HandlerMappingIntrospector;
-
-@Configuration
-@EnableWebSecurity
-public class MvcSecurityConfig {
- @Bean
- @Order(1)
- public SecurityFilterChain embeddedDisabledXOrigin(@NotNull final HttpSecurity http, @NotNull final MvcRequestMatcher.Builder mvc) throws Exception {
- http
- .securityMatchers((matchers) ->
- matchers.requestMatchers(mvc.pattern("/c/maps/*/embed")))
- .authorizeHttpRequests(
- (auth) -> auth.requestMatchers(mvc.pattern(("/c/maps/*/embed"))).permitAll())
- .headers((header -> header.frameOptions()
- .disable()
- ))
- .csrf(AbstractHttpConfigurer::disable);
-
- return http.build();
- }
-
- @Bean
- MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) {
- return new MvcRequestMatcher.Builder(introspector);
- }
-
- @Bean
- @Order(2)
- public SecurityFilterChain mvcFilterChain(@NotNull final HttpSecurity http, @NotNull final MvcRequestMatcher.Builder mvc) throws Exception {
- http
- .securityMatchers((matchers) ->
- matchers.requestMatchers(mvc.pattern("/c/**")))
- .authorizeHttpRequests(
- (auth) ->
- auth
- .requestMatchers(mvc.pattern("/c/login")).permitAll()
- .requestMatchers(mvc.pattern("/c/logout")).permitAll()
- .requestMatchers(mvc.pattern("/c/registration")).permitAll()
- .requestMatchers(mvc.pattern("/c/registration-success")).permitAll()
- .requestMatchers(mvc.pattern("/c/registration-google")).permitAll()
-
- .requestMatchers(mvc.pattern("/c/forgot-password")).permitAll()
- .requestMatchers(mvc.pattern("/c/forgot-password-success")).permitAll()
- .requestMatchers(mvc.pattern("/c/maps/*/try")).permitAll()
- .requestMatchers(mvc.pattern("/c/maps/*/public")).permitAll()
- .requestMatchers(mvc.pattern("/c/**")).hasAnyRole("USER", "ADMIN")
- .anyRequest().authenticated())
- .formLogin((loginForm) ->
- loginForm.loginPage("/c/login")
- .loginProcessingUrl("/c/perform-login")
- .defaultSuccessUrl("/c/maps/")
- .failureUrl("/c/login?login_error=2"))
- .logout((logout) ->
- logout
- .logoutUrl("/c/logout")
- .logoutSuccessUrl("/c/login")
- .invalidateHttpSession(true)
- .deleteCookies("JSESSIONID")
- .permitAll()
- ).rememberMe(remember ->
- remember
- .tokenValiditySeconds(2419200)
- .rememberMeParameter("remember-me"
- )
- ).headers((header -> header.frameOptions()
- .disable()
- ))
- .csrf((csrf) ->
- csrf.ignoringRequestMatchers(mvc.pattern("/c/logout")));
-
- return http.build();
- }
-
- @Bean
- @Order(3)
- public SecurityFilterChain shareResourcesFilterChain(@NotNull final HttpSecurity http, @NotNull final MvcRequestMatcher.Builder mvc) throws Exception {
- return http.authorizeHttpRequests(
- (auth) ->
- auth.requestMatchers(mvc.pattern("/static/**")).permitAll().
- requestMatchers(mvc.pattern("/css/**")).permitAll().
- requestMatchers(mvc.pattern("/js/**")).permitAll().
- // @todo: Why this is required ...
- requestMatchers(mvc.pattern("/WEB-INF/jsp/*.jsp")).permitAll().
- requestMatchers(mvc.pattern("/images/**")).permitAll().
- requestMatchers(mvc.pattern("/*")).permitAll()
-
- ).build();
- }
-}
diff --git a/wise-api/src/main/java/com/wisemapping/config/rest/RestAppConfig.java b/wise-api/src/main/java/com/wisemapping/config/rest/RestAppConfig.java
index 7ee683a9..65546bd1 100644
--- a/wise-api/src/main/java/com/wisemapping/config/rest/RestAppConfig.java
+++ b/wise-api/src/main/java/com/wisemapping/config/rest/RestAppConfig.java
@@ -54,7 +54,7 @@ public class RestAppConfig {
}))
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
-// .httpBasic(withDefaults())
+ .httpBasic(withDefaults())
.build();
}
}
diff --git a/wise-api/src/main/java/com/wisemapping/rest/MindmapController.java b/wise-api/src/main/java/com/wisemapping/rest/MindmapController.java
index 526c5fcb..b1d1df7d 100644
--- a/wise-api/src/main/java/com/wisemapping/rest/MindmapController.java
+++ b/wise-api/src/main/java/com/wisemapping/rest/MindmapController.java
@@ -24,6 +24,7 @@ import com.wisemapping.rest.model.*;
import com.wisemapping.security.Utils;
import com.wisemapping.service.*;
import com.wisemapping.validator.MapInfoValidator;
+import com.wisemapping.view.MindMapBean;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.validator.routines.EmailValidator;
import org.apache.logging.log4j.LogManager;
@@ -32,6 +33,7 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -72,7 +74,7 @@ public class MindmapController extends BaseController {
@RequestMapping(method = RequestMethod.GET, value = "/{id}", produces = {"application/json"})
@ResponseBody
public RestMindmap retrieve(@PathVariable int id) throws WiseMappingException {
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
final Mindmap mindMap = findMindmapById(id);
return new RestMindmap(mindMap, user);
}
@@ -80,17 +82,28 @@ public class MindmapController extends BaseController {
@PreAuthorize("isAuthenticated() and hasRole('ROLE_USER')")
@RequestMapping(method = RequestMethod.GET, value = "/{id}/metadata", produces = {"application/json"})
@ResponseBody
- public RestMindmap retrieveMetadata(@PathVariable int id) throws WiseMappingException {
- final User user = Utils.getUser();
-
- final Mindmap mindMap = findMindmapById(id);
- return new RestMindmap(mindMap, user);
+ public RestMindmapMetadata retrieveMetadata(@PathVariable int id) throws WiseMappingException {
+ final User user = Utils.getUser(true);
+ final Mindmap mindmap = findMindmapById(id);
+ final MindMapBean mindMapBean = new MindMapBean(mindmap, user);
+
+ // Is the mindmap locked ?.
+ boolean isLocked = false;
+ final LockManager lockManager = this.mindmapService.getLockManager();
+ String lockFullName = null;
+ if (lockManager.isLocked(mindmap) && !lockManager.isLockedBy(mindmap, user)) {
+ final LockInfo lockInfo = lockManager.getLockInfo(mindmap);
+ isLocked = true;
+ lockFullName = lockInfo.getUser().getFullName();
+ }
+
+ return new RestMindmapMetadata(mindmap.getTitle(), mindMapBean.getProperties(), isLocked, lockFullName);
}
@PreAuthorize("isAuthenticated() and hasRole('ROLE_USER')")
@RequestMapping(method = RequestMethod.GET, value = "/", produces = {"application/json"})
public RestMindmapList retrieveList(@RequestParam(required = false) String q) {
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
final MindmapFilter filter = MindmapFilter.parse(q);
List mindmaps = mindmapService.findMindmapsByUser(user);
@@ -119,7 +132,7 @@ public class MindmapController extends BaseController {
public void updateDocument(@RequestBody RestMindmap restMindmap, @PathVariable int id, @RequestParam(required = false) boolean minor) throws WiseMappingException, IOException {
final Mindmap mindmap = findMindmapById(id);
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
// Validate arguments ...
final String properties = restMindmap.getProperties();
@@ -148,7 +161,7 @@ public class MindmapController extends BaseController {
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateRevertMindmap(@PathVariable int id, @PathVariable String hid) throws WiseMappingException, IOException {
final Mindmap mindmap = findMindmapById(id);
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
if (LATEST_HISTORY_REVISION.equals(hid)) {
// Revert to the latest stored version ...
@@ -178,7 +191,7 @@ public class MindmapController extends BaseController {
@ResponseBody
public void updateDocument(@PathVariable int id, @RequestBody String xmlDoc) throws WiseMappingException {
final Mindmap mindmap = findMindmapById(id);
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
mindmap.setXmlStr(xmlDoc);
saveMindmapDocument(false, mindmap, user);
@@ -203,7 +216,7 @@ public class MindmapController extends BaseController {
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();
+ final User user = Utils.getUser(true);
final String xml = restMindmap.getXml();
if (xml != null && !xml.isEmpty()) {
@@ -239,7 +252,7 @@ public class MindmapController extends BaseController {
@NotNull
private Mindmap findMindmapById(int id) throws MapCouldNotFoundException, AccessDeniedSecurityException {
// Has enough permissions ?
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
if (!mindmapService.hasPermissions(user, id, CollaborationRole.VIEWER)) {
throw new AccessDeniedSecurityException(id, user);
}
@@ -258,7 +271,7 @@ public class MindmapController extends BaseController {
public void updateTitle(@RequestBody String title, @PathVariable int id) throws WiseMappingException {
final Mindmap mindMap = findMindmapById(id);
- final User user = Utils.getUser();
+ final User user = Utils.getUser(true);
// Is there a map with the same name ?
if (mindmapService.getMindmapByTitle(title, user) != null) {
diff --git a/wise-api/src/main/java/com/wisemapping/rest/model/RestMindmapMetadata.java b/wise-api/src/main/java/com/wisemapping/rest/model/RestMindmapMetadata.java
index 63158ce3..050cf876 100644
--- a/wise-api/src/main/java/com/wisemapping/rest/model/RestMindmapMetadata.java
+++ b/wise-api/src/main/java/com/wisemapping/rest/model/RestMindmapMetadata.java
@@ -20,18 +20,10 @@ package com.wisemapping.rest.model;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.wisemapping.exceptions.InvalidMindmapException;
-import com.wisemapping.exceptions.WiseMappingException;
-import com.wisemapping.model.*;
-import com.wisemapping.util.TimeUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.io.IOException;
-import java.util.Calendar;
-
@JsonAutoDetect(
fieldVisibility = JsonAutoDetect.Visibility.NONE,
setterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY,
@@ -40,8 +32,49 @@ import java.util.Calendar;
)
@JsonIgnoreProperties(ignoreUnknown = true)
public class RestMindmapMetadata {
+ private String jsonProps;
+ private boolean locked;
+ private String title;
- public RestMindmapMetadata() throws WiseMappingException {
+ public String getJsonProps() {
+ return jsonProps;
+ }
+
+ public void setJsonProps(String jsonProps) {
+ this.jsonProps = jsonProps;
+ }
+
+ public boolean isLocked() {
+ return locked;
+ }
+
+ public void setLocked(boolean locked) {
+ this.locked = locked;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getLockFullName() {
+ return lockFullName;
+ }
+
+ public void setLockFullName(String lockFullName) {
+ this.lockFullName = lockFullName;
+ }
+
+ private String lockFullName;
+
+ public RestMindmapMetadata(@NotNull String title, @NotNull String jsonProps, boolean locked, @Nullable String lockFullName) {
+ this.jsonProps = jsonProps;
+ this.title = title;
+ this.locked = locked;
+ this.lockFullName = lockFullName;
}
}
diff --git a/wise-api/src/main/java/com/wisemapping/view/MindMapBean.java b/wise-api/src/main/java/com/wisemapping/view/MindMapBean.java
index 4b806f3a..b62da707 100644
--- a/wise-api/src/main/java/com/wisemapping/view/MindMapBean.java
+++ b/wise-api/src/main/java/com/wisemapping/view/MindMapBean.java
@@ -127,10 +127,6 @@ public class MindMapBean {
mindmap.setDescription(d);
}
- public String getXmlAsJsLiteral() throws IOException {
- return this.mindmap.getXmlAsJsLiteral();
- }
-
public String getProperties() throws WiseMappingException {
String result = null;
diff --git a/wise-api/src/main/resources/public/favicon.ico b/wise-api/src/main/resources/public/favicon.ico
deleted file mode 100644
index 955c5116..00000000
Binary files a/wise-api/src/main/resources/public/favicon.ico and /dev/null differ
diff --git a/wise-api/src/main/resources/public/favicon.png b/wise-api/src/main/resources/public/favicon.png
deleted file mode 100644
index bb62808d..00000000
Binary files a/wise-api/src/main/resources/public/favicon.png and /dev/null differ
diff --git a/wise-api/src/main/resources/public/index.html b/wise-api/src/main/resources/public/index.html
deleted file mode 100644
index 02dcf806..00000000
--- a/wise-api/src/main/resources/public/index.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/wise-api/src/test/java/com/wisemapping/test/rest/RestMindmapControllerTest.java b/wise-api/src/test/java/com/wisemapping/test/rest/RestMindmapControllerTest.java
index 078e2928..6e01a87a 100644
--- a/wise-api/src/test/java/com/wisemapping/test/rest/RestMindmapControllerTest.java
+++ b/wise-api/src/test/java/com/wisemapping/test/rest/RestMindmapControllerTest.java
@@ -22,6 +22,7 @@ import org.springframework.web.util.DefaultUriBuilderFactory;
import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -35,7 +36,7 @@ public class RestMindmapControllerTest {
private RestUser user;
- @Autowired
+ @Autowired
private TestRestTemplate restTemplate;
@BeforeEach
@@ -52,7 +53,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void listMaps() {
+ public void listMaps() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -81,7 +82,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void deleteMap() {
+ public void deleteMap() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -103,7 +104,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void changeMapTitle() {
+ public void changeMapTitle() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -117,7 +118,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void validateMapsCreation() { // Configure media types ...
+ public void validateMapsCreation() throws URISyntaxException { // Configure media types ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
requestHeaders.set(HttpHeaders.ACCEPT_LANGUAGE, "en");
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -135,7 +136,7 @@ public class RestMindmapControllerTest {
@Test
- public void changeMapDescription() {
+ public void changeMapDescription() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -155,7 +156,7 @@ public class RestMindmapControllerTest {
@Test
- public void updateMapXml() throws IOException { // Configure media types ...
+ public void updateMapXml() throws IOException, URISyntaxException { // Configure media types ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -183,7 +184,7 @@ public class RestMindmapControllerTest {
@Test
- public void cloneMap() throws IOException {
+ public void cloneMap() throws IOException, URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -211,7 +212,7 @@ public class RestMindmapControllerTest {
@Test
- public void updateStarred() { // Configure media types ...
+ public void updateStarred() throws URISyntaxException { // Configure media types ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -238,7 +239,7 @@ public class RestMindmapControllerTest {
@Test
- public void verifyMapOwnership() {
+ public void verifyMapOwnership() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate firstUser = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -266,7 +267,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void updateMap() throws IOException, WiseMappingException {
+ public void updateMap() throws IOException, WiseMappingException, URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -303,7 +304,7 @@ public class RestMindmapControllerTest {
@Test
- public void addCollabs() {
+ public void addCollabs() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -324,7 +325,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void updateCollabType() {
+ public void updateCollabType() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -361,7 +362,7 @@ public class RestMindmapControllerTest {
@Test
- public void deleteCollabs() {
+ public void deleteCollabs() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -400,7 +401,7 @@ public class RestMindmapControllerTest {
@Test
- public void deleteCollabsWithInvalidEmail() {
+ public void deleteCollabsWithInvalidEmail() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -418,7 +419,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void deleteCollabsWithoutOwnerPermission() {
+ public void deleteCollabsWithoutOwnerPermission() throws URISyntaxException {
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
final URI resourceUri = addNewMap(restTemplate, "deleteWithoutOwnerPermission");
@@ -439,7 +440,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void deleteOwnerCollab() {
+ public void deleteOwnerCollab() throws URISyntaxException {
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
// Create a sample map ...
@@ -458,7 +459,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void addCollabsInvalidOwner() {
+ public void addCollabsInvalidOwner() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -479,7 +480,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void removeLabelFromMindmap() { // Configure media types ...
+ public void removeLabelFromMindmap() throws URISyntaxException { // Configure media types ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -524,7 +525,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void addLabelToMindmap() { // Configure media types ...
+ public void addLabelToMindmap() throws URISyntaxException { // Configure media types ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -548,7 +549,23 @@ public class RestMindmapControllerTest {
}
@Test
- public void updateCollabs() {
+ public void fetchMapMetadata() throws URISyntaxException {
+ final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
+ final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
+
+ // Create a sample map ...
+ final String mapTitle = "Maps 1 !";
+ final URI mindmapUri = addNewMap(restTemplate, mapTitle);
+ final String mapId = mindmapUri.getPath().replace("/api/restful/maps/", "");
+
+ final ResponseEntity exchange = restTemplate.exchange(mindmapUri + "/metadata", HttpMethod.GET, null, RestMindmapMetadata.class);
+ assertTrue(exchange.getStatusCode().is2xxSuccessful());
+ assertEquals(mapTitle, exchange.getBody().getTitle());
+
+ }
+
+ @Test
+ public void updateCollabs() throws URISyntaxException {
// Create a sample map ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
@@ -592,7 +609,7 @@ public class RestMindmapControllerTest {
@Test
- public void updateProperties() throws IOException, WiseMappingException {
+ public void updateProperties() throws IOException, WiseMappingException, URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -623,7 +640,7 @@ public class RestMindmapControllerTest {
@Test
- public void batchDelete() {
+ public void batchDelete() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -646,7 +663,7 @@ public class RestMindmapControllerTest {
@Test
- public void updatePublishState() {
+ public void updatePublishState() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -663,7 +680,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void fetchMapHistory() {
+ public void fetchMapHistory() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -681,7 +698,7 @@ public class RestMindmapControllerTest {
@Test
- public void updateRevertMindmap() throws IOException {
+ public void updateRevertMindmap() throws IOException, URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -709,7 +726,7 @@ public class RestMindmapControllerTest {
@Test
- public void addCollabWhitoutOwnerPermission() {
+ public void addCollabWhitoutOwnerPermission() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -736,7 +753,7 @@ public class RestMindmapControllerTest {
}
@Test
- public void addCollabWhitOwnerRole() {
+ public void addCollabWhitOwnerRole() throws URISyntaxException {
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_JSON);
final TestRestTemplate restTemplate = this.restTemplate.withBasicAuth(user.getEmail(), user.getPassword());
@@ -800,14 +817,19 @@ public class RestMindmapControllerTest {
}
//
- private URI addNewMap(@NotNull TestRestTemplate template, @NotNull String title, @Nullable String xml) {
+ private URI addNewMap(@NotNull TestRestTemplate template, @NotNull String title, @Nullable String xml) throws URISyntaxException {
// Create a new map ...
final HttpHeaders requestHeaders = createHeaders(MediaType.APPLICATION_XML);
- HttpEntity createUserEntity = new HttpEntity<>(xml, requestHeaders);
- return template.postForLocation("/api/restful/maps?title=" + title, createUserEntity);
+ final HttpEntity createUserEntity = new HttpEntity<>(xml, requestHeaders);
+
+ final ResponseEntity exchange = template.exchange("/api/restful/maps?title=" + title, HttpMethod.POST, createUserEntity, String.class);
+ assertTrue(exchange.getStatusCode().is2xxSuccessful());
+
+ final List locations = exchange.getHeaders().get(HttpHeaders.LOCATION);
+ return new URI(locations.stream().findFirst().get());
}
- private URI addNewMap(@NotNull TestRestTemplate template, @NotNull String title) {
+ private URI addNewMap(@NotNull TestRestTemplate template, @NotNull String title) throws URISyntaxException {
return addNewMap(template, title, null);
}