From 347803bd8d8349baa0577156896a1ec924a69e6d Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 03 Apr 2017 16:41:28 +0000
Subject: [PATCH] #3535 fix - Marked obsolete metadata field on licenses
---
securis/src/main/java/net/curisit/securis/services/PackResource.java | 43 +++++++++++++++++++++++++++----------------
1 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index 89bc311..a417a98 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -44,6 +44,7 @@
import net.curisit.securis.services.exception.SeCurisServiceException;
import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
import net.curisit.securis.services.helpers.LicenseHelper;
+import net.curisit.securis.services.helpers.MetadataHelper;
import net.curisit.securis.utils.LicUtils;
import net.curisit.securis.utils.TokenHelper;
@@ -60,6 +61,9 @@
@Inject
TokenHelper tokenHelper;
+
+ @Inject
+ MetadataHelper metadataHelper;
@Context
EntityManager em;
@@ -273,27 +277,34 @@
currentPack.setEndValidDate(pack.getEndValidDate());
Set<PackMetadata> newMD = pack.getMetadata();
- Set<String> newMdKeys = getMdKeys(newMD);
- for (PackMetadata currentMd : currentPack.getMetadata()) {
- if (!newMdKeys.contains(currentMd.getKey())) {
- em.remove(currentMd);
- }
- }
-
- if (newMD != null) {
- Set<String> oldMdKeys = getMdKeys(newMD);
- for (PackMetadata md : newMD) {
- if (oldMdKeys.contains(md.getKey())) {
- em.merge(md);
- } else {
- md.setPack(currentPack);
- em.persist(md);
+ boolean metadataChanges = !metadataHelper.match(newMD, currentPack.getMetadata());
+ if (metadataChanges) {
+ Set<String> newMdKeys = getMdKeys(newMD);
+ for (PackMetadata currentMd : currentPack.getMetadata()) {
+ if (!newMdKeys.contains(currentMd.getKey())) {
+ em.remove(currentMd);
}
}
+
+ if (newMD != null) {
+ Set<String> oldMdKeys = getMdKeys(newMD);
+ for (PackMetadata md : newMD) {
+ if (oldMdKeys.contains(md.getKey())) {
+ em.merge(md);
+ } else {
+ md.setPack(currentPack);
+ em.persist(md);
+ }
+ }
+ }
+ currentPack.setMetadata(newMD);
}
- currentPack.setMetadata(newMD);
em.merge(currentPack);
+ if (metadataChanges) {
+ metadataHelper.markObsoleteMetadata(em, currentPack);
+ }
+
return Response.ok(currentPack).build();
}
--
Gitblit v1.3.2