From 4adc7c1267254c1ca5d5b264b78990c4fde3d30b Mon Sep 17 00:00:00 2001 From: Pantelis Stampoulis Date: Mon, 18 Mar 2024 17:25:28 +0200 Subject: [PATCH 1/2] Fixes: NumberFormatExcpetion in BlockProcessor --- .../AudioBlockProcessor.kt | 2 +- .../BlockProcessor.java | 10 ++++++++++ .../CoverBlockProcessor.java | 3 ++- .../GalleryBlockProcessor.java | 9 ++++++++- .../ImageBlockProcessor.java | 9 +-------- .../MediaTextBlockProcessor.java | 2 +- .../VideoBlockProcessor.java | 3 +-- .../VideoPressBlockProcessor.kt | 2 +- 8 files changed, 25 insertions(+), 15 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt index 679f3a92f939..b1bb6023f775 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt @@ -23,7 +23,7 @@ class AudioBlockProcessor(localId: String?, mediaFile: MediaFile?) : BlockProces return if (id != null && !id.isJsonNull && id.asString == mLocalId) { jsonAttributes.apply { - addProperty(ID_ATTRIBUTE, Integer.parseInt(mRemoteId)) + addIdPropertySafely(this, ID_ATTRIBUTE, mRemoteId) } true } else { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java index 5a3e3a03a569..7bcf33074265 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java @@ -7,12 +7,14 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Document.OutputSettings; import org.wordpress.android.editor.Utils; +import org.wordpress.android.util.AppLog; import org.wordpress.android.util.helpers.MediaFile; import java.util.regex.Matcher; import static org.wordpress.android.ui.posts.mediauploadcompletionprocessors.MediaUploadCompletionProcessorPatterns.PATTERN_BLOCK_CAPTURES; import static org.wordpress.android.ui.posts.mediauploadcompletionprocessors.MediaUploadCompletionProcessorPatterns.PATTERN_SELF_CLOSING_BLOCK_CAPTURES; +import static org.wordpress.android.util.AppLog.T.MEDIA; /** * Abstract class to be extended for each enumerated {@link MediaBlockType}. @@ -129,6 +131,14 @@ String processBlock(String block) { return processBlock(block, false); } + final void addIdPropertySafely(JsonObject jsonAttributes, String idName, String remoteId) { + try { + jsonAttributes.addProperty(idName, Integer.parseInt(remoteId)); + } catch (NumberFormatException e) { + AppLog.e(MEDIA, e.getMessage()); + } + } + /** * All concrete implementations must implement this method for the particular block type. The document represents * the html contents of the block to be processed, and is to be mutated in place.
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java index cdb018d4961b..f792b3e695c9 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java @@ -55,7 +55,8 @@ public CoverBlockProcessor(String localId, MediaFile mediaFile, @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("id"); if (id != null && !id.isJsonNull() && id.getAsInt() == Integer.parseInt(mLocalId, 10)) { - jsonAttributes.addProperty("id", Integer.parseInt(mRemoteId, 10)); + addIdPropertySafely(jsonAttributes, "id", mRemoteId); + jsonAttributes.addProperty("url", mRemoteUrl); // check if background type is video diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/GalleryBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/GalleryBlockProcessor.java index ebfaea3cedab..ea62848a1d86 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/GalleryBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/GalleryBlockProcessor.java @@ -7,11 +7,14 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import org.wordpress.android.util.AppLog; import org.wordpress.android.util.helpers.MediaFile; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static org.wordpress.android.util.AppLog.T.MEDIA; + public class GalleryBlockProcessor extends BlockProcessor { private final MediaUploadCompletionProcessor mMediaUploadCompletionProcessor; private String mAttachmentPageUrl; @@ -93,7 +96,11 @@ public GalleryBlockProcessor(String localId, MediaFile mediaFile, String siteUrl for (int i = 0; i < ids.size(); i++) { JsonElement id = ids.get(i); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - ids.set(i, new JsonPrimitive(Integer.parseInt(mRemoteId, 10))); + try { + ids.set(i, new JsonPrimitive(Integer.parseInt(mRemoteId, 10))); + } catch (NumberFormatException e) { + AppLog.e(MEDIA, e.getMessage()); + } return true; } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java index cec2c3ea0e08..4611939b19e8 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java @@ -5,10 +5,8 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; -import org.wordpress.android.util.AppLog; import org.wordpress.android.util.helpers.MediaFile; -import static org.wordpress.android.util.AppLog.T.MEDIA; public class ImageBlockProcessor extends BlockProcessor { public ImageBlockProcessor(String localId, MediaFile mediaFile) { @@ -37,14 +35,9 @@ public ImageBlockProcessor(String localId, MediaFile mediaFile) { @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("id"); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - try { - jsonAttributes.addProperty("id", Integer.parseInt(mRemoteId)); - } catch (NumberFormatException e) { - AppLog.e(MEDIA, e.getMessage()); - } + addIdPropertySafely(jsonAttributes, "id", mRemoteId); return true; } - return false; } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java index 1683c2613e7f..576bbeb8d494 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java @@ -47,7 +47,7 @@ public MediaTextBlockProcessor(String localId, MediaFile mediaFile) { @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("mediaId"); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - jsonAttributes.addProperty("mediaId", Integer.parseInt(mRemoteId)); + addIdPropertySafely(jsonAttributes, "mediaId", mRemoteId); return true; } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java index 035cdb4a98bf..56907666e831 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java @@ -31,10 +31,9 @@ public VideoBlockProcessor(String localId, MediaFile mediaFile) { @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("id"); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - jsonAttributes.addProperty("id", Integer.parseInt(mRemoteId)); + addIdPropertySafely(jsonAttributes, "id", mRemoteId); return true; } - return false; } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt index 449055b67c96..405685b22a99 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt @@ -18,7 +18,7 @@ class VideoPressBlockProcessor( return if (id != null && !id.isJsonNull && id.asString == mLocalId) { jsonAttributes.apply { - addProperty(ID_ATTRIBUTE, Integer.parseInt(mRemoteId)) + addIdPropertySafely(this, ID_ATTRIBUTE, mRemoteId) addProperty(GUID_ATTRIBUTE, mRemoteGuid) if (src?.startsWith("file:") == true) { remove(SRC_ATTRIBUTE) From 2e17d61f735e43ac5f3e4b651e9bc6ebf81a9e17 Mon Sep 17 00:00:00 2001 From: Pantelis Stampoulis Date: Wed, 20 Mar 2024 10:52:41 +0200 Subject: [PATCH 2/2] Refactor addIdPropertySafely() Co-Authored-By: Carlos Garcia --- .../mediauploadcompletionprocessors/AudioBlockProcessor.kt | 2 +- .../posts/mediauploadcompletionprocessors/BlockProcessor.java | 4 ++-- .../mediauploadcompletionprocessors/CoverBlockProcessor.java | 2 +- .../mediauploadcompletionprocessors/ImageBlockProcessor.java | 2 +- .../MediaTextBlockProcessor.java | 2 +- .../mediauploadcompletionprocessors/VideoBlockProcessor.java | 2 +- .../VideoPressBlockProcessor.kt | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt index b1bb6023f775..8389eb1e4be7 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/AudioBlockProcessor.kt @@ -23,7 +23,7 @@ class AudioBlockProcessor(localId: String?, mediaFile: MediaFile?) : BlockProces return if (id != null && !id.isJsonNull && id.asString == mLocalId) { jsonAttributes.apply { - addIdPropertySafely(this, ID_ATTRIBUTE, mRemoteId) + addIntPropertySafely(this, ID_ATTRIBUTE, mRemoteId) } true } else { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java index 7bcf33074265..70ac05ac116c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/BlockProcessor.java @@ -131,9 +131,9 @@ String processBlock(String block) { return processBlock(block, false); } - final void addIdPropertySafely(JsonObject jsonAttributes, String idName, String remoteId) { + final void addIntPropertySafely(JsonObject jsonAttributes, String propertyName, String value) { try { - jsonAttributes.addProperty(idName, Integer.parseInt(remoteId)); + jsonAttributes.addProperty(propertyName, Integer.parseInt(value)); } catch (NumberFormatException e) { AppLog.e(MEDIA, e.getMessage()); } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java index f792b3e695c9..71163e023b82 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/CoverBlockProcessor.java @@ -55,7 +55,7 @@ public CoverBlockProcessor(String localId, MediaFile mediaFile, @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("id"); if (id != null && !id.isJsonNull() && id.getAsInt() == Integer.parseInt(mLocalId, 10)) { - addIdPropertySafely(jsonAttributes, "id", mRemoteId); + addIntPropertySafely(jsonAttributes, "id", mRemoteId); jsonAttributes.addProperty("url", mRemoteUrl); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java index 4611939b19e8..3b7de9ee0f74 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/ImageBlockProcessor.java @@ -35,7 +35,7 @@ public ImageBlockProcessor(String localId, MediaFile mediaFile) { @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("id"); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - addIdPropertySafely(jsonAttributes, "id", mRemoteId); + addIntPropertySafely(jsonAttributes, "id", mRemoteId); return true; } return false; diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java index 576bbeb8d494..f65c8500aedb 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/MediaTextBlockProcessor.java @@ -47,7 +47,7 @@ public MediaTextBlockProcessor(String localId, MediaFile mediaFile) { @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("mediaId"); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - addIdPropertySafely(jsonAttributes, "mediaId", mRemoteId); + addIntPropertySafely(jsonAttributes, "mediaId", mRemoteId); return true; } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java index 56907666e831..1f16c8141911 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoBlockProcessor.java @@ -31,7 +31,7 @@ public VideoBlockProcessor(String localId, MediaFile mediaFile) { @Override boolean processBlockJsonAttributes(JsonObject jsonAttributes) { JsonElement id = jsonAttributes.get("id"); if (id != null && !id.isJsonNull() && id.getAsString().equals(mLocalId)) { - addIdPropertySafely(jsonAttributes, "id", mRemoteId); + addIntPropertySafely(jsonAttributes, "id", mRemoteId); return true; } return false; diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt index 405685b22a99..d1044c19abb9 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/mediauploadcompletionprocessors/VideoPressBlockProcessor.kt @@ -18,7 +18,7 @@ class VideoPressBlockProcessor( return if (id != null && !id.isJsonNull && id.asString == mLocalId) { jsonAttributes.apply { - addIdPropertySafely(this, ID_ATTRIBUTE, mRemoteId) + addIntPropertySafely(this, ID_ATTRIBUTE, mRemoteId) addProperty(GUID_ATTRIBUTE, mRemoteGuid) if (src?.startsWith("file:") == true) { remove(SRC_ATTRIBUTE)