From 3ffe5b8b4fc06ae4e9f13dd8a8eec129871a4902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristinn=20Sigur=C3=B0sson?= Date: Wed, 11 Mar 2015 13:52:31 +0000 Subject: [PATCH] Stop automatically writing WARC-Payload-Digest for revisit records. Refer that functionality to the relevant revisit profile classes. --- .../revisit/IdenticalPayloadDigestRevisit.java | 4 ++-- .../revisit/ServerNotModifiedRevisit.java | 18 ++++++++++++++++++ .../modules/writer/WARCWriterProcessor.java | 8 ++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/modules/src/main/java/org/archive/modules/revisit/IdenticalPayloadDigestRevisit.java b/modules/src/main/java/org/archive/modules/revisit/IdenticalPayloadDigestRevisit.java index 6f8257bb..64e75b49 100644 --- a/modules/src/main/java/org/archive/modules/revisit/IdenticalPayloadDigestRevisit.java +++ b/modules/src/main/java/org/archive/modules/revisit/IdenticalPayloadDigestRevisit.java @@ -1,5 +1,6 @@ package org.archive.modules.revisit; +import static org.archive.format.warc.WARCConstants.HEADER_KEY_PAYLOAD_DIGEST; import static org.archive.format.warc.WARCConstants.HEADER_KEY_REFERS_TO_TARGET_URI; import java.util.Map; @@ -32,8 +33,7 @@ public class IdenticalPayloadDigestRevisit extends AbstractProfile { public Map getWarcHeaders() { Map headers = super.getWarcHeaders(); - // Written automatically by WarcWriterProcessor for all HTTP responses - // headers.put(HEADER_KEY_PAYLOAD_DIGEST, payloadDigest); + headers.put(HEADER_KEY_PAYLOAD_DIGEST, payloadDigest); if (refersToTargetURI!=null) { headers.put(HEADER_KEY_REFERS_TO_TARGET_URI, refersToTargetURI); diff --git a/modules/src/main/java/org/archive/modules/revisit/ServerNotModifiedRevisit.java b/modules/src/main/java/org/archive/modules/revisit/ServerNotModifiedRevisit.java index 0ec25804..d9772f5b 100644 --- a/modules/src/main/java/org/archive/modules/revisit/ServerNotModifiedRevisit.java +++ b/modules/src/main/java/org/archive/modules/revisit/ServerNotModifiedRevisit.java @@ -2,6 +2,7 @@ package org.archive.modules.revisit; import static org.archive.format.warc.WARCConstants.HEADER_KEY_ETAG; import static org.archive.format.warc.WARCConstants.HEADER_KEY_LAST_MODIFIED; +import static org.archive.format.warc.WARCConstants.HEADER_KEY_PAYLOAD_DIGEST; import java.util.Map; @@ -13,6 +14,9 @@ public class ServerNotModifiedRevisit extends AbstractProfile { protected String eTag; protected String lastModified; + // Optional. Digest of original capture + protected String payloadDigest; + /** * Minimal constructor. */ @@ -29,6 +33,10 @@ public class ServerNotModifiedRevisit extends AbstractProfile { public Map getWarcHeaders() { Map headers = super.getWarcHeaders(); + if (payloadDigest!=null) { + headers.put(HEADER_KEY_PAYLOAD_DIGEST, payloadDigest); + } + if (eTag!=null) { headers.put(HEADER_KEY_ETAG, eTag); } @@ -59,5 +67,15 @@ public class ServerNotModifiedRevisit extends AbstractProfile { this.lastModified = lastModified; } + + public String getPayloadDigest() { + return payloadDigest; + } + + + public void setPayloadDigest(String payloadDigest) { + this.payloadDigest = payloadDigest; + } + } diff --git a/modules/src/main/java/org/archive/modules/writer/WARCWriterProcessor.java b/modules/src/main/java/org/archive/modules/writer/WARCWriterProcessor.java index 8ce1eba4..e50fd051 100644 --- a/modules/src/main/java/org/archive/modules/writer/WARCWriterProcessor.java +++ b/modules/src/main/java/org/archive/modules/writer/WARCWriterProcessor.java @@ -392,10 +392,6 @@ public class WARCWriterProcessor extends WriterPoolProcessor implements WARCWrit // TODO: Use other than ANVL (or rename ANVL as NameValue or // use RFC822 (commons-httpclient?). ANVLRecord headers = new ANVLRecord(); - if (curi.getContentDigest() != null) { - headers.addLabelValue(HEADER_KEY_PAYLOAD_DIGEST, - curi.getContentDigestSchemeString()); - } headers.addLabelValue(HEADER_KEY_IP, getHostAddress(curi)); URI rid; @@ -403,6 +399,10 @@ public class WARCWriterProcessor extends WriterPoolProcessor implements WARCWrit if (curi.isRevisit()) { rid = writeRevisit(w, timestamp, HTTP_RESPONSE_MIMETYPE, baseid, curi, headers); } else { + if (curi.getContentDigest() != null) { + headers.addLabelValue(HEADER_KEY_PAYLOAD_DIGEST, + curi.getContentDigestSchemeString()); + } // Check for truncated annotation String value = null; Collection anno = curi.getAnnotations();