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;