Skip to content

Commit 512e97f

Browse files
Added Dataset.getGlobalIdForFileStorage for direct upload URLs that support legacy lowercase DOIs (#12268)
* Added Dataset.getGlobalIdForFileStorage which gives the global ID in the original casing, so it does not uppercase DOIs. It is called when generating the upload URLs for direct upload instead of using dataset.getGlobalId().asString(). The latter gave a mismatch between the complete URL and the actual object keys in object store when DOIs contained lowercase letters (which is possible when they were created before Dataverse started enforcing uppercase DOIs). * release note * Update release notes for S3 direct upload fix Clarified the issue addressed with S3 direct upload regarding PID authority and alternative identifiers. * Renamed Dataset.getGlobalIdForFileStorage() to Dataset.getGlobalIdForFileStorageAsString() to clarify that it does not return a GlobalId object --------- Co-authored-by: qqmyers <jim.myers@computer.org>
1 parent 6658f45 commit 512e97f

4 files changed

Lines changed: 7 additions & 2 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed a problem with S3 direct upload to datasets which using lower- or mixed-case PID authority/identifier in the database and to datasets using an alternative identifier for file storage.

src/main/java/edu/harvard/iq/dataverse/Dataset.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,10 @@ public String getIdentifierForFileStorage(){
662662
return retVal;
663663
}
664664

665+
public String getGlobalIdForFileStorageAsString() {
666+
return getProtocolForFileStorage() + ":" + getAuthorityForFileStorage() + "/" + getIdentifierForFileStorage();
667+
}
668+
665669
public String getNextMajorVersionString() {
666670
// Never need to get the next major version for harvested studies.
667671
if (isHarvested()) {

src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1706,7 +1706,7 @@ public void requestDirectUploadUrls() {
17061706
String storageIdentifier = null;
17071707
try {
17081708
storageIdentifier = FileUtil.getStorageIdentifierFromLocation(s3io.getStorageLocation());
1709-
urls = s3io.generateTemporaryS3UploadUrls(dataset.getGlobalId().asString(), storageIdentifier, fileSize);
1709+
urls = s3io.generateTemporaryS3UploadUrls(dataset.getGlobalIdForFileStorageAsString(), storageIdentifier, fileSize);
17101710

17111711
} catch (IOException io) {
17121712
logger.warning(io.getMessage());

src/main/java/edu/harvard/iq/dataverse/api/Datasets.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2798,7 +2798,7 @@ public Response getMPUploadUrls(@Context ContainerRequestContext crc, @PathParam
27982798
String storageIdentifier = null;
27992799
try {
28002800
storageIdentifier = FileUtil.getStorageIdentifierFromLocation(s3io.getStorageLocation());
2801-
response = s3io.generateTemporaryS3UploadUrls(dataset.getGlobalId().asString(), storageIdentifier, fileSize);
2801+
response = s3io.generateTemporaryS3UploadUrls(dataset.getGlobalIdForFileStorageAsString(), storageIdentifier, fileSize);
28022802

28032803
} catch (IOException io) {
28042804
logger.warning(io.getMessage());

0 commit comments

Comments
 (0)