From b317823e8684f2c1aec7cc92025abf1d3255dce7 Mon Sep 17 00:00:00 2001 From: kaizimmerm Date: Mon, 5 Sep 2016 14:56:28 +0200 Subject: [PATCH] Fixed entity content validation. Signed-off-by: kaizimmerm --- .../MgmtDistributionSetTypeMapper.java | 33 ++++++++------ .../MgmtDistributionSetResourceTest.java | 14 ++++++ .../MgmtDistributionSetTypeResourceTest.java | 14 ++++++ .../MgmtSoftwareModuleResourceTest.java | 14 ++++++ .../MgmtSoftwareModuleTypeResourceTest.java | 15 +++++++ .../rest/resource/MgmtTargetResourceTest.java | 44 +++++++++++++++++++ .../repository/SoftwareManagement.java | 9 ++-- .../jpa/model/AbstractJpaMetaData.java | 5 +++ .../jpa/model/AbstractJpaNamedEntity.java | 5 +++ .../AbstractJpaNamedVersionedEntity.java | 4 ++ .../repository/jpa/model/AbstractJpaTag.java | 2 + .../AbstractJpaTenantAwareBaseEntity.java | 2 + .../repository/jpa/model/JpaAction.java | 5 ++- .../repository/jpa/model/JpaActionStatus.java | 3 ++ .../jpa/model/JpaDistributionSet.java | 2 + .../jpa/model/JpaDistributionSetType.java | 3 ++ .../jpa/model/JpaExternalArtifact.java | 2 + .../model/JpaExternalArtifactProvider.java | 3 ++ .../jpa/model/JpaLocalArtifact.java | 3 ++ .../repository/jpa/model/JpaRollout.java | 8 +++- .../repository/jpa/model/JpaRolloutGroup.java | 5 +++ .../jpa/model/JpaSoftwareModule.java | 4 ++ .../jpa/model/JpaSoftwareModuleType.java | 5 +++ .../repository/jpa/model/JpaTarget.java | 4 +- .../jpa/model/JpaTargetFilterQuery.java | 10 ++++- .../repository/jpa/model/JpaTargetInfo.java | 6 ++- .../jpa/model/JpaTenantConfiguration.java | 10 ++++- .../jpa/model/JpaTenantMetaData.java | 2 + .../H2/V1_7_1__reduce_length_enums___H2.sql | 5 +++ .../V1_7_1__reduce_length_enums___MYSQL.sql | 5 +++ .../repository/test/util/TestdataFactory.java | 15 +++++++ 31 files changed, 234 insertions(+), 27 deletions(-) create mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/H2/V1_7_1__reduce_length_enums___H2.sql create mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/MYSQL/V1_7_1__reduce_length_enums___MYSQL.sql diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeMapper.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeMapper.java index 5c139027c..0daae2f0d 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeMapper.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeMapper.java @@ -23,6 +23,7 @@ import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; +import org.springframework.util.CollectionUtils; /** * A mapper which maps repository model to RESTful model representation and @@ -54,26 +55,30 @@ final class MgmtDistributionSetTypeMapper { smsRest.getName(), smsRest.getDescription()); // Add mandatory - smsRest.getMandatorymodules().stream().map(mand -> { - final SoftwareModuleType smType = softwareManagement.findSoftwareModuleTypeById(mand.getId()); + if (!CollectionUtils.isEmpty(smsRest.getMandatorymodules())) { + smsRest.getMandatorymodules().stream().map(mand -> { + final SoftwareModuleType smType = softwareManagement.findSoftwareModuleTypeById(mand.getId()); - if (smType == null) { - throw new EntityNotFoundException("SoftwareModuleType with ID " + mand.getId() + " not found"); - } + if (smType == null) { + throw new EntityNotFoundException("SoftwareModuleType with ID " + mand.getId() + " not found"); + } - return smType; - }).forEach(result::addMandatoryModuleType); + return smType; + }).forEach(result::addMandatoryModuleType); + } // Add optional - smsRest.getOptionalmodules().stream().map(opt -> { - final SoftwareModuleType smType = softwareManagement.findSoftwareModuleTypeById(opt.getId()); + if (!CollectionUtils.isEmpty(smsRest.getOptionalmodules())) { + smsRest.getOptionalmodules().stream().map(opt -> { + final SoftwareModuleType smType = softwareManagement.findSoftwareModuleTypeById(opt.getId()); - if (smType == null) { - throw new EntityNotFoundException("SoftwareModuleType with ID " + opt.getId() + " not found"); - } + if (smType == null) { + throw new EntityNotFoundException("SoftwareModuleType with ID " + opt.getId() + " not found"); + } - return smType; - }).forEach(result::addOptionalModuleType); + return smType; + }).forEach(result::addOptionalModuleType); + } return result; } diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java index 8aa035594..725a10538 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java @@ -27,6 +27,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import org.apache.commons.lang3.RandomStringUtils; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.Action.Status; @@ -633,6 +634,19 @@ public class MgmtDistributionSetResourceTest extends AbstractRestIntegrationTest .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) .andExpect(status().isBadRequest()); + final DistributionSet missingName = testdataFactory.generateDistributionSet("missingName"); + missingName.setName(null); + mvc.perform( + post("/rest/v1/distributionsets").content(JsonBuilder.distributionSets(Lists.newArrayList(missingName))) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isBadRequest()); + + final DistributionSet toLongName = testdataFactory.generateDistributionSet(RandomStringUtils.randomAscii(80)); + mvc.perform( + post("/rest/v1/distributionsets").content(JsonBuilder.distributionSets(Lists.newArrayList(toLongName))) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isBadRequest()); + // unsupported media type mvc.perform(post("/rest/v1/distributionsets").content(JsonBuilder.distributionSets(sets)) .contentType(MediaType.APPLICATION_OCTET_STREAM)).andDo(MockMvcResultPrinter.print()) diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java index eba06c5e6..9d5b0d002 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java @@ -24,6 +24,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.RandomStringUtils; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.SoftwareModule; @@ -553,6 +554,19 @@ public class MgmtDistributionSetTypeResourceTest extends AbstractRestIntegration .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) .andExpect(status().isBadRequest()); + final DistributionSetType missingName = entityFactory.generateDistributionSetType("test123", null, "Desc123"); + mvc.perform(post("/rest/v1/distributionsettypes") + .content(JsonBuilder.distributionSetTypes(Lists.newArrayList(missingName))) + .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) + .andExpect(status().isBadRequest()); + + final DistributionSetType toLongName = entityFactory.generateDistributionSetType("test123", + RandomStringUtils.randomAscii(80), "Desc123"); + mvc.perform(post("/rest/v1/distributionsettypes") + .content(JsonBuilder.distributionSetTypes(Lists.newArrayList(toLongName))) + .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) + .andExpect(status().isBadRequest()); + // not allowed methods mvc.perform(put("/rest/v1/distributionsettypes")).andDo(MockMvcResultPrinter.print()) .andExpect(status().isMethodNotAllowed()); diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java index 1703e5c0e..f5c79fb6c 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleResourceTest.java @@ -58,6 +58,7 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.web.servlet.MvcResult; import org.springframework.web.bind.annotation.RestController; +import com.google.common.collect.Lists; import com.jayway.jsonpath.JsonPath; import ru.yandex.qatools.allure.annotations.Description; @@ -456,6 +457,19 @@ public class MgmtSoftwareModuleResourceTest extends AbstractRestIntegrationTestW .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) .andExpect(status().isBadRequest()); + final SoftwareModule missingName = entityFactory.generateSoftwareModule(osType, null, "version 1", null, null); + mvc.perform( + post("/rest/v1/softwaremodules").content(JsonBuilder.softwareModules(Lists.newArrayList(missingName))) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isBadRequest()); + + final SoftwareModule toLongName = entityFactory.generateSoftwareModule(osType, + RandomStringUtils.randomAscii(80), "version 1", null, null); + mvc.perform( + post("/rest/v1/softwaremodules").content(JsonBuilder.softwareModules(Lists.newArrayList(toLongName))) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isBadRequest()); + // unsupported media type mvc.perform(post("/rest/v1/softwaremodules").content(JsonBuilder.softwareModules(modules)) .contentType(MediaType.APPLICATION_OCTET_STREAM)).andDo(MockMvcResultPrinter.print()) diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java index 4c7c99bf7..8c60815e3 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSoftwareModuleTypeResourceTest.java @@ -24,6 +24,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.RandomStringUtils; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @@ -37,6 +38,7 @@ import org.junit.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; +import com.google.common.collect.Lists; import com.jayway.jsonpath.JsonPath; import ru.yandex.qatools.allure.annotations.Description; @@ -335,6 +337,19 @@ public class MgmtSoftwareModuleTypeResourceTest extends AbstractRestIntegrationT .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) .andExpect(status().isBadRequest()); + final SoftwareModuleType missingName = entityFactory.generateSoftwareModuleType("test123", null, "Desc123", 5); + mvc.perform(post("/rest/v1/softwaremoduletypes") + .content(JsonBuilder.softwareModuleTypes(Lists.newArrayList(missingName))) + .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) + .andExpect(status().isBadRequest()); + + final SoftwareModuleType toLongName = entityFactory.generateSoftwareModuleType("test123", + RandomStringUtils.randomAscii(80), "Desc123", 5); + mvc.perform(post("/rest/v1/softwaremoduletypes") + .content(JsonBuilder.softwareModuleTypes(Lists.newArrayList(toLongName))) + .contentType(MediaType.APPLICATION_JSON)).andDo(MockMvcResultPrinter.print()) + .andExpect(status().isBadRequest()); + // unsupported media type mvc.perform(post("/rest/v1/softwaremoduletypes").content(JsonBuilder.softwareModuleTypes(types)) .contentType(MediaType.APPLICATION_OCTET_STREAM)).andDo(MockMvcResultPrinter.print()) diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java index e804dcb1f..de04a12d1 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java @@ -32,10 +32,12 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.apache.commons.lang3.RandomStringUtils; import org.eclipse.hawkbit.exception.SpServerError; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.repository.ActionFields; +import org.eclipse.hawkbit.repository.exception.ConstraintViolationException; import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; import org.eclipse.hawkbit.repository.jpa.model.JpaTarget; import org.eclipse.hawkbit.repository.jpa.model.JpaTargetInfo; @@ -669,6 +671,48 @@ public class MgmtTargetResourceTest extends AbstractRestIntegrationTest { assertThat(exceptionInfo.getErrorCode()).isEqualTo(SpServerError.SP_REST_BODY_NOT_READABLE.getKey()); } + @Test + @Description("Verfies that a mandatory properteis of new targets are validated as not null.") + public void createTargetWithMissingMandatoryPropertyBadRequest() throws Exception { + final Target test1 = entityFactory.generateTarget("id1", "token"); + test1.setName(null); + + final MvcResult mvcResult = mvc + .perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING) + .content(JsonBuilder.targets(Lists.newArrayList(test1), true)) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isBadRequest()).andReturn(); + + assertThat(targetManagement.countTargetsAll()).isEqualTo(0); + + // verify response json exception message + final ExceptionInfo exceptionInfo = ResourceUtility + .convertException(mvcResult.getResponse().getContentAsString()); + assertThat(exceptionInfo.getExceptionClass()).isEqualTo(ConstraintViolationException.class.getName()); + assertThat(exceptionInfo.getErrorCode()).isEqualTo(SpServerError.SP_REPO_CONSTRAINT_VIOLATION.getKey()); + } + + @Test + @Description("Verfies that a properties of new targets are validated as in allowed size range.") + public void createTargetWithInvalidPropertyBadRequest() throws Exception { + final Target test1 = entityFactory.generateTarget("id1", "token"); + test1.setName(RandomStringUtils.randomAscii(80)); + + final MvcResult mvcResult = mvc + .perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING) + .content(JsonBuilder.targets(Lists.newArrayList(test1), true)) + .contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isBadRequest()).andReturn(); + + assertThat(targetManagement.countTargetsAll()).isEqualTo(0); + + // verify response json exception message + final ExceptionInfo exceptionInfo = ResourceUtility + .convertException(mvcResult.getResponse().getContentAsString()); + assertThat(exceptionInfo.getExceptionClass()).isEqualTo(ConstraintViolationException.class.getName()); + assertThat(exceptionInfo.getErrorCode()).isEqualTo(SpServerError.SP_REPO_CONSTRAINT_VIOLATION.getKey()); + } + @Test public void createTargetsListReturnsSuccessful() throws Exception { final Target test1 = entityFactory.generateTarget("id1", "token"); diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java index 03027598e..dfe05100e 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java @@ -131,7 +131,7 @@ public interface SoftwareManagement { * @return created {@link Entity} */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_REPOSITORY) - List createSoftwareModuleType(@NotNull final Collection types); + List createSoftwareModuleType(@NotNull Collection types); /** * Creates new {@link SoftwareModuleType}. @@ -483,21 +483,20 @@ public interface SoftwareManagement { */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY) SoftwareModuleType updateSoftwareModuleType(@NotNull SoftwareModuleType sm); - + /** * Finds all meta data by the given software module id. * * @param softwareModuleId * the software module id to retrieve the meta data from - + * * * @throws RSQLParameterUnsupportedFieldException * if a field in the RSQL string is used but not provided by the * given {@code fieldNameProvider} * @throws RSQLParameterSyntaxException * if the RSQL syntax is wrong - * @return result of all meta data entries for a given software - * module id. + * @return result of all meta data entries for a given software module id. */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) List findSoftwareModuleMetadataBySoftwareModuleId(Long softwareModuleId); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaMetaData.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaMetaData.java index 5a3f23ac3..a9f93cb86 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaMetaData.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaMetaData.java @@ -12,6 +12,8 @@ import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.MappedSuperclass; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.MetaData; @@ -25,9 +27,12 @@ public abstract class AbstractJpaMetaData implements MetaData { @Id @Column(name = "meta_key", length = 128) + @Size(min = 1, max = 128) + @NotNull private String key; @Column(name = "meta_value", length = 4000) + @Size(max = 4000) @Basic private String value; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java index ebf5eac3c..0011cc2da 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java @@ -10,6 +10,8 @@ package org.eclipse.hawkbit.repository.jpa.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; @@ -26,9 +28,12 @@ public abstract class AbstractJpaNamedEntity extends AbstractJpaTenantAwareBaseE private static final long serialVersionUID = 1L; @Column(name = "name", nullable = false, length = 64) + @Size(max = 64) + @NotNull private String name; @Column(name = "description", nullable = true, length = 512) + @Size(max = 512) private String description; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java index ffdb1dfa6..9c78f976c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java @@ -10,6 +10,8 @@ package org.eclipse.hawkbit.repository.jpa.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.NamedVersionedEntity; @@ -26,6 +28,8 @@ public abstract class AbstractJpaNamedVersionedEntity extends AbstractJpaNamedEn private static final long serialVersionUID = 1L; @Column(name = "version", nullable = false, length = 64) + @Size(max = 64) + @NotNull private String version; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTag.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTag.java index b2e8163da..12aad8d6d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTag.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTag.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository.jpa.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.Tag; @@ -26,6 +27,7 @@ public abstract class AbstractJpaTag extends AbstractJpaNamedEntity implements T private static final long serialVersionUID = 1L; @Column(name = "colour", nullable = true, length = 16) + @Size(max = 16) private String colour; protected AbstractJpaTag() { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTenantAwareBaseEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTenantAwareBaseEntity.java index ccd4a30b1..09c261b60 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTenantAwareBaseEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTenantAwareBaseEntity.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.repository.jpa.model; import javax.persistence.Column; import javax.persistence.MappedSuperclass; import javax.persistence.PrePersist; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.exception.TenantNotExistException; import org.eclipse.hawkbit.repository.jpa.model.helper.SystemManagementHolder; @@ -31,6 +32,7 @@ public abstract class AbstractJpaTenantAwareBaseEntity extends AbstractJpaBaseEn private static final long serialVersionUID = 1L; @Column(name = "tenant", nullable = false, insertable = false, updatable = false, length = 40) + @Size(max = 40) private String tenant; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java index 72ef46ba3..ba808ff8a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java @@ -27,6 +27,7 @@ import javax.persistence.NamedEntityGraphs; import javax.persistence.NamedSubgraph; import javax.persistence.OneToMany; import javax.persistence.Table; +import javax.validation.constraints.NotNull; import org.eclipse.hawkbit.repository.eventbus.event.ActionCreatedEvent; import org.eclipse.hawkbit.repository.eventbus.event.ActionPropertyChangeEvent; @@ -63,13 +64,15 @@ public class JpaAction extends AbstractJpaTenantAwareBaseEntity implements Actio @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "target", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_target")) + @NotNull private JpaTarget target; @Column(name = "active") private boolean active; - @Column(name = "action_type", nullable = false) + @Column(name = "action_type", nullable = false, length = 16) @Enumerated(EnumType.STRING) + @NotNull private ActionType actionType; @Column(name = "forced_time") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java index e1843eb33..102b25952 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java @@ -25,6 +25,7 @@ import javax.persistence.NamedAttributeNode; import javax.persistence.NamedEntityGraph; import javax.persistence.Table; import javax.persistence.Transient; +import javax.validation.constraints.NotNull; import org.eclipse.hawkbit.repository.jpa.cache.CacheField; import org.eclipse.hawkbit.repository.jpa.cache.CacheKeys; @@ -54,9 +55,11 @@ public class JpaActionStatus extends AbstractJpaTenantAwareBaseEntity implements @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "action", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_act_stat_action")) + @NotNull private JpaAction action; @Column(name = "status") + @NotNull private Status status; @CascadeOnDelete diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java index 661474668..4545cfaf1 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java @@ -33,6 +33,7 @@ import javax.persistence.NamedEntityGraph; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.NotNull; import org.eclipse.hawkbit.repository.eventbus.event.AbstractPropertyChangeEvent.PropertyChange; import org.eclipse.hawkbit.repository.eventbus.event.DistributionCreatedEvent; @@ -111,6 +112,7 @@ public class JpaDistributionSet extends AbstractJpaNamedVersionedEntity implemen @ManyToOne(fetch = FetchType.LAZY, targetEntity = JpaDistributionSetType.class) @JoinColumn(name = "ds_id", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstype_ds")) + @NotNull private DistributionSetType type; @Column(name = "complete") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java index 54aed44dd..2a696aac9 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java @@ -22,6 +22,7 @@ import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetType; @@ -50,9 +51,11 @@ public class JpaDistributionSetType extends AbstractJpaNamedEntity implements Di private final Set elements = new HashSet<>(); @Column(name = "type_key", nullable = false, length = 64) + @Size(max = 64) private String key; @Column(name = "colour", nullable = true, length = 16) + @Size(max = 16) private String colour; @Column(name = "deleted") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifact.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifact.java index b8408cdcc..86cd11a26 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifact.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifact.java @@ -20,6 +20,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.ExternalArtifact; import org.eclipse.hawkbit.repository.model.ExternalArtifactProvider; @@ -44,6 +45,7 @@ public class JpaExternalArtifact extends AbstractJpaArtifact implements External private JpaExternalArtifactProvider externalArtifactProvider; @Column(name = "url_suffix", length = 512) + @Size(max = 512) private String urlSuffix; // CascadeType.PERSIST as we register ourself at the BSM diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifactProvider.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifactProvider.java index 7a4e2a067..cb07f723a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifactProvider.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaExternalArtifactProvider.java @@ -12,6 +12,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Index; import javax.persistence.Table; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.ExternalArtifact; import org.eclipse.hawkbit.repository.model.ExternalArtifactProvider; @@ -30,9 +31,11 @@ public class JpaExternalArtifactProvider extends AbstractJpaNamedEntity implemen private static final long serialVersionUID = 1L; @Column(name = "base_url", length = 512, nullable = false) + @Size(max = 512) private String basePath; @Column(name = "default_url_suffix", length = 512, nullable = true) + @Size(max = 512) private String defaultSuffix; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaLocalArtifact.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaLocalArtifact.java index 52cc01b20..46482715d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaLocalArtifact.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaLocalArtifact.java @@ -18,6 +18,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.SoftwareModule; @@ -40,10 +41,12 @@ public class JpaLocalArtifact extends AbstractJpaArtifact implements LocalArtifa @NotNull @Column(name = "gridfs_file_name", length = 40) + @Size(max = 40) private String gridFsFileName; @NotNull @Column(name = "provided_file_name", length = 256) + @Size(max = 256) private String filename; @ManyToOne(optional = false, cascade = { CascadeType.PERSIST }) 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 85395e27b..58776b6a2 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 @@ -24,6 +24,8 @@ import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.eventbus.event.RolloutPropertyChangeEvent; import org.eclipse.hawkbit.repository.jpa.cache.CacheField; @@ -57,10 +59,13 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event private List rolloutGroups; @Column(name = "target_filter", length = 1024, nullable = false) + @Size(max = 1024) + @NotNull private String targetFilterQuery; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rolltout_ds")) + @NotNull private JpaDistributionSet distributionSet; @Column(name = "status") @@ -69,8 +74,9 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event @Column(name = "last_check") private long lastCheck; - @Column(name = "action_type", nullable = false) + @Column(name = "action_type", nullable = false, length = 16) @Enumerated(EnumType.STRING) + @NotNull private ActionType actionType = ActionType.FORCED; @Column(name = "forced_time") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java index 9bb8644f4..907fb203b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java @@ -24,6 +24,7 @@ import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.eventbus.event.RolloutGroupPropertyChangeEvent; import org.eclipse.hawkbit.repository.jpa.model.helper.EntityPropertyChangeHelper; @@ -66,24 +67,28 @@ public class JpaRolloutGroup extends AbstractJpaNamedEntity implements RolloutGr private RolloutGroupSuccessCondition successCondition = RolloutGroupSuccessCondition.THRESHOLD; @Column(name = "success_condition_exp", length = 512, nullable = false) + @Size(max = 512) private String successConditionExp; @Column(name = "success_action", nullable = false) private RolloutGroupSuccessAction successAction = RolloutGroupSuccessAction.NEXTGROUP; @Column(name = "success_action_exp", length = 512, nullable = false) + @Size(max = 512) private String successActionExp; @Column(name = "error_condition") private RolloutGroupErrorCondition errorCondition; @Column(name = "error_condition_exp", length = 512) + @Size(max = 512) private String errorConditionExp; @Column(name = "error_action") private RolloutGroupErrorAction errorAction; @Column(name = "error_action_exp", length = 512) + @Size(max = 512) private String errorActionExp; @Column(name = "total_targets") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java index 80156edb8..e52857c37 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java @@ -28,6 +28,8 @@ import javax.persistence.NamedEntityGraph; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.Artifact; import org.eclipse.hawkbit.repository.model.DistributionSet; @@ -58,6 +60,7 @@ public class JpaSoftwareModule extends AbstractJpaNamedVersionedEntity implement @ManyToOne @JoinColumn(name = "module_type", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_module_type")) + @NotNull private JpaSoftwareModuleType type; @ManyToMany(mappedBy = "modules", targetEntity = JpaDistributionSet.class, fetch = FetchType.LAZY) @@ -67,6 +70,7 @@ public class JpaSoftwareModule extends AbstractJpaNamedVersionedEntity implement private boolean deleted; @Column(name = "vendor", nullable = true, length = 256) + @Size(max = 256) private String vendor; @OneToMany(mappedBy = "softwareModule", cascade = { CascadeType.ALL }, targetEntity = JpaLocalArtifact.class) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java index f521922b6..5010ae918 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java @@ -14,6 +14,8 @@ import javax.persistence.Index; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @@ -34,6 +36,8 @@ public class JpaSoftwareModuleType extends AbstractJpaNamedEntity implements Sof private static final long serialVersionUID = 1L; @Column(name = "type_key", nullable = false, length = 64) + @Size(max = 64) + @NotNull private String key; @Column(name = "max_ds_assignments", nullable = false) @@ -41,6 +45,7 @@ public class JpaSoftwareModuleType extends AbstractJpaNamedEntity implements Sof private int maxAssignments; @Column(name = "colour", nullable = true, length = 16) + @Size(max = 16) private String colour; @Column(name = "deleted") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java index c32a5e673..476dea18b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java @@ -74,7 +74,7 @@ public class JpaTarget extends AbstractJpaNamedEntity implements Persistable, TargetInfo, EventAwareE private JpaTarget target; @Column(name = "address", length = 512) + @Size(max = 512) private String address; @Column(name = "last_target_query") @@ -96,8 +99,9 @@ public class JpaTargetInfo implements Persistable, TargetInfo, EventAwareE @Column(name = "install_date") private Long installationDate; - @Column(name = "update_status", nullable = false, length = 255) + @Column(name = "update_status", nullable = false, length = 16) @Enumerated(EnumType.STRING) + @NotNull private TargetUpdateStatus updateStatus = TargetUpdateStatus.UNKNOWN; @ManyToOne(optional = true, fetch = FetchType.LAZY) 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 d6f9a7a97..315804226 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 @@ -13,6 +13,8 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.TenantConfiguration; @@ -29,11 +31,15 @@ import org.eclipse.hawkbit.repository.model.TenantConfiguration; public class JpaTenantConfiguration extends AbstractJpaTenantAwareBaseEntity implements TenantConfiguration { private static final long serialVersionUID = 1L; - @Column(name = "conf_key", length = 128) + @Column(name = "conf_key", length = 128, nullable = false) + @Size(max = 128) + @NotNull private String key; - @Column(name = "conf_value", length = 512) + @Column(name = "conf_value", length = 512, nullable = false) @Basic + @Size(max = 512) + @NotNull private String value; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java index 9363a4db8..7fcb3c50e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java @@ -19,6 +19,7 @@ import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.UniqueConstraint; +import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; @@ -43,6 +44,7 @@ public class JpaTenantMetaData extends AbstractJpaBaseEntity implements TenantMe private static final long serialVersionUID = 1L; @Column(name = "tenant", nullable = false, length = 40) + @Size(max = 40) private String tenant; @OneToOne(fetch = FetchType.LAZY) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/H2/V1_7_1__reduce_length_enums___H2.sql b/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/H2/V1_7_1__reduce_length_enums___H2.sql new file mode 100644 index 000000000..ae9eef28e --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/H2/V1_7_1__reduce_length_enums___H2.sql @@ -0,0 +1,5 @@ +ALTER TABLE sp_target_info MODIFY update_status VARCHAR(16) not null; +ALTER TABLE sp_action MODIFY action_type VARCHAR(16) not null; +ALTER TABLE sp_rollout MODIFY action_type VARCHAR(16) not null; +ALTER TABLE sp_tenant_configuration MODIFY conf_key VARCHAR(128) not null; +ALTER TABLE sp_tenant_configuration MODIFY conf_value VARCHAR(512) not null; \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/MYSQL/V1_7_1__reduce_length_enums___MYSQL.sql b/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/MYSQL/V1_7_1__reduce_length_enums___MYSQL.sql new file mode 100644 index 000000000..ae9eef28e --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/MYSQL/V1_7_1__reduce_length_enums___MYSQL.sql @@ -0,0 +1,5 @@ +ALTER TABLE sp_target_info MODIFY update_status VARCHAR(16) not null; +ALTER TABLE sp_action MODIFY action_type VARCHAR(16) not null; +ALTER TABLE sp_rollout MODIFY action_type VARCHAR(16) not null; +ALTER TABLE sp_tenant_configuration MODIFY conf_key VARCHAR(128) not null; +ALTER TABLE sp_tenant_configuration MODIFY conf_value VARCHAR(512) not null; \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java index 34031639d..9360626c4 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java @@ -506,6 +506,21 @@ public class TestdataFactory { return distributionSet; } + /** + * builder method for generating a {@link DistributionSet}. + * + * @param name + * {@link DistributionSet#getName()} + * + * @return the generated {@link DistributionSet} + */ + public DistributionSet generateDistributionSet(final String name) { + final DistributionSet distributionSet = entityFactory.generateDistributionSet(name, DEFAULT_VERSION, null, + findOrCreateDefaultTestDsType(), null); + distributionSet.setDescription(LOREM.words(10)); + return distributionSet; + } + /** * Creates {@link DistributionSetTag}s in repository. *