- private JsonElement mergeHeaderInFoToPayload(JsonElement propertiesFromRequest, HttpHeaders headers, boolean isAdd) {
- if(!headers.getRequestHeaders().containsKey("X-FromAppId"))
- return propertiesFromRequest;
-
- String sourceOfTruth = headers.getRequestHeaders().getFirst("X-FromAppId");
- Set<Map.Entry<String, JsonElement>> properties = new HashSet<Map.Entry<String, JsonElement>>();
- properties.addAll(propertiesFromRequest.getAsJsonObject().entrySet());
-
- Set<String> propertyKeys = new HashSet<String>();
- for(Map.Entry<String, JsonElement> property : properties) {
- propertyKeys.add(property.getKey());
- }
-
- if(!propertyKeys.contains(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH)) {
- properties.add(new AbstractMap.SimpleEntry<String, JsonElement>(AAIProperties.LAST_MOD_SOURCE_OF_TRUTH,
- (JsonElement)(new JsonPrimitive(sourceOfTruth))));
- }
-
- if(isAdd && !propertyKeys.contains(AAIProperties.SOURCE_OF_TRUTH)) {
- properties.add(new AbstractMap.SimpleEntry<String, JsonElement>(AAIProperties.SOURCE_OF_TRUTH,
- (JsonElement)(new JsonPrimitive(sourceOfTruth))));
- }
-
- Object[] propArray = properties.toArray();
- StringBuilder sb = new StringBuilder();
- sb.append("{");
- boolean first=true;
- for(int i=0; i<propArray.length; i++) {
-
- Map.Entry<String, JsonElement> entry = (Entry<String, JsonElement>) propArray[i];
- if(!first) {
- sb.append(",");
- }
- sb.append("\"").append(entry.getKey()).append("\"").append(":").append(entry.getValue());
- first=false;
- }
- sb.append("}");
-
- return gson.fromJson(sb.toString(), JsonElement.class);
- }
-