* Added to management intefaces (+ tests) Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -134,6 +134,16 @@ public interface DistributionSetManagement
|
|||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
|
||||||
void deleteMetaData(long id, @NotEmpty String key);
|
void deleteMetaData(long id, @NotEmpty String key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locks a distribution set. From then on its functional properties could not be changed and
|
||||||
|
* it could be assigned to targets
|
||||||
|
*
|
||||||
|
* @param id the distribution set id
|
||||||
|
* @throws EntityNotFoundException if distribution set with given ID does not exist
|
||||||
|
*/
|
||||||
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
|
||||||
|
void lock(final long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the distribution set for a given action.
|
* Retrieves the distribution set for a given action.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -322,13 +322,20 @@ public interface SoftwareModuleManagement
|
|||||||
* to be filtered on
|
* to be filtered on
|
||||||
*
|
*
|
||||||
* @return the found {@link SoftwareModule}s
|
* @return the found {@link SoftwareModule}s
|
||||||
*
|
* @throws EntityNotFoundException if software module type with given ID does not exist
|
||||||
* @throws EntityNotFoundException
|
|
||||||
* if software module type with given ID does not exist
|
|
||||||
*/
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
||||||
Slice<SoftwareModule> findByType(@NotNull Pageable pageable, long typeId);
|
Slice<SoftwareModule> findByType(@NotNull Pageable pageable, long typeId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locks a software module.
|
||||||
|
*
|
||||||
|
* @param id the software module id
|
||||||
|
* @throws EntityNotFoundException if software module with given ID does not exist
|
||||||
|
*/
|
||||||
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
|
||||||
|
void lock(long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates a distribution set meta data value if corresponding entry exists.
|
* Updates a distribution set meta data value if corresponding entry exists.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -686,6 +686,18 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
@Retryable(include = {
|
||||||
|
ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY))
|
||||||
|
public void lock(final long id) {
|
||||||
|
final JpaDistributionSet distributionSet = getById(id);
|
||||||
|
if (!distributionSet.isLocked()) {
|
||||||
|
distributionSet.lock();
|
||||||
|
distributionSetRepository.save(distributionSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@Retryable(include = {
|
@Retryable(include = {
|
||||||
|
|||||||
@@ -616,6 +616,20 @@ public class JpaSoftwareModuleManagement implements SoftwareModuleManagement {
|
|||||||
.map(SoftwareModuleMetadata.class::cast);
|
.map(SoftwareModuleMetadata.class::cast);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
@Retryable(include = {
|
||||||
|
ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY))
|
||||||
|
public void lock(final long id) {
|
||||||
|
final JpaSoftwareModule softwareModule = softwareModuleRepository
|
||||||
|
.findById(id)
|
||||||
|
.orElseThrow(() -> new EntityNotFoundException(SoftwareModule.class, id));
|
||||||
|
if (!softwareModule.isLocked()) {
|
||||||
|
softwareModule.lock();
|
||||||
|
softwareModuleRepository.save(softwareModule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@Retryable(include = {
|
@Retryable(include = {
|
||||||
|
|||||||
@@ -995,7 +995,35 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Deltes a DS that is no in use. Expected behaviour is a hard delete on the database.")
|
@Description("Locks a DS.")
|
||||||
|
void lockDistributionSet() {
|
||||||
|
final DistributionSet distributionSet = testdataFactory.createDistributionSet("ds-1");
|
||||||
|
assertThat(
|
||||||
|
distributionSetManagement.get(distributionSet.getId()).map(DistributionSet::isLocked)
|
||||||
|
.orElse(true))
|
||||||
|
.isFalse();
|
||||||
|
distributionSetManagement.lock(distributionSet.getId());
|
||||||
|
assertThat(
|
||||||
|
distributionSetManagement.get(distributionSet.getId()).map(DistributionSet::isLocked)
|
||||||
|
.orElse(false))
|
||||||
|
.isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Locks an incomplete DS. Expected behaviour is to throw exception and to do not lock it.")
|
||||||
|
void lockIncompleteDistributionSetFails() {
|
||||||
|
final DistributionSet incompleteDistributionSet = testdataFactory.createIncompleteDistributionSet();
|
||||||
|
assertThatExceptionOfType(IncompleteDistributionSetException.class)
|
||||||
|
.as("Locking an incomplete distribution set should throw an exception")
|
||||||
|
.isThrownBy(() -> distributionSetManagement.lock(incompleteDistributionSet.getId()));
|
||||||
|
assertThat(
|
||||||
|
distributionSetManagement.get(incompleteDistributionSet.getId()).map(DistributionSet::isLocked)
|
||||||
|
.orElse(true))
|
||||||
|
.isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Deletes a DS that is no in use. Expected behaviour is a hard delete on the database.")
|
||||||
void deleteUnassignedDistributionSet() {
|
void deleteUnassignedDistributionSet() {
|
||||||
final DistributionSet ds1 = testdataFactory.createDistributionSet("ds-1");
|
final DistributionSet ds1 = testdataFactory.createDistributionSet("ds-1");
|
||||||
testdataFactory.createDistributionSet("ds-2");
|
testdataFactory.createDistributionSet("ds-2");
|
||||||
|
|||||||
@@ -821,6 +821,19 @@ public class SoftwareModuleManagementTest extends AbstractJpaIntegrationTest {
|
|||||||
.getContent()).as("Metadata elements are").isEmpty();
|
.getContent()).as("Metadata elements are").isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Locks a SM.")
|
||||||
|
void lockSoftwareModule() {
|
||||||
|
final SoftwareModule softwareModule = testdataFactory.createSoftwareModule("ds-1");
|
||||||
|
assertThat(
|
||||||
|
softwareModuleManagement.get(softwareModule.getId()).map(SoftwareModule::isLocked).orElse(true))
|
||||||
|
.isFalse();
|
||||||
|
softwareModuleManagement.lock(softwareModule.getId());
|
||||||
|
assertThat(
|
||||||
|
softwareModuleManagement.get(softwareModule.getId()).map(SoftwareModule::isLocked).orElse(false))
|
||||||
|
.isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Verifies that non existing metadata find results in exception.")
|
@Description("Verifies that non existing metadata find results in exception.")
|
||||||
public void findSoftwareModuleMetadataFailsIfEntryDoesNotExist() {
|
public void findSoftwareModuleMetadataFailsIfEntryDoesNotExist() {
|
||||||
|
|||||||
Reference in New Issue
Block a user