Fix transitive software module lock on explicit DS lock (#1762)

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-07-11 09:34:57 +03:00
committed by GitHub
parent 719062215f
commit c5e5c2bb45

View File

@@ -275,10 +275,15 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
// lock/unlock ONLY if locked flag is present! // lock/unlock ONLY if locked flag is present!
if (Boolean.TRUE.equals(update.locked())) { if (Boolean.TRUE.equals(update.locked())) {
if (!set.isLocked()) {
lockSoftwareModules(set);
set.lock(); set.lock();
}
} else if (Boolean.FALSE.equals(update.locked())) { } else if (Boolean.FALSE.equals(update.locked())) {
if (set.isLocked()) {
set.unlock(); set.unlock();
} }
}
if (update.isRequiredMigrationStep() != null if (update.isRequiredMigrationStep() != null
&& !update.isRequiredMigrationStep().equals(set.isRequiredMigrationStep())) { && !update.isRequiredMigrationStep().equals(set.isRequiredMigrationStep())) {
@@ -680,13 +685,7 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
public void lock(final long id) { public void lock(final long id) {
final JpaDistributionSet distributionSet = getById(id); final JpaDistributionSet distributionSet = getById(id);
if (!distributionSet.isLocked()) { if (!distributionSet.isLocked()) {
distributionSet.getModules().forEach(module -> { lockSoftwareModules(distributionSet);
if (!module.isLocked()) {
final JpaSoftwareModule jpaSoftwareModule = (JpaSoftwareModule)module;
jpaSoftwareModule.lock();
softwareModuleRepository.save(jpaSoftwareModule);
}
});
distributionSet.lock(); distributionSet.lock();
distributionSetRepository.save(distributionSet); distributionSetRepository.save(distributionSet);
} }
@@ -839,6 +838,16 @@ public class JpaDistributionSetManagement implements DistributionSetManagement {
return true; return true;
} }
private void lockSoftwareModules(final JpaDistributionSet distributionSet) {
distributionSet.getModules().forEach(module -> {
if (!module.isLocked()) {
final JpaSoftwareModule jpaSoftwareModule = (JpaSoftwareModule)module;
jpaSoftwareModule.lock();
softwareModuleRepository.save(jpaSoftwareModule);
}
});
}
private JpaDistributionSet getById(final long id) { private JpaDistributionSet getById(final long id) {
return distributionSetRepository return distributionSetRepository
.findById(id) .findById(id)