diff --git a/api/pom.xml b/api/pom.xml index 833670324..e2c920c6d 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -15,8 +15,8 @@ Spring Boot Terrakube API 17 - 6.1.12 - 4.8.0 + 7.0.3 + 4.26.0 5.7.0 11.2.3.jre17 1.11.2 @@ -24,31 +24,33 @@ 6.6.1.202309021850-r 4.5.1 5.9.0 - 3.0.8 + 42.7.2 8.0.28 5.13.2 2.0 - 2.3.2 + 2.5.0-rc1 1.12.261 26.3.0 0.11.5 - 3.9.0 - 1.10.0 + 4.4.7 + 1.11.0 3.13.0 ${basedir}/../${aggregate.report.dir} 3.8.8 + 2.15.1 - paketobuildpacks/builder-jammy-tiny - gcr.io/paketo-buildpacks/java:12.0.0 - gcr.io/paketo-buildpacks/opentelemetry + paketobuildpacks/builder-jammy-base + gcr.io/paketo-buildpacks/java:12.1.0 + gcr.io/paketo-buildpacks/opentelemetry:1.7.1 org.springframework.boot spring-boot-maven-plugin + 3.1.10 ${buildpack.builder} @@ -104,6 +106,14 @@ org.springframework.boot spring-boot-starter-data-redis + + org.springframework.boot + spring-boot-starter-test + + + org.springframework.boot + spring-boot-starter-validation + redis.clients jedis @@ -216,6 +226,12 @@ commons-text ${commons-text.version} + + commons-io + commons-io + ${commons-io.version} + + org.apache.commons commons-lang3 @@ -288,6 +304,18 @@ maven-artifact ${maven-artifact.version} + + com.nimbusds + nimbus-jose-jwt + 9.38-rc3 + compile + + + com.nimbusds + nimbus-jose-jwt + 9.37.3 + compile + diff --git a/api/src/main/java/org/terrakube/api/plugin/importer/tfcloud/services/WorkspaceService.java b/api/src/main/java/org/terrakube/api/plugin/importer/tfcloud/services/WorkspaceService.java index 235ac7040..ebd5ad1ed 100644 --- a/api/src/main/java/org/terrakube/api/plugin/importer/tfcloud/services/WorkspaceService.java +++ b/api/src/main/java/org/terrakube/api/plugin/importer/tfcloud/services/WorkspaceService.java @@ -28,7 +28,6 @@ import org.terrakube.api.rs.workspace.parameters.Variable; import org.terrakube.api.rs.workspace.tag.WorkspaceTag; -import liquibase.pro.packaged.lo; import org.terrakube.api.rs.tag.Tag; import org.springframework.beans.factory.annotation.Value; diff --git a/api/src/main/java/org/terrakube/api/plugin/scheduler/ScheduleJobService.java b/api/src/main/java/org/terrakube/api/plugin/scheduler/ScheduleJobService.java index 04e84b557..b8c6e9c3d 100644 --- a/api/src/main/java/org/terrakube/api/plugin/scheduler/ScheduleJobService.java +++ b/api/src/main/java/org/terrakube/api/plugin/scheduler/ScheduleJobService.java @@ -2,7 +2,6 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.terrakube.api.repository.JobRepository; import org.terrakube.api.repository.StepRepository; import org.terrakube.api.repository.WorkspaceRepository; import org.terrakube.api.rs.job.Job; diff --git a/api/src/main/java/org/terrakube/api/plugin/scheduler/job/tcl/executor/ExecutorService.java b/api/src/main/java/org/terrakube/api/plugin/scheduler/job/tcl/executor/ExecutorService.java index 49b216eba..8168373c5 100644 --- a/api/src/main/java/org/terrakube/api/plugin/scheduler/job/tcl/executor/ExecutorService.java +++ b/api/src/main/java/org/terrakube/api/plugin/scheduler/job/tcl/executor/ExecutorService.java @@ -21,7 +21,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; -import javax.swing.text.html.Option; import java.util.*; @Slf4j diff --git a/api/src/main/java/org/terrakube/api/plugin/scheduler/module/CacheService.java b/api/src/main/java/org/terrakube/api/plugin/scheduler/module/CacheService.java index d6f15cad0..41a151686 100644 --- a/api/src/main/java/org/terrakube/api/plugin/scheduler/module/CacheService.java +++ b/api/src/main/java/org/terrakube/api/plugin/scheduler/module/CacheService.java @@ -3,7 +3,6 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.quartz.*; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; diff --git a/api/src/main/java/org/terrakube/api/plugin/security/audit/GenericAuditFields.java b/api/src/main/java/org/terrakube/api/plugin/security/audit/GenericAuditFields.java index 11ac4e234..76f1f5044 100644 --- a/api/src/main/java/org/terrakube/api/plugin/security/audit/GenericAuditFields.java +++ b/api/src/main/java/org/terrakube/api/plugin/security/audit/GenericAuditFields.java @@ -8,7 +8,7 @@ import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.Date; @Getter diff --git a/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexAuthenticationManagerResolver.java b/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexAuthenticationManagerResolver.java index 30c0ddf6a..ee68e9b0f 100644 --- a/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexAuthenticationManagerResolver.java +++ b/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexAuthenticationManagerResolver.java @@ -24,7 +24,7 @@ import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.Optional; import java.util.UUID; diff --git a/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexWebSecurityAdapter.java b/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexWebSecurityAdapter.java index 9cb6ad5ff..4d1b6aada 100644 --- a/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexWebSecurityAdapter.java +++ b/api/src/main/java/org/terrakube/api/plugin/security/authentication/dex/DexWebSecurityAdapter.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManagerResolver; -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.web.SecurityFilterChain; @@ -16,33 +16,33 @@ import org.terrakube.api.repository.PatRepository; import org.terrakube.api.repository.TeamTokenRepository; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.List; @Slf4j @Configuration @EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) +@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) public class DexWebSecurityAdapter { @Bean public SecurityFilterChain filterChain(HttpSecurity http, @Value("${org.terrakube.token.issuer-uri}") String issuerUri, @Value("${org.terrakube.token.pat}") String patJwtSecret, @Value("${org.terrakube.token.internal}") String internalJwtSecret, PatRepository patRepository, TeamTokenRepository teamTokenRepository) throws Exception { - http.cors().and().csrf().ignoringAntMatchers("/remote/tfe/v2/configuration-versions/*", "/tfstate/v1/archive/*/terraform.tfstate", "/tfstate/v1/archive/*/terraform.json.tfstate","/webhook/v1/**").and().authorizeRequests(authz -> { + http.cors().and().csrf().ignoringRequestMatchers("/remote/tfe/v2/configuration-versions/*", "/tfstate/v1/archive/*/terraform.tfstate", "/tfstate/v1/archive/*/terraform.json.tfstate","/webhook/v1/**").and().authorizeRequests(authz -> { authz - .antMatchers(HttpMethod.OPTIONS, "/**").permitAll() - .antMatchers("/actuator/**").permitAll() - .antMatchers("/error").permitAll() - .antMatchers("/callback/v1/**").permitAll() - .antMatchers("/webhook/v1/**").permitAll() - .antMatchers("/.well-known/terraform.json").permitAll() - .antMatchers("/remote/tfe/v2/ping").permitAll() - .antMatchers(HttpMethod.PUT, "/remote/tfe/v2/configuration-versions/*").permitAll() - .antMatchers(HttpMethod.PUT,"/tfstate/v1/archive/*/terraform.tfstate").permitAll() - .antMatchers(HttpMethod.PUT,"/tfstate/v1/archive/*/terraform.json.tfstate").permitAll() - .antMatchers("/remote/tfe/v2/plans/*/logs").permitAll() - .antMatchers("/remote/tfe/v2/applies/*/logs").permitAll() - .antMatchers("/app/*/*/runs/*").permitAll() + .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() + .requestMatchers("/actuator/**").permitAll() + .requestMatchers("/error").permitAll() + .requestMatchers("/callback/v1/**").permitAll() + .requestMatchers("/webhook/v1/**").permitAll() + .requestMatchers("/.well-known/terraform.json").permitAll() + .requestMatchers("/remote/tfe/v2/ping").permitAll() + .requestMatchers(HttpMethod.PUT, "/remote/tfe/v2/configuration-versions/*").permitAll() + .requestMatchers(HttpMethod.PUT,"/tfstate/v1/archive/*/terraform.tfstate").permitAll() + .requestMatchers(HttpMethod.PUT,"/tfstate/v1/archive/*/terraform.json.tfstate").permitAll() + .requestMatchers("/remote/tfe/v2/plans/*/logs").permitAll() + .requestMatchers("/remote/tfe/v2/applies/*/logs").permitAll() + .requestMatchers("/app/*/*/runs/*").permitAll() .anyRequest().authenticated(); } ) diff --git a/api/src/main/java/org/terrakube/api/plugin/security/groups/dex/DexGroupServiceImpl.java b/api/src/main/java/org/terrakube/api/plugin/security/groups/dex/DexGroupServiceImpl.java index a71c2164d..eb3df38c0 100644 --- a/api/src/main/java/org/terrakube/api/plugin/security/groups/dex/DexGroupServiceImpl.java +++ b/api/src/main/java/org/terrakube/api/plugin/security/groups/dex/DexGroupServiceImpl.java @@ -1,6 +1,5 @@ package org.terrakube.api.plugin.security.groups.dex; -import com.nimbusds.jose.shaded.json.JSONArray; import com.yahoo.elide.core.security.User; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -16,7 +15,7 @@ public class DexGroupServiceImpl implements GroupService { public boolean isMember(User user, String group) { JwtAuthenticationToken principal = ((JwtAuthenticationToken) user.getPrincipal()); boolean isMember = false; - for (String groupName : toStringArray((JSONArray) principal.getTokenAttributes().get("groups"))) { + for (String groupName : toStringArray((java.util.ArrayList) principal.getTokenAttributes().get("groups"))) { if (groupName.equals(group)) isMember = true; } @@ -29,7 +28,7 @@ public boolean isServiceMember(User user, String group) { JwtAuthenticationToken principal = ((JwtAuthenticationToken) user.getPrincipal()); boolean isMember = principal.getTokenAttributes().get("iss").equals("TerrakubeInternal")? true: false; if(!isMember) { - for (String groupName : toStringArray((JSONArray) principal.getTokenAttributes().get("groups"))) { + for (String groupName : toStringArray((java.util.ArrayList) principal.getTokenAttributes().get("groups"))) { if (groupName.equals(group)) isMember = true; } @@ -40,7 +39,7 @@ public boolean isServiceMember(User user, String group) { return isMember; } - private String[] toStringArray(JSONArray array) { + private String[] toStringArray(java.util.ArrayList array) { if (array == null) return new String[0]; diff --git a/api/src/main/java/org/terrakube/api/plugin/softdelete/SoftDeleteService.java b/api/src/main/java/org/terrakube/api/plugin/softdelete/SoftDeleteService.java index b4ae9cf6b..73ecf59ce 100644 --- a/api/src/main/java/org/terrakube/api/plugin/softdelete/SoftDeleteService.java +++ b/api/src/main/java/org/terrakube/api/plugin/softdelete/SoftDeleteService.java @@ -5,7 +5,6 @@ import org.quartz.*; import org.springframework.stereotype.Service; import org.terrakube.api.plugin.scheduler.ScheduleJobService; -import org.terrakube.api.plugin.scheduler.module.DeleteStorageCacheJob; import org.terrakube.api.plugin.scheduler.workspace.DeleteStorageBackendJob; import org.terrakube.api.repository.ScheduleRepository; import org.terrakube.api.repository.WorkspaceRepository; diff --git a/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeController.java b/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeController.java index 441acf3c8..5c6996254 100644 --- a/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeController.java +++ b/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeController.java @@ -26,7 +26,7 @@ import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.security.Principal; diff --git a/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeService.java b/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeService.java index 06a93948a..b5abd3711 100644 --- a/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeService.java +++ b/api/src/main/java/org/terrakube/api/plugin/state/RemoteTfeService.java @@ -49,8 +49,6 @@ import org.terrakube.api.rs.workspace.history.archive.ArchiveType; import org.terrakube.api.rs.workspace.tag.WorkspaceTag; -import java.io.ByteArrayInputStream; -import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.text.ParseException; diff --git a/api/src/main/java/org/terrakube/api/plugin/storage/aws/AwsStorageTypeServiceImpl.java b/api/src/main/java/org/terrakube/api/plugin/storage/aws/AwsStorageTypeServiceImpl.java index 7923f459c..a0791008f 100644 --- a/api/src/main/java/org/terrakube/api/plugin/storage/aws/AwsStorageTypeServiceImpl.java +++ b/api/src/main/java/org/terrakube/api/plugin/storage/aws/AwsStorageTypeServiceImpl.java @@ -8,7 +8,6 @@ import org.apache.commons.codec.binary.StringUtils; import org.terrakube.api.plugin.storage.StorageTypeService; -import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; diff --git a/api/src/main/java/org/terrakube/api/plugin/storage/controller/TerraformStateController.java b/api/src/main/java/org/terrakube/api/plugin/storage/controller/TerraformStateController.java index 640410ef7..e208c67fa 100644 --- a/api/src/main/java/org/terrakube/api/plugin/storage/controller/TerraformStateController.java +++ b/api/src/main/java/org/terrakube/api/plugin/storage/controller/TerraformStateController.java @@ -8,11 +8,9 @@ import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.terrakube.api.repository.ArchiveRepository; -import org.terrakube.api.repository.HistoryRepository; -import org.terrakube.api.rs.workspace.history.History; import org.terrakube.api.rs.workspace.history.archive.Archive; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Optional; diff --git a/api/src/main/java/org/terrakube/api/plugin/storage/local/LocalStorageTypeServiceImpl.java b/api/src/main/java/org/terrakube/api/plugin/storage/local/LocalStorageTypeServiceImpl.java index 72dbd5d0a..63bf69bb1 100644 --- a/api/src/main/java/org/terrakube/api/plugin/storage/local/LocalStorageTypeServiceImpl.java +++ b/api/src/main/java/org/terrakube/api/plugin/storage/local/LocalStorageTypeServiceImpl.java @@ -15,7 +15,6 @@ import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.UUID; @Slf4j @AllArgsConstructor diff --git a/api/src/main/java/org/terrakube/api/plugin/streaming/StreamingService.java b/api/src/main/java/org/terrakube/api/plugin/streaming/StreamingService.java index d47870c64..8310812d2 100644 --- a/api/src/main/java/org/terrakube/api/plugin/streaming/StreamingService.java +++ b/api/src/main/java/org/terrakube/api/plugin/streaming/StreamingService.java @@ -1,6 +1,5 @@ package org.terrakube.api.plugin.streaming; -import liquibase.repackaged.org.apache.commons.text.TextStringBuilder; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.connection.stream.*; @@ -9,6 +8,7 @@ import org.terrakube.api.repository.StepRepository; import org.terrakube.api.rs.job.JobStatus; import org.terrakube.api.rs.job.step.Step; +import org.apache.commons.text.TextStringBuilder; import java.util.List; import java.util.UUID; diff --git a/api/src/main/java/org/terrakube/api/plugin/token/team/TeamTokenService.java b/api/src/main/java/org/terrakube/api/plugin/token/team/TeamTokenService.java index 1902f8888..243479765 100644 --- a/api/src/main/java/org/terrakube/api/plugin/token/team/TeamTokenService.java +++ b/api/src/main/java/org/terrakube/api/plugin/token/team/TeamTokenService.java @@ -1,10 +1,10 @@ package org.terrakube.api.plugin.token.team; -import com.nimbusds.jose.shaded.json.JSONArray; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.security.Keys; import lombok.extern.slf4j.Slf4j; +import net.minidev.json.JSONArray; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; @@ -108,7 +108,7 @@ public List searchToken(JwtAuthenticationToken principalJwt){ public List getCurrentGroups(JwtAuthenticationToken principalJwt) { Object groups = principalJwt.getTokenAttributes().get("groups"); - JSONArray array = (JSONArray) groups; + List array = (java.util.ArrayList) groups; List list = new ArrayList(); for (int i = 0; i < array.size(); i++) { list.add(array.get(i).toString()); diff --git a/api/src/main/java/org/terrakube/api/plugin/vcs/WebhookServiceBase.java b/api/src/main/java/org/terrakube/api/plugin/vcs/WebhookServiceBase.java index 2561046c9..1b139c932 100644 --- a/api/src/main/java/org/terrakube/api/plugin/vcs/WebhookServiceBase.java +++ b/api/src/main/java/org/terrakube/api/plugin/vcs/WebhookServiceBase.java @@ -3,6 +3,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.function.TriFunction; import org.springframework.http.ResponseEntity; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -10,17 +11,13 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; -import com.datical.liquibase.ext.checks.config.TriFunction; -import com.fasterxml.jackson.core.JsonProcessingException; import java.net.URL; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; import java.util.Map; -import java.util.function.BiFunction; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; diff --git a/api/src/main/java/org/terrakube/api/rs/IdConverter.java b/api/src/main/java/org/terrakube/api/rs/IdConverter.java new file mode 100644 index 000000000..571571713 --- /dev/null +++ b/api/src/main/java/org/terrakube/api/rs/IdConverter.java @@ -0,0 +1,20 @@ +package org.terrakube.api.rs; + +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; + +import java.util.UUID; + +@Converter +public class IdConverter implements + AttributeConverter { + @Override + public String convertToDatabaseColumn(UUID uuid) { + return uuid.toString(); + } + + @Override + public UUID convertToEntityAttribute(String s) { + return UUID.fromString(s); + } +} diff --git a/api/src/main/java/org/terrakube/api/rs/Organization.java b/api/src/main/java/org/terrakube/api/rs/Organization.java index 2fe5c6545..071d621db 100644 --- a/api/src/main/java/org/terrakube/api/rs/Organization.java +++ b/api/src/main/java/org/terrakube/api/rs/Organization.java @@ -3,6 +3,7 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Where; import org.terrakube.api.rs.agent.Agent; import org.terrakube.api.rs.globalvar.Globalvar; @@ -18,7 +19,9 @@ import org.terrakube.api.rs.workspace.Workspace; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.List; import java.util.UUID; @@ -36,8 +39,9 @@ public class Organization { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/agent/Agent.java b/api/src/main/java/org/terrakube/api/rs/agent/Agent.java index a88652f47..005476ef3 100644 --- a/api/src/main/java/org/terrakube/api/rs/agent/Agent.java +++ b/api/src/main/java/org/terrakube/api/rs/agent/Agent.java @@ -3,10 +3,13 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; -import org.hibernate.annotations.Type; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @CreatePermission(expression = "user is a superuser") @@ -19,8 +22,9 @@ public class Agent { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/globalvar/Globalvar.java b/api/src/main/java/org/terrakube/api/rs/globalvar/Globalvar.java index 4c6d4eeb7..62bd58614 100644 --- a/api/src/main/java/org/terrakube/api/rs/globalvar/Globalvar.java +++ b/api/src/main/java/org/terrakube/api/rs/globalvar/Globalvar.java @@ -3,11 +3,14 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.terrakube.api.rs.workspace.parameters.Category; -import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @CreatePermission(expression = "user is a superuser") @@ -20,8 +23,9 @@ public class Globalvar { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name="variable_description") diff --git a/api/src/main/java/org/terrakube/api/rs/job/Job.java b/api/src/main/java/org/terrakube/api/rs/job/Job.java index f660b6e44..095d37aff 100644 --- a/api/src/main/java/org/terrakube/api/rs/job/Job.java +++ b/api/src/main/java/org/terrakube/api/rs/job/Job.java @@ -3,13 +3,17 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.terrakube.api.rs.hooks.job.JobManageHook; import org.terrakube.api.rs.job.step.Step; import org.terrakube.api.rs.workspace.Workspace; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.List; @LifeCycleHookBinding(operation = LifeCycleHookBinding.Operation.CREATE, phase = LifeCycleHookBinding.TransactionPhase.POSTCOMMIT, hook = JobManageHook.class) diff --git a/api/src/main/java/org/terrakube/api/rs/job/step/Step.java b/api/src/main/java/org/terrakube/api/rs/job/step/Step.java index 3e179eb83..4183b7dd4 100644 --- a/api/src/main/java/org/terrakube/api/rs/job/step/Step.java +++ b/api/src/main/java/org/terrakube/api/rs/job/step/Step.java @@ -4,12 +4,15 @@ import com.yahoo.elide.annotation.Include; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.job.Job; import org.terrakube.api.rs.job.JobStatus; -import org.hibernate.annotations.Type; import org.terrakube.api.rs.job.LogStatus; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @Include @@ -19,8 +22,9 @@ public class Step { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "step_number") diff --git a/api/src/main/java/org/terrakube/api/rs/module/Module.java b/api/src/main/java/org/terrakube/api/rs/module/Module.java index ee7a00d6c..ff89b5032 100644 --- a/api/src/main/java/org/terrakube/api/rs/module/Module.java +++ b/api/src/main/java/org/terrakube/api/rs/module/Module.java @@ -4,14 +4,17 @@ import com.yahoo.elide.core.RequestScope; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.terrakube.api.rs.hooks.module.ModuleManageHook; import org.terrakube.api.rs.ssh.Ssh; import org.terrakube.api.rs.vcs.Vcs; -import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.*; @ReadPermission(expression = "team view module") @@ -25,8 +28,9 @@ @Entity(name = "module") public class Module extends GenericAuditFields { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/provider/Provider.java b/api/src/main/java/org/terrakube/api/rs/provider/Provider.java index 9b981c23b..31fa64b4e 100644 --- a/api/src/main/java/org/terrakube/api/rs/provider/Provider.java +++ b/api/src/main/java/org/terrakube/api/rs/provider/Provider.java @@ -3,11 +3,14 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.terrakube.api.rs.provider.implementation.Version; -import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.List; import java.util.UUID; @@ -21,8 +24,9 @@ @Entity(name = "provider") public class Provider { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/provider/implementation/Implementation.java b/api/src/main/java/org/terrakube/api/rs/provider/implementation/Implementation.java index e153c252b..61818ac25 100644 --- a/api/src/main/java/org/terrakube/api/rs/provider/implementation/Implementation.java +++ b/api/src/main/java/org/terrakube/api/rs/provider/implementation/Implementation.java @@ -3,9 +3,13 @@ import com.yahoo.elide.annotation.Include; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; +import org.terrakube.api.rs.IdConverter; + +import java.sql.Types; import java.util.UUID; @Include @@ -15,8 +19,9 @@ public class Implementation { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name="os") diff --git a/api/src/main/java/org/terrakube/api/rs/provider/implementation/Version.java b/api/src/main/java/org/terrakube/api/rs/provider/implementation/Version.java index 60beffcbb..9d5f027ed 100644 --- a/api/src/main/java/org/terrakube/api/rs/provider/implementation/Version.java +++ b/api/src/main/java/org/terrakube/api/rs/provider/implementation/Version.java @@ -3,10 +3,12 @@ import com.yahoo.elide.annotation.Include; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.rs.provider.Provider; -import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.List; import java.util.UUID; @@ -17,8 +19,8 @@ public class Version { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "version_number") diff --git a/api/src/main/java/org/terrakube/api/rs/ssh/Ssh.java b/api/src/main/java/org/terrakube/api/rs/ssh/Ssh.java index 5b860604d..18a804a27 100644 --- a/api/src/main/java/org/terrakube/api/rs/ssh/Ssh.java +++ b/api/src/main/java/org/terrakube/api/rs/ssh/Ssh.java @@ -3,11 +3,14 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; -import org.hibernate.annotations.Type; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @ReadPermission(expression = "team view ssh") @@ -21,8 +24,9 @@ public class Ssh extends GenericAuditFields { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/tag/Tag.java b/api/src/main/java/org/terrakube/api/rs/tag/Tag.java index 08c70becc..b4db28660 100644 --- a/api/src/main/java/org/terrakube/api/rs/tag/Tag.java +++ b/api/src/main/java/org/terrakube/api/rs/tag/Tag.java @@ -3,11 +3,15 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.terrakube.api.plugin.security.audit.GenericAuditFields; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @Include(rootLevel = false) @@ -16,8 +20,9 @@ @Entity(name = "tag") public class Tag extends GenericAuditFields { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/team/Team.java b/api/src/main/java/org/terrakube/api/rs/team/Team.java index bd7b5ebae..8dd0db0a8 100644 --- a/api/src/main/java/org/terrakube/api/rs/team/Team.java +++ b/api/src/main/java/org/terrakube/api/rs/team/Team.java @@ -3,10 +3,14 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @CreatePermission(expression = "user is a superuser") @@ -19,8 +23,9 @@ public class Team { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/template/Template.java b/api/src/main/java/org/terrakube/api/rs/template/Template.java index b6ef7dbb8..d1b2c837f 100644 --- a/api/src/main/java/org/terrakube/api/rs/template/Template.java +++ b/api/src/main/java/org/terrakube/api/rs/template/Template.java @@ -3,11 +3,15 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @ReadPermission(expression = "team view template") @@ -21,8 +25,9 @@ public class Template extends GenericAuditFields { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/token/group/Group.java b/api/src/main/java/org/terrakube/api/rs/token/group/Group.java index a1bf1783f..c4e2afaab 100644 --- a/api/src/main/java/org/terrakube/api/rs/token/group/Group.java +++ b/api/src/main/java/org/terrakube/api/rs/token/group/Group.java @@ -3,13 +3,14 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Type; import org.terrakube.api.plugin.security.audit.GenericAuditFields; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.*; +import org.terrakube.api.rs.IdConverter; + +import java.sql.Types; import java.util.UUID; @NoArgsConstructor @@ -19,7 +20,9 @@ @Table(name = "team_token") public class Group extends GenericAuditFields { @Id - @Type(type="uuid-char") + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; private int days; diff --git a/api/src/main/java/org/terrakube/api/rs/token/pat/Pat.java b/api/src/main/java/org/terrakube/api/rs/token/pat/Pat.java index 842bd3997..34a7f84ee 100644 --- a/api/src/main/java/org/terrakube/api/rs/token/pat/Pat.java +++ b/api/src/main/java/org/terrakube/api/rs/token/pat/Pat.java @@ -1,11 +1,14 @@ package org.terrakube.api.rs.token.pat; import lombok.*; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Type; import org.terrakube.api.plugin.security.audit.GenericAuditFields; -import javax.persistence.Entity; -import javax.persistence.Id; +import jakarta.persistence.*; +import org.terrakube.api.rs.IdConverter; + +import java.sql.Types; import java.util.UUID; @NoArgsConstructor @@ -14,7 +17,9 @@ @Entity(name = "pat") public class Pat extends GenericAuditFields { @Id - @Type(type="uuid-char") + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; private int days; diff --git a/api/src/main/java/org/terrakube/api/rs/vcs/Vcs.java b/api/src/main/java/org/terrakube/api/rs/vcs/Vcs.java index 9ae986d47..5ece82a66 100644 --- a/api/src/main/java/org/terrakube/api/rs/vcs/Vcs.java +++ b/api/src/main/java/org/terrakube/api/rs/vcs/Vcs.java @@ -3,11 +3,15 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.Date; import java.util.UUID; @@ -22,8 +26,9 @@ public class Vcs extends GenericAuditFields { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/webhook/Webhook.java b/api/src/main/java/org/terrakube/api/rs/webhook/Webhook.java index 1af9f4a0b..daf94bec5 100644 --- a/api/src/main/java/org/terrakube/api/rs/webhook/Webhook.java +++ b/api/src/main/java/org/terrakube/api/rs/webhook/Webhook.java @@ -3,9 +3,13 @@ import com.yahoo.elide.annotation.Include; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; +import org.terrakube.api.rs.IdConverter; + +import java.sql.Types; import java.util.UUID; @Include(rootLevel = false) @@ -15,8 +19,9 @@ public class Webhook { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name="type") diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/Workspace.java b/api/src/main/java/org/terrakube/api/rs/workspace/Workspace.java index eda1a3314..5fe7dabd7 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/Workspace.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/Workspace.java @@ -3,7 +3,9 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.Organization; import org.terrakube.api.rs.agent.Agent; import org.terrakube.api.rs.hooks.workspace.WorkspaceManageHook; @@ -18,7 +20,9 @@ import org.hibernate.annotations.Type; import org.hibernate.annotations.Where; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.List; import java.util.UUID; @@ -37,8 +41,9 @@ public class Workspace extends GenericAuditFields { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "name") diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/content/Content.java b/api/src/main/java/org/terrakube/api/rs/workspace/content/Content.java index 97cebf41a..322962cfd 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/content/Content.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/content/Content.java @@ -2,10 +2,14 @@ import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Type; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.workspace.Workspace; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @Getter @@ -13,8 +17,9 @@ @Entity(name = "content") public class Content { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @ManyToOne diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/history/History.java b/api/src/main/java/org/terrakube/api/rs/workspace/history/History.java index 1f999c255..a763b1f13 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/history/History.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/history/History.java @@ -3,12 +3,16 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.workspace.Workspace; import org.hibernate.annotations.Type; import org.terrakube.api.rs.workspace.history.archive.Archive; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.List; import java.util.UUID; @@ -22,8 +26,9 @@ public class History extends GenericAuditFields { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "job_reference") diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/history/archive/Archive.java b/api/src/main/java/org/terrakube/api/rs/workspace/history/archive/Archive.java index b1b960991..2ccc9ea22 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/history/archive/Archive.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/history/archive/Archive.java @@ -2,10 +2,14 @@ import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.hibernate.annotations.Type; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.workspace.history.History; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @Getter @@ -13,8 +17,9 @@ @Entity(name = "temp_archive") public class Archive { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Enumerated(EnumType.STRING) diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/parameters/Variable.java b/api/src/main/java/org/terrakube/api/rs/workspace/parameters/Variable.java index 3d24d4499..82de0970c 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/parameters/Variable.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/parameters/Variable.java @@ -4,10 +4,14 @@ import com.yahoo.elide.annotation.ReadPermission; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.workspace.Workspace; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @Include(rootLevel = false) @@ -17,8 +21,9 @@ public class Variable { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name="variable_key") diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/schedule/Schedule.java b/api/src/main/java/org/terrakube/api/rs/workspace/schedule/Schedule.java index 88573a778..2ba8dc707 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/schedule/Schedule.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/schedule/Schedule.java @@ -4,12 +4,16 @@ import com.yahoo.elide.annotation.LifeCycleHookBinding; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; import org.terrakube.api.plugin.security.audit.GenericAuditFields; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.hooks.schedule.ScheduleManageHook; import org.terrakube.api.rs.workspace.Workspace; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @LifeCycleHookBinding(operation = LifeCycleHookBinding.Operation.CREATE, phase = LifeCycleHookBinding.TransactionPhase.POSTCOMMIT, hook = ScheduleManageHook.class) @@ -22,8 +26,9 @@ public class Schedule extends GenericAuditFields { @Id - @Type(type="uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "cron") diff --git a/api/src/main/java/org/terrakube/api/rs/workspace/tag/WorkspaceTag.java b/api/src/main/java/org/terrakube/api/rs/workspace/tag/WorkspaceTag.java index 8cf5f1eef..c9a637aeb 100644 --- a/api/src/main/java/org/terrakube/api/rs/workspace/tag/WorkspaceTag.java +++ b/api/src/main/java/org/terrakube/api/rs/workspace/tag/WorkspaceTag.java @@ -3,11 +3,15 @@ import com.yahoo.elide.annotation.*; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.JdbcTypeCode; +import org.terrakube.api.rs.IdConverter; import org.terrakube.api.rs.workspace.Workspace; import org.terrakube.api.plugin.security.audit.GenericAuditFields; import org.hibernate.annotations.Type; -import javax.persistence.*; +import jakarta.persistence.*; + +import java.sql.Types; import java.util.UUID; @Include(rootLevel = false) @@ -16,8 +20,9 @@ @Entity(name = "workspacetag") public class WorkspaceTag extends GenericAuditFields { @Id - @Type(type = "uuid-char") - @GeneratedValue + @JdbcTypeCode(Types.VARCHAR) + @Convert(converter = IdConverter.class) + @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @Column(name = "tag_id") diff --git a/api/src/main/resources/application-demo.properties b/api/src/main/resources/application-demo.properties index ceb9fc138..823dfaab5 100644 --- a/api/src/main/resources/application-demo.properties +++ b/api/src/main/resources/application-demo.properties @@ -13,6 +13,7 @@ spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.Ph #spring.jpa.datasource.password=password #spring.jpa.datasource.driver-class-name=org.h2.Driver #spring.datasource.generate-unique-name=false +hibernate.type.preferred_uuid_jdbc_type=VARCHAR ############# #ELIDE SETUP# diff --git a/api/src/main/resources/application.properties b/api/src/main/resources/application.properties index 4c4511f55..260bda51f 100644 --- a/api/src/main/resources/application.properties +++ b/api/src/main/resources/application.properties @@ -13,6 +13,7 @@ spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.Ph #spring.jpa.datasource.password=password #spring.jpa.datasource.driver-class-name=org.h2.Driver #spring.datasource.generate-unique-name=false +hibernate.type.preferred_uuid_jdbc_type=VARCHAR ############# #ELIDE SETUP# diff --git a/api/src/test/java/org/terrakube/api/ServerApplicationTests.java b/api/src/test/java/org/terrakube/api/ServerApplicationTests.java index 2811a27f1..141b2ad07 100644 --- a/api/src/test/java/org/terrakube/api/ServerApplicationTests.java +++ b/api/src/test/java/org/terrakube/api/ServerApplicationTests.java @@ -1,10 +1,10 @@ package org.terrakube.api; -import com.nimbusds.jose.shaded.json.JSONArray; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.security.Keys; import io.restassured.RestAssured; +import net.minidev.json.JSONArray; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.TestInstance; @@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.context.ActiveProfiles; import org.terrakube.api.plugin.token.pat.PatService; import org.terrakube.api.plugin.scheduler.job.tcl.TclService; diff --git a/executor/pom.xml b/executor/pom.xml index b978baae8..bc0e8a18d 100644 --- a/executor/pom.xml +++ b/executor/pom.xml @@ -16,15 +16,15 @@ 17 1.10.0 - 0.13.0 - 0.12.0 + 0.14.0-beta.2 + 0.15.0-beta.3 2.8.0 1.15 4.12.0 12.25.1 6.6.1.202309021850-r 1.18.26 - 3.0.17 + 4.0.20 2.5.2 5.2.0 1.12.261 @@ -32,13 +32,13 @@ 1.7.36 26.3.0 1.26.0 - 3.9.0 + 4.4.7 ${basedir}/../${aggregate.report.dir} - paketobuildpacks/builder-jammy-tiny - gcr.io/paketo-buildpacks/java:12.0.0 - gcr.io/paketo-buildpacks/opentelemetry + paketobuildpacks/builder-jammy-base + gcr.io/paketo-buildpacks/java:12.1.0 + gcr.io/paketo-buildpacks/opentelemetry:1.7.1 @@ -121,7 +121,7 @@ ${jgit.version} - org.codehaus.groovy + org.apache.groovy groovy-all ${groovy.version} pom diff --git a/pom.xml b/pom.xml index 58220e61a..0cd50222b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.18 + 3.1.10 org.terrakube @@ -15,7 +15,7 @@ pom - 2.20.0 + 2.21.0 azbuilder https://sonarcloud.io AzBuilder_azb-server diff --git a/registry/pom.xml b/registry/pom.xml index db24cc032..a170c6233 100644 --- a/registry/pom.xml +++ b/registry/pom.xml @@ -17,21 +17,21 @@ 5.7.0 17 1.18.20 - 0.14.0 + 0.15.0-beta.3 6.6.1.202309021850-r 2.8.0 5.13.2 4.5.1 5.7.2 - 3.0.8 + 1.12.261 1.14 26.3.0 ${basedir}/../${aggregate.report.dir} - paketobuildpacks/builder-jammy-tiny - gcr.io/paketo-buildpacks/java:12.0.0 - gcr.io/paketo-buildpacks/opentelemetry + paketobuildpacks/builder-jammy-base + gcr.io/paketo-buildpacks/java:12.1.0 + gcr.io/paketo-buildpacks/opentelemetry:1.7.1 @@ -72,6 +72,10 @@ org.springframework.boot spring-boot-starter-actuator + + org.springframework.boot + spring-boot-starter-test + org.projectlombok lombok @@ -86,6 +90,12 @@ org.terrakube.client terrakube-spring-boot-starter ${terrakube-client-starter.version} + + + com.squareup.okio:okio-jvm + 3.0.0 + + org.eclipse.jgit diff --git a/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/DexWebSecurityAdapter.java b/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/DexWebSecurityAdapter.java index 8ecc63be0..31cbd448b 100644 --- a/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/DexWebSecurityAdapter.java +++ b/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/DexWebSecurityAdapter.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManagerResolver; -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.web.SecurityFilterChain; @@ -15,7 +15,7 @@ import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.List; @@ -23,16 +23,16 @@ @Configuration @ConditionalOnProperty(prefix = "org.terrakube.registry.authentication", name = "type", havingValue = "DEX") @EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) +@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) public class DexWebSecurityAdapter { @Bean public SecurityFilterChain filterChain(HttpSecurity http, @Value("${org.terrakube.token.issuer-uri}") String issuerUri, @Value("${org.terrakube.token.pat}") String patJwtSecret, @Value("${org.terrakube.token.internal}") String internalJwtSecret) throws Exception { http.cors().and().authorizeRequests(authz -> authz - .antMatchers("/.well-known/**").permitAll() - .antMatchers("/actuator/**").permitAll() - .antMatchers("/terraform/modules/v1/download/**").permitAll() - .antMatchers(HttpMethod.OPTIONS, "/**").permitAll() + .requestMatchers("/.well-known/**").permitAll() + .requestMatchers("/actuator/**").permitAll() + .requestMatchers("/terraform/modules/v1/download/**").permitAll() + .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() .anyRequest().authenticated() ) .oauth2ResourceServer(oauth2 -> { diff --git a/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/RegistryAuthenticationManagerResolver.java b/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/RegistryAuthenticationManagerResolver.java index 020fccdbc..97d814cc0 100644 --- a/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/RegistryAuthenticationManagerResolver.java +++ b/registry/src/main/java/org/terrakube/registry/configuration/authentication/dex/RegistryAuthenticationManagerResolver.java @@ -19,7 +19,7 @@ import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.util.Base64; import java.util.HashMap; import java.util.Map; diff --git a/registry/src/main/java/org/terrakube/registry/configuration/authentication/local/LocalWebSecurityAdapter.java b/registry/src/main/java/org/terrakube/registry/configuration/authentication/local/LocalWebSecurityAdapter.java index d09916b1b..a03a3bbb8 100644 --- a/registry/src/main/java/org/terrakube/registry/configuration/authentication/local/LocalWebSecurityAdapter.java +++ b/registry/src/main/java/org/terrakube/registry/configuration/authentication/local/LocalWebSecurityAdapter.java @@ -1,18 +1,24 @@ package org.terrakube.registry.configuration.authentication.local; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.WebSecurity; +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.web.SecurityFilterChain; @Configuration @EnableWebSecurity @ConditionalOnProperty(prefix = "org.terrakube.registry.authentication", name = "type", havingValue = "LOCAL") -public class LocalWebSecurityAdapter extends WebSecurityConfigurerAdapter { +public class LocalWebSecurityAdapter{ - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/**"); + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http.cors().and().authorizeRequests(authz -> { + authz.requestMatchers("/**").permitAll(); + }); + + return http.build(); } + } diff --git a/registry/src/test/java/org/terrakube/registry/OpenRegistryApplicationTests.java b/registry/src/test/java/org/terrakube/registry/OpenRegistryApplicationTests.java index 45b980de4..8fe6938bd 100644 --- a/registry/src/test/java/org/terrakube/registry/OpenRegistryApplicationTests.java +++ b/registry/src/test/java/org/terrakube/registry/OpenRegistryApplicationTests.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.TestInstance; import org.mockserver.integration.ClientAndServer; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.context.ActiveProfiles; import java.util.concurrent.TimeUnit;