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