From 280a41dbad1e2a29afa84a8da2696ffe34b4e084 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 8 Feb 2019 14:39:09 +0000 Subject: [PATCH] Refs #13306: gCat MUST enforce extra field "searchable" in published Items Task-Url: https://support.d4science.org/issues/13306 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-publishing/gcat@177053 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../gcube/gcat/persistence/ckan/CKANPackage.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/gcube/gcat/persistence/ckan/CKANPackage.java b/src/main/java/org/gcube/gcat/persistence/ckan/CKANPackage.java index 4719b04..d35f12d 100644 --- a/src/main/java/org/gcube/gcat/persistence/ckan/CKANPackage.java +++ b/src/main/java/org/gcube/gcat/persistence/ckan/CKANPackage.java @@ -175,31 +175,38 @@ public class CKANPackage extends CKAN { } } - + ArrayNode extrasObjectNode; + boolean found = false; if(objectNode.has(EXTRAS_KEY)) { try { - ArrayNode extrasObjectNode = (ArrayNode) objectNode.get(EXTRAS_KEY); + extrasObjectNode = (ArrayNode) objectNode.get(EXTRAS_KEY); for(JsonNode jsonNode : extrasObjectNode) { String key = jsonNode.get(EXTRAS_KEY_KEY).asText(); if(key.compareTo(SEARCHABLE_KEY)==0) { ObjectNode searchableObjectNode = (ObjectNode) jsonNode; searchableObjectNode.put(EXTRAS_VALUE_KEY, true); extrasObjectNode.add(searchableObjectNode); + found = true; break; } } }catch (Exception e) { throw new BadRequestException("Invalid '"+EXTRAS_KEY+"' field", e); } + }else { - ArrayNode extrasObjectNode = mapper.createArrayNode(); + extrasObjectNode = mapper.createArrayNode(); + } + + if(!found) { ObjectNode searchableObjectNode = mapper.createObjectNode(); searchableObjectNode.put(EXTRAS_KEY_KEY, SEARCHABLE_KEY); searchableObjectNode.put(EXTRAS_VALUE_KEY, true); extrasObjectNode.add(searchableObjectNode); - objectNode.set(EXTRAS_KEY, extrasObjectNode); } + objectNode.set(EXTRAS_KEY, extrasObjectNode); + return objectNode; }