diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java index 22536b29533..2e2e1786226 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java @@ -1047,7 +1047,7 @@ public abstract class EntityRepository { return RestUtil.getHref(uriInfo, collectionPath, id); } - public T restoreEntity(String updatedBy, String entityType, UUID id) throws IOException { + public PutResponse restoreEntity(String updatedBy, String entityType, UUID id) throws IOException { // If an entity being restored contains other **deleted** children entities, restore them List records = daoCollection.relationshipDAO().findTo(id.toString(), entityType, Relationship.CONTAINS.ordinal()); @@ -1062,10 +1062,15 @@ public abstract class EntityRepository { // Finally set entity deleted flag to false LOG.info("Restoring the {} {}", entityType, id); - T entity = dao.findEntityById(id, DELETED); - entity.setDeleted(false); - dao.update(entity.getId(), JsonUtils.pojoToJson(entity)); - return entity; + T original = dao.findEntityById(id, DELETED); + setFieldsInternal(original, putFields); + T updated = JsonUtils.readValue(JsonUtils.pojoToJson(original), entityClass); + updated.setUpdatedBy(updatedBy); + updated.setUpdatedAt(System.currentTimeMillis()); + EntityUpdater updater = getUpdater(original, updated, Operation.PUT); + updater.update(); + String change = updater.fieldsChanged() ? RestUtil.ENTITY_UPDATED : RestUtil.ENTITY_NO_CHANGE; + return new PutResponse<>(Status.OK, updated, change); } public void addRelationship(UUID fromId, UUID toId, String fromEntity, String toEntity, Relationship relationship) { diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java index d2b17a8603c..40f01ce3a12 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/EntityResource.java @@ -249,9 +249,10 @@ public abstract class EntityResource response = dao.restoreEntity(securityContext.getUserPrincipal().getName(), entityType, id); + addHref(uriInfo, response.getEntity()); + LOG.info("Restored {}:{}", Entity.getEntityTypeFromObject(response.getEntity()), response.getEntity().getId()); + return response.toResponse(); } public String exportCsvInternal(SecurityContext securityContext, String name) throws IOException {