From fc256f48aa7e1a378f540fc1fdbde46739ff903c Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Wed, 28 Jan 2015 23:12:42 +0000
Subject: [PATCH] #0 fix - Fixed Application modification service
---
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java | 29 +++++++++++++++++++++++------
1 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index 872dfa6..e103f1a 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -1,7 +1,9 @@
package net.curisit.securis.services;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.annotation.security.RolesAllowed;
@@ -177,19 +179,24 @@
currentapp.setDescription(app.getDescription());
Set<ApplicationMetadata> newMD = app.getApplicationMetadata();
- for (ApplicationMetadata currentMd : currentapp.getApplicationMetadata()) {
- if (newMD == null || !newMD.contains(currentMd)) {
+ Set<ApplicationMetadata> oldMD = currentapp.getApplicationMetadata();
+ Map<String, ApplicationMetadata> directOldMD = getMapMD(oldMD);
+ Map<String, ApplicationMetadata> directNewMD = getMapMD(newMD);
+ for (ApplicationMetadata currentMd : oldMD) {
+ if (newMD == null || !directNewMD.containsKey(currentMd.getKey())) {
em.remove(currentMd);
}
}
if (newMD != null) {
- Set<ApplicationMetadata> oldMD = currentapp.getApplicationMetadata();
for (ApplicationMetadata md : newMD) {
- if (oldMD.contains(md)) {
- em.merge(md);
+ if (directOldMD.containsKey(md.getKey())) {
+ ApplicationMetadata amd = directOldMD.get(md.getKey());
+ amd.setValue(md.getValue());
+ amd.setMandatory(md.isMandatory());
+ em.merge(amd);
} else {
- md.setApplication(app);
+ md.setApplication(currentapp);
if (md.getCreationTimestamp() == null) {
md.setCreationTimestamp(app.getCreationTimestamp());
}
@@ -202,6 +209,16 @@
return Response.ok(currentapp).build();
}
+ private Map<String, ApplicationMetadata> getMapMD(Set<ApplicationMetadata> amd) {
+ Map<String, ApplicationMetadata> map = new HashMap<String, ApplicationMetadata>();
+ if (amd != null) {
+ for (ApplicationMetadata applicationMetadata : amd) {
+ map.put(applicationMetadata.getKey(), applicationMetadata);
+ }
+ }
+ return map;
+ }
+
@DELETE
@Path("/{appid}")
@EnsureTransaction
--
Gitblit v1.3.2