From 53451cd61be90a9914a9f66625d994cf084dc10a Mon Sep 17 00:00:00 2001 From: Martin Rojas Miguel Angel Date: Tue, 8 Jan 2019 13:36:54 +0100 Subject: [PATCH] TSK-754 Use custom spring boot mvn initializer --- .../java/pro/taskana/rest/WebMvcConfig.java | 55 ++++++++++++++++++ .../rest/controllers/ViewController.java | 2 +- .../rest/security/WebSecurityConfig.java | 1 + .../src/main/resources/static/img/favicon.ico | Bin 0 -> 755 bytes .../src/main/resources/templates/login.html | 3 + .../taskana/rest/TaskControllerIntTest.java | 8 ++- .../pro/taskana/rest/RestConfiguration.java | 15 +---- 7 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/WebMvcConfig.java create mode 100644 rest/taskana-rest-spring-example/src/main/resources/static/img/favicon.ico diff --git a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/WebMvcConfig.java b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/WebMvcConfig.java new file mode 100644 index 000000000..9169f6099 --- /dev/null +++ b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/WebMvcConfig.java @@ -0,0 +1,55 @@ +package pro.taskana.rest; + +import java.util.List; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +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 com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +@Configuration +@EnableWebMvc +public class WebMvcConfig implements WebMvcConfigurer { + + private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { + "classpath:/META-INF/resources/", "classpath:/resources/", + "classpath:/static/", "classpath:/public/"}; + + @Autowired + private ObjectMapper objectMapper; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + if (!registry.hasMappingForPattern("/webjars/**")) { + registry.addResourceHandler("/webjars/**").addResourceLocations( + "classpath:/META-INF/resources/webjars/"); + } + if (!registry.hasMappingForPattern("/**")) { + registry.addResourceHandler("/**").addResourceLocations( + CLASSPATH_RESOURCE_LOCATIONS); + } + } + + @Override + public void extendMessageConverters(List> converters) { + for (HttpMessageConverter converter : converters) { + if (converter instanceof MappingJackson2HttpMessageConverter) { + MappingJackson2HttpMessageConverter jacksonConverter = (MappingJackson2HttpMessageConverter) converter; + jacksonConverter.setPrettyPrint(true); + } + } + } + + @PostConstruct + public void enableObjectIndent() { + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + } +} diff --git a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/controllers/ViewController.java b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/controllers/ViewController.java index afe86d5d7..3876327d1 100644 --- a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/controllers/ViewController.java +++ b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/controllers/ViewController.java @@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ViewController { - @RequestMapping({"/administration*/**", "/workplace*/**", "/monitor*/**", "/no-role*/**"}) + @RequestMapping({"", "/administration*/**", "/workplace*/**", "/monitor*/**", "/no-role*/**"}) public String index() { return "forward:/index.html"; } diff --git a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/security/WebSecurityConfig.java b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/security/WebSecurityConfig.java index 9fcbb7c33..e0dc01819 100644 --- a/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/security/WebSecurityConfig.java +++ b/rest/taskana-rest-spring-example/src/main/java/pro/taskana/rest/security/WebSecurityConfig.java @@ -103,6 +103,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .anyRequest().fullyAuthenticated() .and() .formLogin().loginPage("/login").failureUrl("/login?error") + .defaultSuccessUrl("/") .permitAll() .and() .logout() diff --git a/rest/taskana-rest-spring-example/src/main/resources/static/img/favicon.ico b/rest/taskana-rest-spring-example/src/main/resources/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4e4059fc94d41c284d86039d7689fadc359a6f8a GIT binary patch literal 755 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLG zA9w%&02y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00L7H>uj)UIV=VdR^&Qnz-cO&n6h3KfGBs(t`esZ+fe^)~~*P(r71*CtL*WQ~fkQQd{Tg2s@u?E5o>_C346HZE=kfoK9@6JcZsKnxK14 z%?#Qss^0c4zq-&nBBBvr>L;cVC)Bd!btE`kRfbNY?26WEnA3H@mC!6rBA4r-mdOG@p|!jL+#E<^9$h6?HyNb?`Gl zoS6TT#}SUIPCO)Yg#(W$A44-ZH&aK1%vr4Np#8n#F$pOVr{LV3)|Df6V$gg6eXbB; zhEtX^Jcl}{E63@??{rAFVHjV~dvS3-W?3dWXd}ISold;$b)laPK^Ck7lUh)OLsR=I z@3&sVcBks(*}9g + Taskana login diff --git a/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/TaskControllerIntTest.java b/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/TaskControllerIntTest.java index 9d48ead7c..eea6c97bd 100644 --- a/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/TaskControllerIntTest.java +++ b/rest/taskana-rest-spring-example/src/test/java/pro/taskana/rest/TaskControllerIntTest.java @@ -43,6 +43,7 @@ import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import pro.taskana.exceptions.SystemException; @@ -299,6 +300,7 @@ public class TaskControllerIntTest { con.setRequestMethod("GET"); con.setRequestProperty("Authorization", "Basic YWRtaW46YWRtaW4="); assertEquals(200, con.getResponseCode()); + ObjectMapper objectMapper = new ObjectMapper(); BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); @@ -310,11 +312,11 @@ public class TaskControllerIntTest { in.close(); con.disconnect(); String response = content.toString(); + JsonNode jsonNode = objectMapper.readTree(response); + String created = jsonNode.get("created").asText(); assertFalse(response.contains("\"attachments\":[]")); - int start = response.indexOf("created", response.indexOf("created") + 1); - String createdString = response.substring(start + 10, start + 30); assertTrue( - createdString.matches("\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)")); + created.matches("\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)")); } @Test diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java index d68007a9b..5a0675eb8 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/RestConfiguration.java @@ -1,7 +1,6 @@ package pro.taskana.rest; import java.sql.SQLException; -import java.util.List; import javax.sql.DataSource; @@ -12,11 +11,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.converter.json.SpringHandlerInstantiator; import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import com.fasterxml.jackson.databind.cfg.HandlerInstantiator; @@ -35,7 +31,7 @@ import pro.taskana.ldap.LdapClient; @Configuration @ComponentScan @EnableTransactionManagement -public class RestConfiguration extends WebMvcConfigurationSupport { +public class RestConfiguration{ @Value("${taskana.schemaName:TASKANA}") private String schemaName; @@ -83,13 +79,4 @@ public class RestConfiguration extends WebMvcConfigurationSupport { return new SpringHandlerInstantiator(context.getAutowireCapableBeanFactory()); } - @Override - protected void extendMessageConverters(List> converters) { - for (HttpMessageConverter converter : converters) { - if (converter instanceof MappingJackson2HttpMessageConverter) { - MappingJackson2HttpMessageConverter jacksonConverter = (MappingJackson2HttpMessageConverter) converter; - jacksonConverter.setPrettyPrint(true); - } - } - } }