public ResponseEntity putMetadataBatch()

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);
    }