Skip to content

Commit

Permalink
refactoring out redundant classes
Browse files Browse the repository at this point in the history
  • Loading branch information
barmintor committed Mar 15, 2013
1 parent 6e0b387 commit c0497ca
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 33 deletions.
40 changes: 20 additions & 20 deletions fcrepo-http-api/src/main/java/org/fcrepo/api/FedoraDatastreams.java
Expand Up @@ -25,6 +25,7 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
Expand Down Expand Up @@ -509,33 +510,32 @@ private DatastreamFixity validatedDatastreamFixity(Datastream ds) throws Reposit
throw new RepositoryException(e.getMessage(),e);
}

Map<LowLevelCacheStore, FixityResult> blobs = getFixity(node, digest);
dsf.statuses = new ArrayList<FixityStatus>(blobs.size());
Collection<FixityResult> blobs = getFixity(node, digest);
dsf.statuses = new ArrayList<FixityResult>(blobs.size());

for (LowLevelCacheStore key: blobs.keySet()){
FixityStatus status = new FixityStatus();
status.validChecksum = false;
status.validSize = false;
status.dsChecksumType = ds.getContentDigestType();
status.dsChecksum = dsChecksum;
status.dsSize = dsSize;
for (FixityResult blob: blobs){
//FixityStatus status = new FixityStatus();
blob.validChecksum = false;
blob.validSize = false;
blob.dsChecksumType = ds.getContentDigestType();
blob.dsChecksum = dsChecksum;
blob.dsSize = dsSize;

FixityResult result = blobs.get(key);


status.storeIdentifier = key.getExternalIdentifier();
status.computedSize = result.computedSize;
status.computedChecksum = result.computedChecksum;
logger.debug("Computed checksum: " + result.computedChecksum);
logger.debug("Computed size is " + result.computedSize);
// status.storeIdentifier = blob.storeIdentifier;
// status.computedSize = blob.computedSize;
// status.computedChecksum = blob.computedChecksum;
logger.debug("Computed checksum: {}", blob.computedChecksum);
logger.debug("Computed size is ", blob.computedSize);

if (result.computedChecksum.equals(dsChecksum)) {
status.validChecksum = true;
if (blob.computedChecksum.equals(dsChecksum)) {
blob.validChecksum = true;
}
if (result.computedSize == dsSize) {
status.validSize = true;
if (blob.computedSize == dsSize) {
blob.validSize = true;
}
dsf.statuses.add(status);
dsf.statuses.add(blob);
}
return dsf;
}
Expand Down
Expand Up @@ -26,6 +26,7 @@
import org.fcrepo.api.AbstractResourceTest;
import org.fcrepo.jaxb.responses.management.DatastreamFixity;
import org.fcrepo.jaxb.responses.management.FixityStatus;
import org.fcrepo.utils.FixityResult;
import org.junit.Test;

public class FedoraDatastreamsTest extends AbstractResourceTest {
Expand Down Expand Up @@ -321,7 +322,7 @@ public void testCheckDatastreamFixity() throws Exception {
DatastreamFixity fixity =
(DatastreamFixity) um.unmarshal(new java.io.StringReader(content));
int cache = 0;
for (FixityStatus status:fixity.statuses){
for (FixityResult status:fixity.statuses){
logger.debug("Verifying cache {} :", cache++);
assertTrue(status.validChecksum);
logger.debug("Checksum matched");
Expand Down
@@ -1,14 +1,27 @@
package org.fcrepo.jaxb.responses.management;

import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.fcrepo.utils.FixityResult;

@XmlRootElement(name = "DatastreamFixity")
public class DatastreamFixity {

@XmlAttribute(name="dsId")
public String dsId;

@XmlAttribute(name="objectId")
public String objectId;

@XmlAttribute(name="timestamp")
public Date timestamp;

@XmlElement(name = "DatastreamFixityStatus")
public List<FixityStatus> statuses;
public List<FixityResult> statuses;

}
Expand Up @@ -11,6 +11,7 @@
import java.io.InputStream;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -62,7 +63,7 @@ private static JcrRepository getRepositoryInstance() {
return (JcrRepository) readOnlySession.getRepository();
}

public static Map<LowLevelCacheStore, FixityResult> getFixity(
public static Collection<FixityResult> getFixity(
final Node resource, final MessageDigest digest) throws RepositoryException {
logger.debug("Checking resource: " + resource.getPath());

Expand All @@ -81,12 +82,13 @@ public FixityResult transformEntry(LowLevelCacheStore store,
(MessageDigest) digest.clone());

result = new FixityResult();
result.storeIdentifier = store.getExternalIdentifier();
//result.
while (ds.read() != -1) ;

String calculatedDigest =
encodeHexString(ds.getMessageDigest()
.digest());

result.computedChecksum = ContentDigest.asURI(digest.getAlgorithm(), calculatedDigest);
result.computedSize = ds.getByteCount();
ds.close();
Expand All @@ -101,7 +103,7 @@ public FixityResult transformEntry(LowLevelCacheStore store,
return result;
}

});
}).values();
}

public static
Expand Down
30 changes: 27 additions & 3 deletions fcrepo-kernel/src/main/java/org/fcrepo/utils/FixityResult.java
Expand Up @@ -2,11 +2,35 @@

import java.net.URI;

public class FixityResult {
public long computedSize;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

public URI computedChecksum;
@XmlRootElement(name = "DatastreamFixityStatus")
public class FixityResult {

@XmlElement
public String storeIdentifier;

@XmlElement
public long computedSize;

@XmlElement
public URI computedChecksum;

@XmlElement
public long dsSize;

@XmlElement
public String dsChecksumType;

@XmlElement
public URI dsChecksum;

@XmlElement
public boolean validChecksum;

@XmlElement
public boolean validSize;
public FixityResult() {

}
Expand Down
Expand Up @@ -10,8 +10,8 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import javax.inject.Inject;
import javax.jcr.Repository;
Expand All @@ -20,7 +20,6 @@
import org.apache.commons.io.IOUtils;
import org.fcrepo.Datastream;
import org.fcrepo.utils.FixityResult;
import org.fcrepo.utils.LowLevelCacheStore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
Expand Down Expand Up @@ -48,11 +47,11 @@ public void testChecksumBlobs() throws Exception {

final Datastream ds = getDatastream("testObject", "testRepositoryContent");

final Map<LowLevelCacheStore,FixityResult> fixityResultMap = LowLevelStorageService.getFixity(ds.getNode(), MessageDigest.getInstance("SHA-1"));
final Collection<FixityResult> fixityResults = LowLevelStorageService.getFixity(ds.getNode(), MessageDigest.getInstance("SHA-1"));

assertNotEquals(0, fixityResultMap.size());
assertNotEquals(0, fixityResults.size());

for (FixityResult fixityResult : fixityResultMap.values()) {
for (FixityResult fixityResult : fixityResults) {
assertEquals("urn:sha1:87acec17cd9dcd20a716cc2cf67417b71c8a7016", fixityResult.computedChecksum.toString());
}
}
Expand Down

0 comments on commit c0497ca

Please sign in to comment.