package io.progix.dropwizard.patch;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.dropwizard.jackson.Jackson;
import java.io.IOException;
public class PatchUtil {
public static final ObjectMapper mapper = Jackson.newObjectMapper();
public static <T> T copy(T object) {
if(object instanceof JsonNode) {
return (T) ((JsonNode) object).deepCopy();
}
try {
return mapper.readValue(mapper.writeValueAsString(object), mapper.getTypeFactory().constructType(object.getClass()));
} catch (IOException e) {
throw new RuntimeException("An error occurred while copying an object. See stack trace for more information.", e);
}
}
}