diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java index c1aae72bd..a49186715 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java @@ -34,6 +34,11 @@ public interface Rollout extends NamedEntity { */ int APPROVAL_REMARK_MAX_SIZE = 255; + /** + * Maximum length of access control context. + */ + int ACCESS_CONTROL_CONTEXT_MAX_SIZE = 32768; + /** * @return true if the rollout is deleted and only kept for * history purposes. diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java index 6eef11b8b..9b464b1c2 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java @@ -46,6 +46,11 @@ public interface TargetFilterQuery extends TenantAwareBaseEntity { */ int QUERY_MAX_SIZE = 1024; + /** + * Maximum length of access control context. + */ + int ACCESS_CONTROL_CONTEXT_MAX_SIZE = 32768; + /** * Allowed values for auto-assign action type */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java index 1fbf9e2d0..6e4daacc8 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java @@ -22,7 +22,7 @@ public interface TenantConfiguration extends TenantAwareBaseEntity { /** * Maximum length of tenant configuration value. */ - int VALUE_MAX_SIZE = 512; + int VALUE_MAX_SIZE = 32768; /** * @return key of the entry diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql index 9add894a8..f8ffe6c65 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql +++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/B1_20_0__1.0.0_baseline__H2.sql @@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration ( optlock_revision BIGINT, tenant VARCHAR(40) NOT NULL, conf_key VARCHAR(128) NOT NULL, - conf_value VARCHAR(512) NOT NULL, + conf_value CLOB NOT NULL, PRIMARY KEY (id) ); CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant); @@ -244,7 +244,7 @@ CREATE TABLE sp_rollout ( approval_decided_by VARCHAR(64), approval_remark VARCHAR(255), weight INTEGER NOT NULL, - access_control_context VARCHAR(4096), + access_control_context CLOB, is_dynamic BOOLEAN, PRIMARY KEY (id) ); @@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query ( auto_assign_weight INTEGER NOT NULL, auto_assign_initiated_by VARCHAR(64), confirmation_required BOOLEAN, - access_control_context VARCHAR(4096), + access_control_context CLOB, PRIMARY KEY (id) ); CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant); diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_38__varchar_to_clob___H2.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_38__varchar_to_clob___H2.sql new file mode 100644 index 000000000..d509bc8a6 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/H2/V1_12_38__varchar_to_clob___H2.sql @@ -0,0 +1,3 @@ +ALTER TABLE sp_tenant_configuration ALTER COLUMN conf_value CLOB NOT NULL; +ALTER TABLE sp_target_filter_query ALTER COLUMN access_control_context CLOB; +ALTER TABLE sp_rollout ALTER COLUMN access_control_context CLOB; diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql index 02ccc2e6e..ee05c3272 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql +++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/B1_20_0__1.0.0_baseline__MYSQL.sql @@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration ( optlock_revision BIGINT, tenant VARCHAR(40) NOT NULL, conf_key VARCHAR(128) NOT NULL, - conf_value VARCHAR(512) NOT NULL, + conf_value TEXT NOT NULL, PRIMARY KEY (id) ); CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant); @@ -244,7 +244,7 @@ CREATE TABLE sp_rollout ( approval_decided_by VARCHAR(64), approval_remark VARCHAR(255), weight INTEGER NOT NULL, - access_control_context VARCHAR(4096), + access_control_context TEXT, is_dynamic BOOLEAN, PRIMARY KEY (id) ); @@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query ( auto_assign_weight INTEGER NOT NULL, auto_assign_initiated_by VARCHAR(64), confirmation_required BOOLEAN, - access_control_context VARCHAR(4096), + access_control_context TEXT, PRIMARY KEY (id) ); CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant); diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_38__varchar_to_text___MYSQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_38__varchar_to_text___MYSQL.sql new file mode 100644 index 000000000..ed4b8d440 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/MYSQL/V1_12_38__varchar_to_text___MYSQL.sql @@ -0,0 +1,3 @@ +ALTER TABLE sp_tenant_configuration MODIFY conf_value TEXT NOT NULL; +ALTER TABLE sp_target_filter_query MODIFY access_control_context TEXT; +ALTER TABLE sp_rollout MODIFY access_control_context TEXT; diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql index ea5adb21f..835807b5c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql +++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/B1_20_0__1.0.0_baseline__POSTGRESQL.sql @@ -111,7 +111,7 @@ CREATE TABLE sp_tenant_configuration ( optlock_revision BIGINT, tenant VARCHAR(40) NOT NULL, conf_key VARCHAR(128) NOT NULL, - conf_value VARCHAR(512) NOT NULL, + conf_value TEXT NOT NULL, PRIMARY KEY (id) ); CREATE UNIQUE INDEX uk_tenant_configuration ON sp_tenant_configuration (conf_key, tenant); @@ -244,7 +244,7 @@ CREATE TABLE sp_rollout ( approval_decided_by VARCHAR(64), approval_remark VARCHAR(255), weight INTEGER NOT NULL, - access_control_context VARCHAR(4096), + access_control_context TEXT, is_dynamic BOOLEAN, PRIMARY KEY (id) ); @@ -305,7 +305,7 @@ CREATE TABLE sp_target_filter_query ( auto_assign_weight INTEGER NOT NULL, auto_assign_initiated_by VARCHAR(64), confirmation_required BOOLEAN, - access_control_context VARCHAR(4096), + access_control_context TEXT, PRIMARY KEY (id) ); CREATE UNIQUE INDEX uk_target_filter_query ON sp_target_filter_query (name, tenant); diff --git a/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_38__varchar_to_text___POSTGRESQL.sql b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_38__varchar_to_text___POSTGRESQL.sql new file mode 100644 index 000000000..e2c93fc1e --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa-flyway/src/main/resources/db/migration/POSTGRESQL/V1_12_38__varchar_to_text___POSTGRESQL.sql @@ -0,0 +1,5 @@ +ALTER TABLE sp_tenant_configuration + ALTER COLUMN conf_value TYPE TEXT, + ALTER COLUMN conf_value SET NOT NULL; +ALTER TABLE sp_target_filter_query ALTER COLUMN access_control_context TYPE TEXT; +ALTER TABLE sp_rollout ALTER COLUMN access_control_context TYPE TEXT; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java index f6047b714..4ec038592 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java @@ -22,6 +22,7 @@ import jakarta.persistence.Converter; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.JoinColumn; +import jakarta.persistence.Lob; import jakarta.persistence.ManyToOne; import jakarta.persistence.NamedAttributeNode; import jakarta.persistence.NamedEntityGraph; @@ -147,6 +148,8 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event @Setter @Column(name = "access_control_context") + @Lob + @Size(max = Rollout.ACCESS_CONTROL_CONTEXT_MAX_SIZE) private String accessControlContext; @Setter diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java index bf026af1d..45d3ec3f2 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java @@ -16,6 +16,7 @@ import jakarta.persistence.Convert; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.JoinColumn; +import jakarta.persistence.Lob; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import jakarta.validation.constraints.NotEmpty; @@ -73,6 +74,8 @@ public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity imple private boolean confirmationRequired; @Column(name = "access_control_context") + @Lob + @Size(max = TargetFilterQuery.ACCESS_CONTROL_CONTEXT_MAX_SIZE) private String accessControlContext; public JpaTargetFilterQuery(final String name, final String query, final DistributionSet autoAssignDistributionSet, diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java index 88b400560..5c9c84ae5 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java @@ -9,9 +9,9 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import jakarta.persistence.Basic; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.Lob; import jakarta.persistence.Table; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -42,8 +42,8 @@ public class JpaTenantConfiguration extends AbstractJpaTenantAwareBaseEntity imp @NotNull private String key; - @Column(name = "conf_value", length = TenantConfiguration.VALUE_MAX_SIZE, nullable = false) - @Basic + @Column(name = "conf_value", nullable = false) + @Lob @Size(max = TenantConfiguration.VALUE_MAX_SIZE) @NotNull private String value;