From cd79b918b4a190067906d249d9e76d7afe37529f Mon Sep 17 00:00:00 2001 From: Stefan Behl Date: Wed, 1 Aug 2018 09:10:03 +0200 Subject: [PATCH] Target attributes update: Allow null values Signed-off-by: Stefan Behl --- .../repository/jpa/JpaControllerManagement.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java index 5cddb7495..01d986e25 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java @@ -672,12 +672,12 @@ public class JpaControllerManagement implements ControllerManagement { case REPLACE: // clear the attributes before adding the new attributes controllerAttributes.clear(); - controllerAttributes.putAll(data); + copyNonNull(data, controllerAttributes); target.setRequestControllerAttributes(false); break; case MERGE: // just merge the attributes in - controllerAttributes.putAll(data); + copyNonNull(data, controllerAttributes); target.setRequestControllerAttributes(false); break; default: @@ -689,6 +689,13 @@ public class JpaControllerManagement implements ControllerManagement { return targetRepository.save(target); } + private static void copyNonNull(final Map src, final Map trg) { + if (src == null || src.isEmpty()) { + return; + } + src.entrySet().stream().filter(e -> e.getValue() != null).forEach(e -> trg.put(e.getKey(), e.getValue())); + } + private void assertTargetAttributesQuota(final JpaTarget target) { final int limit = quotaManagement.getMaxAttributeEntriesPerTarget(); QuotaHelper.assertAssignmentQuota(target.getId(), target.getControllerAttributes().size(), limit, "Attribute",