Fix transitive software module lock on explicit DS lock (#1762)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -275,9 +275,14 @@ 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())) {
|
||||||
set.lock();
|
if (!set.isLocked()) {
|
||||||
|
lockSoftwareModules(set);
|
||||||
|
set.lock();
|
||||||
|
}
|
||||||
} else if (Boolean.FALSE.equals(update.locked())) {
|
} else if (Boolean.FALSE.equals(update.locked())) {
|
||||||
set.unlock();
|
if (set.isLocked()) {
|
||||||
|
set.unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (update.isRequiredMigrationStep() != null
|
if (update.isRequiredMigrationStep() != null
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user