Closes #2404 - Upgrade to Spring Boot 3.1.5

This commit is contained in:
Norman Schmidt 2023-10-12 17:25:48 +02:00 committed by Alex
parent cc4b2e4f70
commit 8cb1db30ce
50 changed files with 194 additions and 173 deletions

View File

@ -32,7 +32,7 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.org.lidalia</groupId>
<groupId>com.github.valfirst</groupId>
<artifactId>slf4j-test</artifactId>
<version>${version.slf4j-test}</version>
<scope>test</scope>
@ -45,6 +45,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<version>${version.mockito-inline}</version>
<artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>

View File

@ -2,6 +2,9 @@ package pro.taskana.common.internal.logging;
import static org.assertj.core.api.Assertions.assertThat;
import com.github.valfirst.slf4jtest.LoggingEvent;
import com.github.valfirst.slf4jtest.TestLogger;
import com.github.valfirst.slf4jtest.TestLoggerFactory;
import org.assertj.core.api.Condition;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
@ -9,12 +12,9 @@ import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.mockito.internal.stubbing.answers.CallsRealMethods;
import org.slf4j.event.Level;
import outside.of.pro.taskana.OutsideOfProTaskanaPackageLoggingTestClass;
import pro.taskana.AtProTaskanaRootPackageLoggingTestClass;
import uk.org.lidalia.slf4jext.Level;
import uk.org.lidalia.slf4jtest.LoggingEvent;
import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
@NoLogging
class LoggingAspectTest {

View File

@ -52,9 +52,9 @@
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${version.javax.servlet}</version>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${version.jakarta.servlet}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>

View File

@ -41,7 +41,7 @@
<!-- test dependencies -->
<dependency>
<groupId>uk.org.lidalia</groupId>
<groupId>com.github.valfirst</groupId>
<artifactId>slf4j-test</artifactId>
<version>${version.slf4j-test}</version>
<scope>test</scope>
@ -59,6 +59,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<version>${version.mockito-inline}</version>
<artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>

View File

@ -4,6 +4,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.github.valfirst.slf4jtest.TestLogger;
import com.github.valfirst.slf4jtest.TestLoggerFactory;
import java.time.Instant;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
@ -17,8 +19,6 @@ import pro.taskana.spi.history.api.events.task.TaskHistoryEvent;
import pro.taskana.spi.history.api.events.task.TaskHistoryEventType;
import pro.taskana.spi.history.api.events.workbasket.WorkbasketHistoryEvent;
import pro.taskana.spi.history.api.events.workbasket.WorkbasketHistoryEventType;
import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
class LogfileHistoryServiceImplTest {

View File

@ -66,6 +66,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<version>${version.mockito-inline}</version>
<artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>

View File

@ -44,13 +44,13 @@
<artifactId>spring-hateoas</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>

View File

@ -1,10 +1,10 @@
package pro.taskana.simplehistory.rest;
import jakarta.servlet.http.HttpServletRequest;
import java.beans.ConstructorProperties;
import java.sql.SQLException;
import java.util.List;
import java.util.function.BiConsumer;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.MediaTypes;
import org.springframework.hateoas.config.EnableHypermediaSupport;

View File

@ -26,9 +26,9 @@
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${version.javaee-api}</version>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${version.jakartaee-api}</version>
<scope>provided</scope>
</dependency>
<dependency>

View File

@ -1,10 +1,10 @@
package pro.taskana.example;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes;
import jakarta.annotation.PostConstruct;
import jakarta.ejb.EJB;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.context.Initialized;
import jakarta.enterprise.event.Observes;
import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.task.api.exceptions.AttachmentPersistenceException;

View File

@ -1,7 +1,7 @@
package pro.taskana.example;
import javax.ejb.Stateless;
import javax.inject.Inject;
import jakarta.ejb.Stateless;
import jakarta.inject.Inject;
import pro.taskana.task.api.TaskService;
/** example Taskana EJB. */

View File

@ -39,9 +39,24 @@
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${version.javaee-api}</version>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${version.jakartaee-api}</version>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
<version>${version.jakarta.enterprise.cdi-api}</version>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>${version.jakarta.annotation-api}</version>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>${version.jakarta.inject-api}</version>
</dependency>
<dependency>
<groupId>pro.taskana</groupId>
@ -77,8 +92,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>

View File

@ -1,15 +1,15 @@
package pro.taskana.common.internal;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Inject;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Properties;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

View File

@ -1,7 +1,7 @@
package pro.taskana;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
@ApplicationPath("/rest")
public class RestApplication extends Application {}

View File

@ -1,13 +1,13 @@
package pro.taskana;
import javax.ejb.EJB;
import javax.inject.Inject;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import jakarta.ejb.EJB;
import jakarta.inject.Inject;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.core.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pro.taskana.classification.api.ClassificationService;

View File

@ -1,7 +1,7 @@
package pro.taskana;
import javax.ejb.Stateless;
import javax.inject.Inject;
import jakarta.ejb.Stateless;
import jakarta.inject.Inject;
import pro.taskana.classification.api.ClassificationService;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.models.Task;

View File

@ -6,8 +6,8 @@
<resource-root path="h2-2.1.214.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
<module name="jakarta.api"/>
<module name="jakarta.transaction.api"/>
<module name="jakarta.servlet.api" optional="true"/>
</dependencies>
</module>

View File

@ -65,6 +65,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<version>${version.mockito-inline}</version>
<artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>

View File

@ -1,6 +1,6 @@
package pro.taskana.example;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

View File

@ -40,9 +40,9 @@
<version>${version.spring.mybatis}</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${version.javax.annotation-api}</version>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>${version.jakarta.annotation-api}</version>
</dependency>
<!-- test dependencies -->

View File

@ -35,6 +35,7 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<version>${version.mockito-inline}</version>
<artifactId>mockito-inline</artifactId>
</dependency>
<dependency>

21
pom.xml
View File

@ -64,9 +64,9 @@
<version.sonatype>1.6.13</version.sonatype>
<!-- spring dependencies -->
<version.javax.annotation-api>1.3.2</version.javax.annotation-api>
<version.spring.core>2.0.0.RELEASE</version.spring.core>
<version.spring.boot>2.7.17</version.spring.boot>
<version.jakarta.annotation-api>2.1.1</version.jakarta.annotation-api>
<version.spring.core>3.0.0</version.spring.core>
<version.spring.boot>3.1.5</version.spring.boot>
<version.spring.mybatis>2.1.1</version.spring.mybatis>
<!-- wildfly dependencies -->
@ -77,8 +77,10 @@
<!-- java ee dependencies -->
<version.thorntail>2.7.0.Final</version.thorntail>
<version.javaee-api>8.0.1</version.javaee-api>
<version.javax.servlet>4.0.1</version.javax.servlet>
<version.jakartaee-api>10.0.0</version.jakartaee-api>
<version.jakarta.enterprise.cdi-api>4.0.1</version.jakarta.enterprise.cdi-api>
<version.jakarta.inject-api>2.0.1</version.jakarta.inject-api>
<version.jakarta.servlet>6.0.0</version.jakarta.servlet>
<version.arquillian>1.5.0.Final</version.arquillian>
<version.arquillian.managed.wildfly>3.0.1.Final</version.arquillian.managed.wildfly>
@ -88,9 +90,10 @@
<version.equalsverifier>3.15.3</version.equalsverifier>
<version.openpojo>0.9.1</version.openpojo>
<version.jacoco>0.8.11</version.jacoco>
<version.slf4j-test>1.2.0</version.slf4j-test>
<version.slf4j-test>3.0.1</version.slf4j-test>
<version.auto-restdocs>2.0.11</version.auto-restdocs>
<version.testcontainers>1.19.1</version.testcontainers>
<version.mockito-inline>5.2.0</version.mockito-inline>
<!-- AspectJ dependencies -->
<version.aspectj-maven-plugin>1.14.0</version.aspectj-maven-plugin>
@ -98,10 +101,10 @@
<!-- Excel to DMN converter dependencies -->
<version.dmn-xlsx-converter>0.3.0</version.dmn-xlsx-converter>
<version.jaxb-api>2.3.1</version.jaxb-api>
<version.jaxb-core>4.0.4</version.jaxb-core>
<version.jakarta.xml.bind-api>2.3.3</version.jakarta.xml.bind-api>
<version.jaxb-core>2.3.0.1</version.jaxb-core>
<version.jaxb-impl>2.3.8</version.jaxb-impl>
<version.javax.activation>1.1.1</version.javax.activation>
<version.jakarta.activation>2.1.2</version.jakarta.activation>
<!-- database driver versions -->
<version.db2>11.5.6.0</version.db2>

View File

@ -9,7 +9,10 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.ldap.core.support.BaseLdapPathContextSource;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
import org.springframework.security.config.ldap.LdapPasswordComparisonAuthenticationManagerFactory;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
@ -58,33 +61,30 @@ public class BootWebSecurityConfigurer {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
HttpSecurity httpSecurity =
http.authorizeRequests()
.antMatchers("/css/**", "/img/**")
.permitAll()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/docs/**")
.permitAll()
.and()
http.authorizeHttpRequests(
authorizeHttpRequests ->
authorizeHttpRequests
.requestMatchers("/css/**", "/img/**")
.permitAll()
.requestMatchers(HttpMethod.GET, "/docs/**")
.permitAll())
.addFilter(jaasApiIntegrationFilter())
.addFilterAfter(new SpringSecurityToJaasFilter(), JaasApiIntegrationFilter.class);
if (enableCsrf) {
CookieCsrfTokenRepository csrfTokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse();
csrfTokenRepository.setCookiePath("/");
httpSecurity.csrf().csrfTokenRepository(csrfTokenRepository);
httpSecurity.csrf(csrf -> csrf.csrfTokenRepository(csrfTokenRepository));
} else {
httpSecurity.csrf().disable().httpBasic();
httpSecurity.csrf(AbstractHttpConfigurer::disable).httpBasic(Customizer.withDefaults());
}
if (devMode) {
http.headers()
.frameOptions()
.sameOrigin()
.and()
.authorizeRequests()
.antMatchers("/h2-console/**")
.permitAll();
http.headers(
headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin))
.authorizeHttpRequests(
authorizeHttpRequests ->
authorizeHttpRequests.requestMatchers("/h2-console/**").permitAll());
} else {
addLoginPageConfiguration(http);
}
@ -119,23 +119,19 @@ public class BootWebSecurityConfigurer {
}
protected void addLoginPageConfiguration(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest()
.fullyAuthenticated()
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.deleteCookies("JSESSIONID")
.permitAll();
http.authorizeHttpRequests(
authorizeHttpRequests -> authorizeHttpRequests.anyRequest().fullyAuthenticated())
.formLogin(
formLogin ->
formLogin.loginPage("/login").failureUrl("/login?error").defaultSuccessUrl("/"))
.logout(
logout ->
logout
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout")
.deleteCookies("JSESSIONID"));
}
protected JaasApiIntegrationFilter jaasApiIntegrationFilter() {

View File

@ -2,8 +2,8 @@ package pro.taskana.example.rest;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import jakarta.annotation.PostConstruct;
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;

View File

@ -65,8 +65,8 @@
<version>${version.spring.core}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope>
</dependency>

View File

@ -1,13 +1,13 @@
package pro.taskana.example.wildfly.security;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import javax.security.auth.Subject;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.GenericFilterBean;

View File

@ -1,7 +1,7 @@
package pro.taskana.example.wildfly.security;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;

View File

@ -3,6 +3,7 @@ package pro.taskana.example.wildfly.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.jaasapi.JaasApiIntegrationFilter;
@ -17,8 +18,7 @@ public class WildflyWebSecurityConfigurer {
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.addFilter(jaasApiIntegrationFilter())
.addFilterAfter(new ElytronToJaasFilter(), JaasApiIntegrationFilter.class)
.csrf()
.disable();
.csrf(AbstractHttpConfigurer::disable);
return http.build();
}

View File

@ -3,8 +3,8 @@
<module xmlns="urn:jboss:module:1.1" name="org.postgresql.postgresql">
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="jakarta.api"/>
<module name="jakarta.transaction.api"/>
</dependencies>
<resources>

View File

@ -32,9 +32,9 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${version.javax.servlet}</version>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${version.jakarta.servlet}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>

View File

@ -1,13 +1,13 @@
package pro.taskana.rest.test;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import java.io.IOException;
import java.security.AccessController;
import java.util.Optional;
import javax.security.auth.Subject;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;

View File

@ -1,5 +1,7 @@
package pro.taskana.rest.test;
import static org.springframework.security.config.Customizer.withDefaults;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@ -12,6 +14,7 @@ import org.springframework.context.annotation.Primary;
import org.springframework.ldap.core.support.BaseLdapPathContextSource;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.ldap.LdapPasswordComparisonAuthenticationManagerFactory;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
@ -102,17 +105,12 @@ public class TestWebSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeRequests()
.and()
.csrf()
.disable()
.httpBasic()
.and()
http.csrf(AbstractHttpConfigurer::disable)
.httpBasic(withDefaults())
.addFilter(jaasApiIntegrationFilter())
.addFilterAfter(new SpringSecurityToJaasFilter(), JaasApiIntegrationFilter.class)
.authorizeRequests()
.anyRequest()
.fullyAuthenticated();
.authorizeHttpRequests(
authorizeHttpRequests -> authorizeHttpRequests.anyRequest().fullyAuthenticated());
return http.build();
}

View File

@ -50,13 +50,13 @@
<artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>

View File

@ -1,9 +1,9 @@
package pro.taskana.classification.rest;
import jakarta.servlet.http.HttpServletRequest;
import java.beans.ConstructorProperties;
import java.util.List;
import java.util.function.BiConsumer;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.MediaTypes;
import org.springframework.hateoas.config.EnableHypermediaSupport;

View File

@ -1,9 +1,9 @@
package pro.taskana.classification.rest.models;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotNull;
import java.beans.ConstructorProperties;
import java.util.Collection;
import javax.validation.constraints.NotNull;
import pro.taskana.common.rest.models.PageMetadata;
import pro.taskana.common.rest.models.PagedRepresentationModel;

View File

@ -1,6 +1,6 @@
package pro.taskana.classification.rest.models;
import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotNull;
import org.springframework.hateoas.RepresentationModel;
import pro.taskana.classification.api.models.ClassificationSummary;

View File

@ -2,9 +2,9 @@ package pro.taskana.common.rest;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.Min;
import java.beans.ConstructorProperties;
import java.util.List;
import javax.validation.constraints.Min;
import pro.taskana.common.api.BaseQuery;
import pro.taskana.common.rest.models.PageMetadata;

View File

@ -1,13 +1,13 @@
package pro.taskana.common.rest;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import java.io.IOException;
import java.security.AccessController;
import java.util.Optional;
import javax.security.auth.Subject;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;

View File

@ -20,10 +20,11 @@ import org.springframework.core.annotation.Order;
import org.springframework.core.convert.ConversionFailedException;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.lang.NonNull;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
@ -172,10 +173,10 @@ public class TaskanaRestExceptionHandler extends ResponseEntityExceptionHandler
@Override
@NonNull
protected ResponseEntity<Object> handleBindException(
BindException ex,
protected ResponseEntity<Object> handleMethodArgumentNotValid(
MethodArgumentNotValidException ex,
@NonNull HttpHeaders headers,
@NonNull HttpStatus status,
@NonNull HttpStatusCode status,
@NonNull WebRequest request) {
MalformedQueryParameter[] wrongQueryParameters =

View File

@ -2,6 +2,7 @@ package pro.taskana.common.rest.ldap;
import static java.util.function.Predicate.not;
import jakarta.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@ -12,7 +13,6 @@ import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import javax.naming.directory.SearchControls;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -1,6 +1,6 @@
package pro.taskana.common.rest.models;
import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotNull;
import org.springframework.hateoas.RepresentationModel;
import org.springframework.lang.NonNull;

View File

@ -1,6 +1,7 @@
package pro.taskana.common.rest.util;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.servlet.http.HttpServletRequest;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
@ -8,7 +9,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import pro.taskana.common.api.exceptions.InvalidArgumentException;
public class QueryParamsValidator {

View File

@ -1,9 +1,9 @@
package pro.taskana.task.rest;
import jakarta.servlet.http.HttpServletRequest;
import java.beans.ConstructorProperties;
import java.util.List;
import java.util.function.BiConsumer;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;

View File

@ -2,6 +2,7 @@ package pro.taskana.task.rest;
import static java.util.function.Predicate.not;
import jakarta.servlet.http.HttpServletRequest;
import java.beans.ConstructorProperties;
import java.util.HashSet;
import java.util.List;
@ -10,7 +11,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
@ -109,11 +109,12 @@ public class TaskController {
NotAuthorizedOnWorkbasketException {
if (!taskRepresentationModel.getAttachments().stream()
.filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
.collect(Collectors.toList()).isEmpty()) {
.filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
.collect(Collectors.toList())
.isEmpty()) {
throw new InvalidArgumentException(
"An attachments' taskId must be empty or equal to the id of the task it belongs to");
"An attachments' taskId must be empty or equal to the id of the task it belongs to");
}
Task fromResource = taskRepresentationModelAssembler.toEntityModel(taskRepresentationModel);
@ -597,11 +598,12 @@ public class TaskController {
}
if (!taskRepresentationModel.getAttachments().stream()
.filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
.collect(Collectors.toList()).isEmpty()) {
.filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
.collect(Collectors.toList())
.isEmpty()) {
throw new InvalidArgumentException(
"An attachments' taskId must be empty or equal to the id of the task it belongs to");
"An attachments' taskId must be empty or equal to the id of the task it belongs to");
}
Task task = taskRepresentationModelAssembler.toEntityModel(taskRepresentationModel);

View File

@ -2,10 +2,10 @@ package pro.taskana.task.rest.models;
import static pro.taskana.task.api.models.TaskSummary.DEFAULT_MANUAL_PRIORITY;
import jakarta.validation.constraints.NotNull;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.NotNull;
import org.springframework.hateoas.RepresentationModel;
import pro.taskana.classification.rest.models.ClassificationSummaryRepresentationModel;
import pro.taskana.task.api.TaskState;

View File

@ -1,9 +1,9 @@
package pro.taskana.user.rest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
@ -41,9 +41,10 @@ public class UserController {
private final CurrentUserContext currentUserContext;
@Autowired
UserController(UserService userService,
UserRepresentationModelAssembler userAssembler,
CurrentUserContext currentUserContext) {
UserController(
UserService userService,
UserRepresentationModelAssembler userAssembler,
CurrentUserContext currentUserContext) {
this.userService = userService;
this.userAssembler = userAssembler;
this.currentUserContext = currentUserContext;
@ -68,8 +69,8 @@ public class UserController {
/**
* This endpoint retrieves multiple Users. If a userId can't be found in the database it will be
* ignored. If none of the given userIds is valid, the returned list will be empty.
* If currentUser is set, the current User from the context will be retrieved as well
* ignored. If none of the given userIds is valid, the returned list will be empty. If currentUser
* is set, the current User from the context will be retrieved as well
*
* @title Get multiple Users
* @param request the HttpServletRequest of the request itself
@ -85,7 +86,7 @@ public class UserController {
HttpServletRequest request,
@RequestParam(name = "user-id", required = false) String[] userIds,
@RequestParam(name = "current-user", required = false) String currentUser)
throws InvalidArgumentException, UserNotFoundException {
throws InvalidArgumentException, UserNotFoundException {
Set<User> users = new HashSet<>();
if (userIds != null) {

View File

@ -1,9 +1,9 @@
package pro.taskana.user.rest.models;
import jakarta.validation.constraints.NotNull;
import java.util.Collections;
import java.util.Objects;
import java.util.Set;
import javax.validation.constraints.NotNull;
import org.springframework.hateoas.RepresentationModel;
import pro.taskana.user.api.models.User;

View File

@ -1,9 +1,9 @@
package pro.taskana.workbasket.rest;
import jakarta.servlet.http.HttpServletRequest;
import java.beans.ConstructorProperties;
import java.util.List;
import java.util.function.BiConsumer;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.http.ResponseEntity;

View File

@ -1,10 +1,10 @@
package pro.taskana.workbasket.rest;
import jakarta.servlet.http.HttpServletRequest;
import java.beans.ConstructorProperties;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

View File

@ -32,9 +32,9 @@
<version>${version.dmn-xlsx-converter}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${version.jaxb-api}</version>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>${version.jakarta.xml.bind-api}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
@ -47,9 +47,9 @@
<version>${version.jaxb-impl}</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${version.javax.activation}</version>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>${version.jakarta.activation}</version>
</dependency>
<!-- test dependencies -->