diff --git a/datasafe-business/pom.xml b/datasafe-business/pom.xml index 0a662fb81..366526577 100644 --- a/datasafe-business/pom.xml +++ b/datasafe-business/pom.xml @@ -179,7 +179,10 @@ h2 test - + + javax.xml.bind + jaxb-api + diff --git a/datasafe-rest-impl/pom.xml b/datasafe-rest-impl/pom.xml index 52a20ca96..217636c3f 100644 --- a/datasafe-rest-impl/pom.xml +++ b/datasafe-rest-impl/pom.xml @@ -14,13 +14,13 @@ Spring Boot DataSafe Application - 1.8 - 2.1.5.RELEASE + 3.1.2 2.9.2 0.10.5 2.0.3.RELEASE 1.5.3 1.6.0 + 3.0.2 @@ -77,6 +77,11 @@ ${spring-boot.version} true + + jakarta.validation + jakarta.validation-api + ${jakarta.validation-api.varsion} + io.springfox springfox-swagger2 diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/config/MvcConfig.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/config/MvcConfig.java index be61ced29..9cbbc7ed4 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/config/MvcConfig.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/config/MvcConfig.java @@ -2,16 +2,20 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.format.support.FormattingConversionService; import org.springframework.http.MediaType; import org.springframework.util.AntPathMatcher; import org.springframework.util.StringUtils; +import org.springframework.web.accept.ContentNegotiationManager; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; +import org.springframework.web.servlet.resource.ResourceUrlProvider; import java.util.LinkedHashMap; import java.util.Map; @@ -34,8 +38,12 @@ public class MvcConfig extends WebMvcConfigurationSupport { */ @Bean @Override - public RequestMappingHandlerMapping requestMappingHandlerMapping() { - RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping(); + public RequestMappingHandlerMapping requestMappingHandlerMapping( + @Qualifier("mvcContentNegotiationManager") ContentNegotiationManager contentNegotiationManager, + @Qualifier("mvcConversionService") FormattingConversionService conversionService, + @Qualifier("mvcResourceUrlProvider") ResourceUrlProvider resourceUrlProvider + ) { + RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping(contentNegotiationManager, conversionService, resourceUrlProvider); handlerMapping.setPathMatcher(new ExtendedMatcher()); return handlerMapping; } diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/AuthenticateController.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/AuthenticateController.java index efadca301..efdba1e6c 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/AuthenticateController.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/AuthenticateController.java @@ -11,6 +11,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.AuthenticationManager; @@ -22,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; import java.util.stream.Collectors; diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/DocumentController.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/DocumentController.java index ebe7e647f..0aa1a7d6b 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/DocumentController.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/DocumentController.java @@ -16,6 +16,7 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -29,7 +30,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.util.List; diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java index 525a8b6d0..b5aad6ef5 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/InboxController.java @@ -16,6 +16,7 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -29,7 +30,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.util.List; diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java index dc1b468d9..645e7c110 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/controller/VersionController.java @@ -20,6 +20,7 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -33,7 +34,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.util.List; diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/NewPasswordDTO.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/NewPasswordDTO.java index a81f1baec..dc1acf405 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/NewPasswordDTO.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/NewPasswordDTO.java @@ -1,11 +1,10 @@ package de.adorsys.datasafe.rest.impl.dto; +import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotBlank; - @Data @AllArgsConstructor @NoArgsConstructor diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/StorageCredsDTO.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/StorageCredsDTO.java index 40af03488..309755492 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/StorageCredsDTO.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/StorageCredsDTO.java @@ -1,10 +1,9 @@ package de.adorsys.datasafe.rest.impl.dto; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - @Data public class StorageCredsDTO { diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserDTO.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserDTO.java index 11d021048..5c5607627 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserDTO.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserDTO.java @@ -1,12 +1,11 @@ package de.adorsys.datasafe.rest.impl.dto; import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotBlank; - @Data @AllArgsConstructor @NoArgsConstructor diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPrivateProfileDTO.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPrivateProfileDTO.java index d2d81beac..5c00f5cb5 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPrivateProfileDTO.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPrivateProfileDTO.java @@ -3,13 +3,13 @@ import de.adorsys.datasafe.directory.api.types.UserPrivateProfile; import de.adorsys.datasafe.types.api.global.Version; import de.adorsys.datasafe.types.api.resource.StorageIdentifier; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.util.List; import java.util.Map; import java.util.stream.Collectors; diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPublicProfileDTO.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPublicProfileDTO.java index b4ea0d4b7..8cecb2057 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPublicProfileDTO.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/dto/UserPublicProfileDTO.java @@ -2,12 +2,11 @@ import de.adorsys.datasafe.directory.api.types.UserPublicProfile; import de.adorsys.datasafe.types.api.global.Version; +import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotBlank; - @Data @NoArgsConstructor @AllArgsConstructor diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java index a71339935..592f16087 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/JwtAuthorizationFilter.java @@ -8,6 +8,10 @@ import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.UnsupportedJwtException; import io.jsonwebtoken.security.SignatureException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -15,10 +19,6 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; diff --git a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java index 475e5bfe4..cc99e09ac 100644 --- a/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java +++ b/datasafe-rest-impl/src/main/java/de/adorsys/datasafe/rest/impl/security/SecurityConfig.java @@ -1,18 +1,19 @@ package de.adorsys.datasafe.rest.impl.security; -import lombok.SneakyThrows; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.BeanIds; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; 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.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.firewall.HttpFirewall; import org.springframework.security.web.firewall.StrictHttpFirewall; import org.springframework.web.cors.CorsConfiguration; @@ -22,10 +23,10 @@ import static de.adorsys.datasafe.rest.impl.security.SecurityConstants.TOKEN_HEADER; @EnableWebSecurity -@EnableGlobalMethodSecurity(securedEnabled = true) -public class SecurityConfig extends WebSecurityConfigurerAdapter { +@EnableMethodSecurity(securedEnabled = true) +public class SecurityConfig { - public static final String[] SWAGGER_RESOURCES = { + private static final String[] SWAGGER_RESOURCES = { "/v2/api-docs", "/configuration/ui", "/swagger-resources", @@ -42,28 +43,32 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { this.securityProperties = securityProperties; } - @Override - protected void configure(HttpSecurity http) throws Exception { - http.cors().and() - .csrf().disable() - .authorizeRequests() - .antMatchers(SWAGGER_RESOURCES).permitAll() - .antMatchers("/static/**").permitAll() - .antMatchers(SecurityConstants.AUTH_LOGIN_URL).permitAll() - .antMatchers(HttpMethod.OPTIONS, "/**").permitAll() - .anyRequest().authenticated() - .and() - .addFilter(new JwtAuthorizationFilter(authenticationManager(), securityProperties)) - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.STATELESS); + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class); + http.cors(AbstractHttpConfigurer::disable) + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests(authz -> authz + .requestMatchers(SWAGGER_RESOURCES).permitAll() + .requestMatchers("/static/**").permitAll() + .requestMatchers(SecurityConstants.AUTH_LOGIN_URL).permitAll() + .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() + .anyRequest().authenticated() + ) + .addFilter(new JwtAuthorizationFilter(authenticationManager, securityProperties)) + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); + + return http.build(); } - @Override - public void configure(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication() - .withUser(securityProperties.getDefaultUser()) - .password(passwordEncoder().encode(securityProperties.getDefaultPassword())) - .authorities("ROLE_USER"); + @Bean + public InMemoryUserDetailsManager userDetailsService(PasswordEncoder passwordEncoder) { + UserDetails user = User.withDefaultPasswordEncoder() + .username(securityProperties.getDefaultUser()) + .password(passwordEncoder.encode(securityProperties.getDefaultPassword())) + .authorities("ROLE_USER") + .build(); + return new InMemoryUserDetailsManager(user); } @Bean @@ -94,16 +99,4 @@ public CorsConfigurationSource corsConfigurationSource() { return source; } - - @Bean(name = BeanIds.AUTHENTICATION_MANAGER) - @Override - public AuthenticationManager authenticationManagerBean() throws Exception { - return super.authenticationManagerBean(); - } - - @Bean - @SneakyThrows - public JwtAuthorizationFilter jwtAuthorizationFilter() { - return new JwtAuthorizationFilter(authenticationManager(), securityProperties); - } } diff --git a/datasafe-runtime-delegate/src/main/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateProcessor.java b/datasafe-runtime-delegate/src/main/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateProcessor.java index 11643db98..4403d5c4f 100644 --- a/datasafe-runtime-delegate/src/main/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateProcessor.java +++ b/datasafe-runtime-delegate/src/main/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateProcessor.java @@ -31,7 +31,7 @@ * there is nothing associated with annotated class in {@link OverridesRegistry} - it calls default implementation. */ @SupportedAnnotationTypes(ANNOTATION_CLASS) -@SupportedSourceVersion(SourceVersion.RELEASE_8) +@SupportedSourceVersion(SourceVersion.RELEASE_17) @AutoService(Processor.class) public class RuntimeDelegateProcessor extends AbstractProcessor { diff --git a/datasafe-runtime-delegate/src/test/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateTest.java b/datasafe-runtime-delegate/src/test/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateTest.java index a3d0e7b54..07fee3ac3 100644 --- a/datasafe-runtime-delegate/src/test/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateTest.java +++ b/datasafe-runtime-delegate/src/test/java/de/adorsys/datasafe/runtimedelegate/RuntimeDelegateTest.java @@ -12,7 +12,6 @@ import static com.google.testing.compile.CompilationSubject.assertThat; import static com.google.testing.compile.Compiler.javac; -@Disabled class RuntimeDelegateTest { @ParameterizedTest diff --git a/datasafe-runtime-delegate/src/test/resources/output/SimpleClassRuntimeDelegatable.java b/datasafe-runtime-delegate/src/test/resources/output/SimpleClassRuntimeDelegatable.java index 6dbdba2e3..141623da4 100644 --- a/datasafe-runtime-delegate/src/test/resources/output/SimpleClassRuntimeDelegatable.java +++ b/datasafe-runtime-delegate/src/test/resources/output/SimpleClassRuntimeDelegatable.java @@ -1,7 +1,7 @@ import de.adorsys.datasafe.types.api.context.overrides.OverridesRegistry; +import jakarta.annotation.Generated; import java.lang.Override; import java.util.function.Function; -import javax.annotation.Generated; import javax.annotation.Nullable; import javax.inject.Inject; diff --git a/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithGenericRuntimeDelegatable.java b/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithGenericRuntimeDelegatable.java index b045c7aee..568374d8e 100644 --- a/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithGenericRuntimeDelegatable.java +++ b/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithGenericRuntimeDelegatable.java @@ -1,8 +1,8 @@ import de.adorsys.datasafe.types.api.context.overrides.OverridesRegistry; +import jakarta.annotation.Generated; import java.lang.Override; import java.util.List; import java.util.function.Function; -import javax.annotation.Generated; import javax.annotation.Nullable; import javax.inject.Inject; diff --git a/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithVoidRuntimeDelegatable.java b/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithVoidRuntimeDelegatable.java index 77f34e5c9..43c954e5c 100644 --- a/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithVoidRuntimeDelegatable.java +++ b/datasafe-runtime-delegate/src/test/resources/output/SimpleClassWithVoidRuntimeDelegatable.java @@ -1,7 +1,7 @@ import de.adorsys.datasafe.types.api.context.overrides.OverridesRegistry; +import jakarta.annotation.Generated; import java.lang.Override; import java.util.function.Function; -import javax.annotation.Generated; import javax.annotation.Nullable; import javax.inject.Inject; diff --git a/pom.xml b/pom.xml index f8dd0710f..c4f5e7dd3 100644 --- a/pom.xml +++ b/pom.xml @@ -78,9 +78,10 @@ ${basedir}/../../target/jacoco.exec ${basedir}/../target/jacoco-e2e.exec - 1.8 19.2.0 3.11.0 + 17 + 17 3.6.0 1.18.28 2.8.9 @@ -95,8 +96,6 @@ 1.21 UTF-8 false - 1.8 - 1.8 1.18.3 0.8.10 2.5 @@ -118,12 +117,13 @@ 8.0.16 3.6.1 5.1.7.RELEASE - 2.1.5.RELEASE + 3.1.2 1.3.1 2.12.7 2.12.7.1 0.0.7 2.1.1 + 2.3.1 @@ -333,6 +333,11 @@ HikariCP ${hikari.cp} + + javax.xml.bind + jaxb-api + ${jaxb-api.version} + @@ -372,7 +377,24 @@ maven-surefire-plugin ${surefire.version} - ${surefireArgLine} + + + --add-opens java.base/java.lang=ALL-UNNAMED, + + --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED, + --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED, + + --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED, + --add-opens=jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED +