in rest/src/main/java/com/epam/eco/schemacatalog/rest/controller/MetadataSchemaController.java [143:174]
public ResponseEntity<?> putMetadataBatch(
@RequestBody Map<String, MetadataRequest> batch) {
MetadataBatchUpdateParams.Builder builder = MetadataBatchUpdateParams.builder();
Map<String, String> invalidMetadataKeys = new HashMap<>();
for (Map.Entry<String, MetadataRequest> entry : batch.entrySet()) {
MetadataKey key;
try {
key = JsonMapper.jsonToObject(entry.getKey(), MetadataKey.class);
} catch (Exception ex) {
invalidMetadataKeys.put(entry.getKey(), String.format("Metadata key is not parsable. %s", ex.getMessage()));
LOGGER.warn(String.format(
"Metadata key '%s' is not parsable.",
entry.getKey().replaceAll("[\r\n]"," ")), ex);
continue;
}
if (entry.getValue() == null) {
builder.delete(key);
} else {
MetadataUpdateParams updateParams = MetadataUpdateParams.builder()
.key(key)
.doc(entry.getValue().getDoc())
.attributes(entry.getValue().getAttributes())
.build();
builder.update(updateParams);
}
}
schemaCatalogStore.updateMetadata(builder.build());
if (invalidMetadataKeys.isEmpty()) {
return ResponseEntity.noContent().build();
}
return ResponseEntity.unprocessableEntity().body(invalidMetadataKeys);
}