Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

INCOMPLETE FCREPO-3931 #209

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.github.benmanes.caffeine.cache.Caffeine;
import io.ocfl.api.OcflConfig;
import io.ocfl.api.model.DigestAlgorithm;
import io.ocfl.api.DigestAlgorithmRegistry;
import io.ocfl.core.OcflRepositoryBuilder;
import io.ocfl.core.extension.storage.layout.config.HashedNTupleLayoutConfig;
import io.ocfl.core.path.mapper.LogicalPathMappers;
Expand Down Expand Up @@ -93,7 +94,8 @@ public OcflSessionFactoryFactoryBean(final Path ocflRoot,
final String user,
final String userUri,
final boolean disableChecksumValidation) {
this(ocflRoot, stagingDir, migrationType, user, userUri, DigestAlgorithm.sha512, disableChecksumValidation);
this(ocflRoot, stagingDir, migrationType, user, userUri,
DigestAlgorithmRegistry.sha512, disableChecksumValidation);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,8 +276,7 @@ public void processObjectVersions(final Iterable<ObjectVersionReference> version

final var datastreamHeaders = createDatastreamHeaders(dv, f6DsId, f6ObjectId,
filename, mimeType, createDate);

binaryMeta.put(f6DsId, new BinaryMeta(datastreamFilename, mimeType, dv.getLabel()));
binaryMeta.put(f6DsId, new BinaryMeta(filename, mimeType, dv.getLabel()));

if (externalHandlingMap.containsKey(dv.getDatastreamInfo().getControlGroup())) {
InputStream content = null;
Expand Down Expand Up @@ -492,7 +491,8 @@ private void updateFilenames(final Set<String> toUpdate,
final var origHeaders = session.readHeaders(id);
final var filename = filenameMap.get(id);
if (StringUtils.isNotBlank(filename)) {
final var newHeaders = ResourceHeaders.builder(origHeaders).withFilename(filename).build();
final var newHeaders = ResourceHeaders.builder(origHeaders).
withContentPath(filename).withFilename(filename).build();
session.writeHeaders(newHeaders);
}
});
Expand Down Expand Up @@ -673,6 +673,7 @@ private ResourceHeaders createDatastreamHeaders(final DatastreamVersion dv,
headers.withArchivalGroupId(f6ObjectId);
}
headers.withFilename(filename);
//headers.withContentPath(filename);
headers.withCreatedDate(Instant.parse(createDate));
headers.withLastModifiedDate(lastModified);
headers.withLastModifiedBy(user);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public class OcflObjectSessionWrapper implements OcflObjectSession {
private static final Timer deleteResourceTimer = Metrics.timer(METRIC_NAME, OPERATION, "deleteResource");
private static final Timer readHeadersTimer = Metrics.timer(METRIC_NAME, OPERATION, "readHeaders");
private static final Timer readContentTimer = Metrics.timer(METRIC_NAME, OPERATION, "readContent");
private static final Timer readRangeTimer = Metrics.timer(METRIC_NAME, OPERATION, "readRange");
private static final Timer listVersionsTimer = Metrics.timer(METRIC_NAME, OPERATION, "listVersions");
private static final Timer containsResourceTimer = Metrics.timer(METRIC_NAME, OPERATION, "containsResource");
private static final Timer commitTimer = Metrics.timer(METRIC_NAME, OPERATION, "commit");
Expand Down Expand Up @@ -111,6 +112,17 @@ public ResourceContent readContent(final String resourceId, final String version
return readContentTimer.record(() -> inner.readContent(resourceId, versionNumber));
}

@Override
public ResourceContent readRange(final String resourceId, final long start, final long end) {
return readRangeTimer.record(() -> inner.readRange(resourceId, start, end));
}

@Override
public ResourceContent readRange(final String resourceId, final String versionNumber,
final long start, final long end) {
return readRangeTimer.record(() -> inner.readRange(resourceId, versionNumber, start, end));
}

@Override
public List<OcflVersionInfo> listVersions(final String resourceId) {
return listVersionsTimer.record(() -> inner.listVersions(resourceId));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,17 @@ public ResourceContent readContent(final String resourceId, final String version
throw new UnsupportedOperationException("Not implemented");
}

@Override
public ResourceContent readRange(final String resourceId, final long start, final long end) {
throw new UnsupportedOperationException("Not implemented");
}

@Override
public ResourceContent readRange(final String resourceId, final String versionNumber,
final long start, final long end) {
throw new UnsupportedOperationException("Not implemented");
}

@Override
public List<OcflVersionInfo> listVersions(final String resourceId) {
throw new UnsupportedOperationException("Not implemented");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,8 @@ public void updateFilenameFromRelsInt() throws IOException {
final var pid = "obj2";
final var dsId1 = "ds3";

final var ds1V1 = datastreamVersion(dsId1, true, MANAGED, "application/xml", "<h1>hello</h1>", null);
final var ds1V1 = datastreamVersion(dsId1, true, true, MANAGED, "application/xml",
"<h1>hello</h1>", DS_ACTIVE, null, null);
final var relsIntV1 = datastreamVersion(RELS_INT, true, MANAGED, "application/rdf+xml",
"<rdf:RDF xmlns:fedora-model=\"info:fedora/fedora-system:def/model#\"" +
" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
Expand Down Expand Up @@ -287,18 +288,19 @@ public void filenameRemovedFromRelsInt() throws IOException {
final var pid = "obj2";
final var dsId1 = "ds3";

final var ds1V1 = datastreamVersion(dsId1, true, MANAGED, "application/xml", "<h1>hello</h1>", null);
final var relsIntV1 = datastreamVersion(RELS_INT, true, MANAGED, "application/rdf+xml",
final var ds1V1 = datastreamVersion(dsId1, true, true, MANAGED, "application/xml",
"<h1>hello</h1>", DS_ACTIVE, null, "example.xml");
final var relsIntV1 = datastreamVersion(RELS_INT, true, false, MANAGED, "application/rdf+xml",
"<rdf:RDF xmlns:fedora-model=\"info:fedora/fedora-system:def/model#\"" +
" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
"\t<rdf:Description rdf:about=\"info:fedora/obj2/ds3\">\n" +
"\t\t<fedora-model:downloadFilename>example.xml</fedora-model:downloadFilename>\n" +
"\t</rdf:Description>\n" +
"</rdf:RDF>", null);
final var relsIntV2 = datastreamVersion(RELS_INT, false, MANAGED, "application/rdf+xml",
"</rdf:RDF>", DS_ACTIVE, null, RELS_INT );
final var relsIntV2 = datastreamVersion(RELS_INT, false, false, MANAGED, "application/rdf+xml",
"<rdf:RDF xmlns:fedora-model=\"info:fedora/fedora-system:def/model#\"" +
" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
"</rdf:RDF>", null);
"</rdf:RDF>", DS_ACTIVE, null, RELS_INT );

handler.processObjectVersions(List.of(
objectVersionReference(pid, true, List.of(ds1V1)),
Expand All @@ -313,7 +315,7 @@ public void filenameRemovedFromRelsInt() throws IOException {
verifyObjectHeaders(session, ocflObjectId);

verifyBinary(contentVersionToString(session, ocflObjectId, dsId1, "v1"), ds1V1);
verifyHeaders(session, ocflObjectId, dsId1, ds1V1, "v1");
verifyHeaders(session, ocflObjectId, dsId1, ds1V1, "v1", "example.xml");
verifyDescRdf(session, ocflObjectId, dsId1, ds1V1, "v1");
verifyDescHeaders(session, ocflObjectId, dsId1, "v1");

Expand All @@ -323,7 +325,7 @@ public void filenameRemovedFromRelsInt() throws IOException {
verifyDescHeaders(session, ocflObjectId, dsId1, "v2");

verifyBinary(contentVersionToString(session, ocflObjectId, dsId1, "v3"), ds1V1);
verifyHeaders(session, ocflObjectId, dsId1, ds1V1, "v3", "ds3-label");
verifyHeaders(session, ocflObjectId, dsId1, ds1V1, "v3", "example.xml");
verifyDescRdf(session, ocflObjectId, dsId1, ds1V1, "v3");
verifyDescHeaders(session, ocflObjectId, dsId1, "v3");
}
Expand Down Expand Up @@ -364,7 +366,7 @@ public void filenameRemovedFromRelsIntAndLabelChanged() throws IOException {
verifyObjectHeaders(session, ocflObjectId);

verifyBinary(contentVersionToString(session, ocflObjectId, dsId1, "v1"), ds1V1);
verifyHeaders(session, ocflObjectId, dsId1, ds1V1, "v1", "ds3-label.xml");
verifyHeaders(session, ocflObjectId, dsId1, ds1V1, "v1", "ds3.xml");
verifyDescRdf(session, ocflObjectId, dsId1, ds1V1, "v1");
verifyDescHeaders(session, ocflObjectId, dsId1, "v1");

Expand Down Expand Up @@ -483,12 +485,12 @@ public void processObjectMultipleVersionsWithDeletedDsF6Format() throws IOExcept
final var dsId2 = "ds4";

final var ds1V1 = datastreamVersion(dsId1, true, true, MANAGED, "application/xml", "<h1>hello</h1>",
DS_INACTIVE, null, dsId1 + "-label");
DS_INACTIVE, null, dsId1);
final var ds2V1 = datastreamVersion(dsId2, true, false, MANAGED, "text/plain", "goodbye",
DS_DELETED, null, dsId2 + "-label");
DS_DELETED, null, dsId2);

final var ds2V2 = datastreamVersion(dsId2, false, true, MANAGED, "text/plain", "fedora",
DS_DELETED, null, dsId2 + "-label");
DS_DELETED, null, dsId2);

handler.processObjectVersions(List.of(
objectVersionReference(pid, true, List.of(ds1V1, ds2V1)),
Expand Down Expand Up @@ -529,12 +531,12 @@ public void processObjectMultipleVersionsAndDeleteInactiveF6Format() throws IOEx
final var dsId2 = "ds4";

final var ds1V1 = datastreamVersion(dsId1, true, true, MANAGED, "application/xml", "<h1>hello</h1>",
DS_INACTIVE, null, dsId1 + "-label");
DS_INACTIVE, null, dsId1);
final var ds2V1 = datastreamVersion(dsId2, true, false, MANAGED, "text/plain", "goodbye",
DS_DELETED, null, dsId2 + "-label");
DS_DELETED, null, dsId2);

final var ds2V2 = datastreamVersion(dsId2, false, true, MANAGED, "text/plain", "fedora",
DS_DELETED, null, dsId2 + "-label");
DS_DELETED, null, dsId2);

handler.processObjectVersions(List.of(
objectVersionReference(pid, true, List.of(ds1V1, ds2V1)),
Expand Down Expand Up @@ -717,10 +719,10 @@ public void processObjectMultipleVersionsWithDeletedDsPlainFormat() throws IOExc

final var ds1V1 = datastreamVersion(dsId1, true, MANAGED, "application/xml", "<h1>hello</h1>", null);
final var ds2V1 = datastreamVersion(dsId2, true, false, MANAGED, "text/plain", "goodbye",
DS_DELETED, null, dsId2 + "-label");
DS_DELETED, null, dsId2);

final var ds2V2 = datastreamVersion(dsId2, false, true, MANAGED, "text/plain", "fedora",
DS_DELETED, null, dsId2 + "-label");
DS_DELETED, null, dsId2);

handler.processObjectVersions(List.of(
objectVersionReference(pid, true, List.of(ds1V1, ds2V1)),
Expand Down Expand Up @@ -848,17 +850,17 @@ public void processObjectSingleVersionF6FormatWithExtensions() throws IOExceptio
verifyObjectHeaders(session, ocflObjectId);

verifyBinary(contentToString(session, ocflObjectId, dsId1), ds1);
verifyHeaders(session, ocflObjectId, dsId1, ds1, "v1", "ds1-label.txt");
verifyHeaders(session, ocflObjectId, dsId1, ds1, "v1", "ds1.txt");
verifyDescRdf(session, ocflObjectId, dsId1, ds1);
verifyDescHeaders(session, ocflObjectId, dsId1);

verifyBinary(contentToString(session, ocflObjectId, dsId2), ds2);
verifyHeaders(session, ocflObjectId, dsId2, ds2, "v1", "ds2-label.rdf");
verifyHeaders(session, ocflObjectId, dsId2, ds2, "v1", "ds2.rdf");
verifyDescRdf(session, ocflObjectId, dsId2, ds2);
verifyDescHeaders(session, ocflObjectId, dsId2);

verifyBinary(contentToString(session, ocflObjectId, dsId3), ds3);
verifyHeaders(session, ocflObjectId, dsId3, ds3, "v1", "ds3-label.jpg");
verifyHeaders(session, ocflObjectId, dsId3, ds3, "v1", "ds3.jpg");
verifyDescRdf(session, ocflObjectId, dsId3, ds3);
verifyDescHeaders(session, ocflObjectId, dsId3);
}
Expand Down Expand Up @@ -1021,7 +1023,7 @@ private void verifyHeaders(final OcflObjectSession session,
final String dsId,
final DatastreamVersion datastreamVersion,
final String versionNumber) {
verifyHeaders(session, ocflObjectId, dsId, datastreamVersion, versionNumber, dsId + "-label");
verifyHeaders(session, ocflObjectId, dsId, datastreamVersion, versionNumber, dsId);
}

private void verifyHeaders(final OcflObjectSession session,
Expand Down Expand Up @@ -1301,7 +1303,7 @@ private DatastreamVersion datastreamVersion(final String datastreamId,
final String content,
final String externalUrl) {
return datastreamVersion(datastreamId, isFirst, false, controlGroup, mimeType,
content, DS_ACTIVE, externalUrl, datastreamId + "-label");
content, DS_ACTIVE, externalUrl, datastreamId );
}

private DatastreamVersion datastreamVersion(final String datastreamId,
Expand All @@ -1312,7 +1314,7 @@ private DatastreamVersion datastreamVersion(final String datastreamId,
final String content,
final String externalUrl) {
return datastreamVersion(datastreamId, isFirst, isLast, controlGroup, mimeType,
content, DS_ACTIVE, externalUrl, datastreamId + "-label");
content, DS_ACTIVE, externalUrl, datastreamId );
}

private DatastreamVersion datastreamVersion(final String datastreamId,
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/org/fcrepo/migration/pidlist/HeadOnlyIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import io.ocfl.api.OcflRepository;
import io.ocfl.api.model.DigestAlgorithm;
import io.ocfl.api.DigestAlgorithmRegistry;
import io.ocfl.api.model.FileDetails;
import io.ocfl.api.model.ObjectDetails;
import io.ocfl.core.OcflRepositoryBuilder;
Expand Down Expand Up @@ -43,7 +44,7 @@ public class HeadOnlyIT {
private final boolean disableChecksum = false;
private final boolean disableDc = false;

private final DigestAlgorithm digestAlgorithm = DigestAlgorithm.sha512;
private final DigestAlgorithm digestAlgorithm = DigestAlgorithmRegistry.sha512;
private final MigrationType migrationType = MigrationType.FEDORA_OCFL;

private LegacyFSIDResolver idResolver;
Expand Down
Loading