From 154e8ecd4c58efc2db392f77d148023020f344ce Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Fri, 21 Apr 2023 00:56:39 +0000 Subject: [PATCH 01/11] First changelist description --- .../datatransfer/google/mediaModels/Photo.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java index ef2f7b9e0..f0ef82e62 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java @@ -34,6 +34,8 @@ public class Photo { @JsonProperty("apertureFNumber") private double apertureFNumber; + //first changelist + @JsonProperty("isoEquivalent") private double isoEquivalent; From 9be9ff9c00c8685f73e1cfd1d5e13479a138a7ae Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Tue, 28 Nov 2023 22:11:20 +0000 Subject: [PATCH 02/11] Fixes upload time bug. Upload time wasn't being populated --- .gitignore | 1 + .../google/mediaModels/GoogleMediaItem.java | 19 +++++++++++++++++-- .../google/mediaModels/MediaMetadata.java | 12 ++++++++++++ .../mediaModels/GoogleMediaItemTest.java | 9 ++++++--- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 4c8898d9a..1392bb9d1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.log secrets.csv +env.secrets #!distributions/demo-server/src/main/resources/ #!distributions/demo-server/src/main/resources/demo-selfsigned-keystore.jks diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java index 9410ee230..5be1e344b 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java @@ -22,11 +22,13 @@ import java.io.File; import java.io.Serializable; import java.nio.file.Files; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.Optional; import org.datatransferproject.types.common.models.photos.PhotoModel; import org.datatransferproject.types.common.models.videos.VideoModel; import org.apache.tika.Tika; +import java.time.format.DateTimeFormatter; /** Media item returned by queries to the Google Photos API. Represents what is stored by Google. */ public class GoogleMediaItem implements Serializable { @@ -35,7 +37,10 @@ public class GoogleMediaItem implements Serializable { private final static String DEFAULT_VIDEO_MIMETYPE = "video/mp4"; // If Tika cannot detect the mimetype, it returns the binary mimetype. This can be considered null private final static String DEFAULT_BINARY_MIMETYPE = "application/octet-stream"; + private final static SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + private static final DateTimeFormatter FORMATTER = + DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"); @JsonProperty("id") private String id; @@ -91,7 +96,7 @@ public static VideoModel convertToVideoModel( mediaItem.getId(), albumId.orElse(null), false /*inTempStore*/, - mediaItem.getUploadedTime()); + getUploadTime(mediaItem)); } public static PhotoModel convertToPhotoModel( @@ -107,7 +112,17 @@ public static PhotoModel convertToPhotoModel( albumId.orElse(null), false /*inTempStore*/, null /*sha1*/, - mediaItem.getUploadedTime()); + getUploadTime(mediaItem)); + } + + private static Date getUploadTime(GoogleMediaItem mediaItem) + { + Date uploadTime = null; + try { + uploadTime = FORMAT.parse(mediaItem.getMediaMetadata().getCreationTime()); + }catch (Exception e) { + } + return uploadTime; } private static String getMimeType(GoogleMediaItem mediaItem) { diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java index 99e0bc56d..8e4ec60e3 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java @@ -18,16 +18,23 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; +import java.util.Date; /** Metadata about a {@code MediaItem}. */ public class MediaMetadata implements Serializable { + @JsonProperty("creationTime") + private String creationTime; @JsonProperty("photo") private Photo photo; @JsonProperty("video") private Video video; + public String getCreationTime() + { + return creationTime; + } public Photo getPhoto() { return photo; } @@ -36,6 +43,11 @@ public Video getVideo() { return video; } + public void setCreationTime(String creationTime) + { + this.creationTime = creationTime; + } + public void setPhoto(Photo photo) { this.photo = photo; } diff --git a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java index 8efea3ca8..ebc61e6d2 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java @@ -8,7 +8,6 @@ import java.io.ObjectOutputStream; import static java.lang.String.format; import static org.junit.Assert.assertTrue; -import java.util.Date; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; @@ -47,6 +46,7 @@ public void googleMediaItem_isSerializable() { } assertTrue(serializable); } + @Test public void getMimeType_photoModel_mimeTypeFromFilename() throws Exception { GoogleMediaItem photoMediaItem = getPhotoMediaItem(); @@ -135,6 +135,8 @@ public void getMimeType_videoModel_nullMimeTypeReturnsDefault() { // Default defined in GoogleMediaItem assertEquals("video/mp4", videoModel.getMimeType()); + assertEquals("Mon Oct 02 22:33:38 UTC 2023", videoModel.getUploadedTime().toString()); + } @Test @@ -147,18 +149,19 @@ public void getMimeType_photoModel_unsupportedFileExtension() { // defaults to the mimetype that is already set, as avif is not handled. assertEquals("image/png", photoModel.getMimeType()); + assertEquals("Mon Oct 02 22:33:38 UTC 2023", photoModel.getUploadedTime().toString()); } public static GoogleMediaItem getPhotoMediaItem() { MediaMetadata photoMetadata = new MediaMetadata(); photoMetadata.setPhoto(new Photo()); + photoMetadata.setCreationTime("2023-10-02T22:33:38Z"); GoogleMediaItem photoMediaItem = new GoogleMediaItem(); photoMediaItem.setMimeType("image/png"); photoMediaItem.setDescription("Description"); photoMediaItem.setFilename("filename.png"); photoMediaItem.setBaseUrl("https://www.google.com"); - photoMediaItem.setUploadedTime(new Date()); photoMediaItem.setId("photo_id"); photoMediaItem.setMediaMetadata(photoMetadata); return photoMediaItem; @@ -167,13 +170,13 @@ public static GoogleMediaItem getPhotoMediaItem() { public static GoogleMediaItem getVideoMediaItem() { MediaMetadata videoMetadata = new MediaMetadata(); videoMetadata.setVideo(new Video()); + videoMetadata.setCreationTime("2023-10-02T22:33:38Z"); GoogleMediaItem videoMediaItem = new GoogleMediaItem(); videoMediaItem.setMimeType("video/mp4"); videoMediaItem.setDescription("Description"); videoMediaItem.setFilename("filename.mp4"); videoMediaItem.setBaseUrl("https://www.google.com"); - videoMediaItem.setUploadedTime(new Date()); videoMediaItem.setId("video_id"); videoMediaItem.setMediaMetadata(videoMetadata); return videoMediaItem; From 330465f5613bb3e8c767377b1d10ce585e766684 Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Tue, 28 Nov 2023 22:19:49 +0000 Subject: [PATCH 03/11] remove unused code --- .../datatransfer/google/mediaModels/GoogleMediaItem.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java index 5be1e344b..f346915bc 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java @@ -28,7 +28,6 @@ import org.datatransferproject.types.common.models.photos.PhotoModel; import org.datatransferproject.types.common.models.videos.VideoModel; import org.apache.tika.Tika; -import java.time.format.DateTimeFormatter; /** Media item returned by queries to the Google Photos API. Represents what is stored by Google. */ public class GoogleMediaItem implements Serializable { @@ -39,8 +38,6 @@ public class GoogleMediaItem implements Serializable { private final static String DEFAULT_BINARY_MIMETYPE = "application/octet-stream"; private final static SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); - private static final DateTimeFormatter FORMATTER = - DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"); @JsonProperty("id") private String id; From ec8d12f3b77b758bd06871af93b8ff976737fbfe Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Tue, 28 Nov 2023 23:09:56 +0000 Subject: [PATCH 04/11] remove en secrets --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1392bb9d1..4c8898d9a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ *.log secrets.csv -env.secrets #!distributions/demo-server/src/main/resources/ #!distributions/demo-server/src/main/resources/demo-selfsigned-keystore.jks From b70332debb4beae2f9f073306e302f3e00a790b3 Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Tue, 28 Nov 2023 23:11:54 +0000 Subject: [PATCH 05/11] remove useless changelist --- .../datatransfer/google/mediaModels/Photo.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java index 5abcd3084..c1b0f88fe 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/Photo.java @@ -35,8 +35,6 @@ public class Photo implements Serializable { @JsonProperty("apertureFNumber") private double apertureFNumber; - //first changelist - @JsonProperty("isoEquivalent") private double isoEquivalent; From d45000111302c9bed6a978ce88e84bbcd600ed80 Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Wed, 29 Nov 2023 00:51:10 +0000 Subject: [PATCH 06/11] adressed the comments on the changelist --- .../google/mediaModels/GoogleMediaItem.java | 9 ++++-- .../google/mediaModels/MediaMetadata.java | 1 + .../mediaModels/GoogleMediaItemTest.java | 31 ++++++++++++++++--- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java index f346915bc..b7eba4b6f 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItem.java @@ -115,11 +115,14 @@ public static PhotoModel convertToPhotoModel( private static Date getUploadTime(GoogleMediaItem mediaItem) { Date uploadTime = null; + try { - uploadTime = FORMAT.parse(mediaItem.getMediaMetadata().getCreationTime()); - }catch (Exception e) { + return FORMAT.parse(mediaItem.getMediaMetadata().getCreationTime()); + } catch (Exception e) { + // this should never be hit since creationTime field should never be null. If we reach here, + // let's look into the string format change + return null; } - return uploadTime; } private static String getMimeType(GoogleMediaItem mediaItem) { diff --git a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java index 8e4ec60e3..b48e4e49b 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/main/java/org/datatransferproject/datatransfer/google/mediaModels/MediaMetadata.java @@ -23,6 +23,7 @@ /** Metadata about a {@code MediaItem}. */ public class MediaMetadata implements Serializable { + //Time when the media item was first created (not when it was uploaded to Google Photos). @JsonProperty("creationTime") private String creationTime; @JsonProperty("photo") diff --git a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java index ebc61e6d2..16db8f197 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java @@ -1,5 +1,6 @@ package org.datatransferproject.datatransfer.google.mediaModels; +import static org.junit.Assert.assertNull; import static org.junit.jupiter.api.Assertions.assertEquals; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -135,8 +136,6 @@ public void getMimeType_videoModel_nullMimeTypeReturnsDefault() { // Default defined in GoogleMediaItem assertEquals("video/mp4", videoModel.getMimeType()); - assertEquals("Mon Oct 02 22:33:38 UTC 2023", videoModel.getUploadedTime().toString()); - } @Test @@ -149,13 +148,38 @@ public void getMimeType_photoModel_unsupportedFileExtension() { // defaults to the mimetype that is already set, as avif is not handled. assertEquals("image/png", photoModel.getMimeType()); + } + + @Test + public void getUploadTime_videoModel() { + GoogleMediaItem videoMediaItem = getVideoMediaItem(); + GoogleMediaItem photoMediaItem = getPhotoMediaItem(); + MediaMetadata metadata = new MediaMetadata(); + metadata.setVideo(new Video()); + metadata.setCreationTime("2023-10-02T22:33:38Z"); + videoMediaItem.setMediaMetadata(metadata); + + VideoModel videoModel = GoogleMediaItem.convertToVideoModel(Optional.empty(), videoMediaItem); + + assertEquals("Mon Oct 02 22:33:38 UTC 2023", videoModel.getUploadedTime().toString()); + } + + @Test + public void getUploadTime_photoModel() { + GoogleMediaItem photoMediaItem = getPhotoMediaItem(); + MediaMetadata metadata = new MediaMetadata(); + metadata.setVideo(new Video()); + metadata.setCreationTime("2023-10-02T22:33:38Z"); + photoMediaItem.setMediaMetadata(metadata); + + PhotoModel photoModel = GoogleMediaItem.convertToPhotoModel(Optional.empty(), photoMediaItem); + assertEquals("Mon Oct 02 22:33:38 UTC 2023", photoModel.getUploadedTime().toString()); } public static GoogleMediaItem getPhotoMediaItem() { MediaMetadata photoMetadata = new MediaMetadata(); photoMetadata.setPhoto(new Photo()); - photoMetadata.setCreationTime("2023-10-02T22:33:38Z"); GoogleMediaItem photoMediaItem = new GoogleMediaItem(); photoMediaItem.setMimeType("image/png"); @@ -170,7 +194,6 @@ public static GoogleMediaItem getPhotoMediaItem() { public static GoogleMediaItem getVideoMediaItem() { MediaMetadata videoMetadata = new MediaMetadata(); videoMetadata.setVideo(new Video()); - videoMetadata.setCreationTime("2023-10-02T22:33:38Z"); GoogleMediaItem videoMediaItem = new GoogleMediaItem(); videoMediaItem.setMimeType("video/mp4"); From c66c0ae25334b85bee278da17ae19db97babf2e7 Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Wed, 29 Nov 2023 01:04:35 +0000 Subject: [PATCH 07/11] fix tests --- .../datatransfer/google/mediaModels/GoogleMediaItemTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java index 16db8f197..44ab3e4f7 100644 --- a/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java +++ b/extensions/data-transfer/portability-data-transfer-google/src/test/java/org/datatransferproject/datatransfer/google/mediaModels/GoogleMediaItemTest.java @@ -153,7 +153,6 @@ public void getMimeType_photoModel_unsupportedFileExtension() { @Test public void getUploadTime_videoModel() { GoogleMediaItem videoMediaItem = getVideoMediaItem(); - GoogleMediaItem photoMediaItem = getPhotoMediaItem(); MediaMetadata metadata = new MediaMetadata(); metadata.setVideo(new Video()); metadata.setCreationTime("2023-10-02T22:33:38Z"); @@ -168,7 +167,7 @@ public void getUploadTime_videoModel() { public void getUploadTime_photoModel() { GoogleMediaItem photoMediaItem = getPhotoMediaItem(); MediaMetadata metadata = new MediaMetadata(); - metadata.setVideo(new Video()); + metadata.setPhoto(new Photo()); metadata.setCreationTime("2023-10-02T22:33:38Z"); photoMediaItem.setMediaMetadata(metadata); From 85735b297b6f5813264e54a4c18a426b97f11c20 Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Tue, 9 Jan 2024 22:28:01 +0000 Subject: [PATCH 08/11] Fix NullPointerException that was being caused by accessing null PortabilityJob object --- .../transfer/copier/PortabilityAbstractInMemoryDataCopier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java index 9709e3a3a..b691a9c76 100644 --- a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java +++ b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java @@ -126,7 +126,7 @@ protected ExportResult copyIteration( if (exportedData != null) { PortabilityJob job = jobStore.findJob(jobId); TransferMode transferMode = - job.transferMode() == null ? TransferMode.DATA_TRANSFER : job.transferMode(); + job == null ? TransferMode.DATA_TRANSFER : job.transferMode(); switch (transferMode) { case DATA_TRANSFER: importIteration(jobId, importAuthData, jobIdPrefix, copyIteration, exportedData); From 03a07ecae7275aeee4cb31c764dfeb01b7b71dfc Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Thu, 11 Jan 2024 00:10:07 +0000 Subject: [PATCH 09/11] Fail transfer instantly if a job cannot be fetched --- .../transfer/copier/PortabilityAbstractInMemoryDataCopier.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java index b691a9c76..2d8e078df 100644 --- a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java +++ b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java @@ -16,6 +16,7 @@ package org.datatransferproject.transfer.copier; import com.google.cloud.datastore.DatastoreException; +import com.google.common.base.Preconditions; import com.google.common.base.Stopwatch; import com.google.inject.Provider; import java.io.IOException; @@ -125,6 +126,8 @@ protected ExportResult copyIteration( DataModel exportedData = exportResult.getExportedData(); if (exportedData != null) { PortabilityJob job = jobStore.findJob(jobId); + Preconditions.checkNotNull(job, "Transfer cannot proceed without fetching the job. " + + "Something in very wrong so halting the transfer."); TransferMode transferMode = job == null ? TransferMode.DATA_TRANSFER : job.transferMode(); switch (transferMode) { From dfb219eda436952e7824a8f3d6ce976b01d715be Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Thu, 11 Jan 2024 00:12:42 +0000 Subject: [PATCH 10/11] Fail transfer instantly if a job cannot be fetched. Undid the old change --- .../transfer/copier/PortabilityAbstractInMemoryDataCopier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java index 2d8e078df..ec2515ef4 100644 --- a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java +++ b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java @@ -129,7 +129,7 @@ protected ExportResult copyIteration( Preconditions.checkNotNull(job, "Transfer cannot proceed without fetching the job. " + "Something in very wrong so halting the transfer."); TransferMode transferMode = - job == null ? TransferMode.DATA_TRANSFER : job.transferMode(); + job.transferMode() == null ? TransferMode.DATA_TRANSFER : job.transferMode(); switch (transferMode) { case DATA_TRANSFER: importIteration(jobId, importAuthData, jobIdPrefix, copyIteration, exportedData); From 2b68c83885123262d56384c314e80a216b5f5ea2 Mon Sep 17 00:00:00 2001 From: akshaysinghh Date: Fri, 12 Jan 2024 21:15:05 +0000 Subject: [PATCH 11/11] Added static checkNotNull and rephrased the error message to log job id --- .../copier/PortabilityAbstractInMemoryDataCopier.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java index ec2515ef4..1d3074405 100644 --- a/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java +++ b/portability-transfer/src/main/java/org/datatransferproject/transfer/copier/PortabilityAbstractInMemoryDataCopier.java @@ -16,7 +16,7 @@ package org.datatransferproject.transfer.copier; import com.google.cloud.datastore.DatastoreException; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Stopwatch; import com.google.inject.Provider; import java.io.IOException; @@ -126,8 +126,7 @@ protected ExportResult copyIteration( DataModel exportedData = exportResult.getExportedData(); if (exportedData != null) { PortabilityJob job = jobStore.findJob(jobId); - Preconditions.checkNotNull(job, "Transfer cannot proceed without fetching the job. " - + "Something in very wrong so halting the transfer."); + checkNotNull(job, "Transfer job not found from jobStore, mid-way through copy iteration, for the job ID \"%s\"", jobId.toString()); TransferMode transferMode = job.transferMode() == null ? TransferMode.DATA_TRANSFER : job.transferMode(); switch (transferMode) {