From 05b427120d61d11aeacc0bc25867d2991bca7169 Mon Sep 17 00:00:00 2001 From: Tony Rankin Date: Tue, 16 Jun 2015 19:44:19 -0700 Subject: [PATCH 1/3] Fixing potential NPEs when updating a post object. --- .../ui/posts/EditPostSettingsFragment.java | 22 ++++++++++++------- .../android/util/WPActivityUtils.java | 9 ++++++++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java index 9ab92adb560c..5e2b4272407a 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java @@ -52,6 +52,7 @@ import org.wordpress.android.util.EditTextUtils; import org.wordpress.android.util.GeocoderUtils; import org.wordpress.android.util.JSONUtils; +import org.wordpress.android.util.WPActivityUtils; import org.wordpress.android.util.helpers.LocationHelper; import org.xmlrpc.android.ApiHelper; @@ -425,27 +426,27 @@ public void updatePostSettings() { return; } - String password = (mPasswordEditText.getText() != null) ? mPasswordEditText.getText().toString() : ""; - String pubDate = (mPubDateText.getText() != null) ? mPubDateText.getText().toString() : ""; - String excerpt = (mExcerptEditText.getText() != null) ? mExcerptEditText.getText().toString() : ""; + String password = WPActivityUtils.getNonNullString(mPasswordEditText); + String pubDate = WPActivityUtils.getNonNullString(mPubDateText); + String excerpt = WPActivityUtils.getNonNullString(mExcerptEditText); long pubDateTimestamp = 0; - if (mIsCustomPubDate && pubDate.equals(getResources().getText(R.string.immediately)) && !mPost.isLocalDraft()) { + if (mIsCustomPubDate && pubDate.equals(getText(R.string.immediately)) && !mPost.isLocalDraft()) { Date d = new Date(); pubDateTimestamp = d.getTime(); - } else if (!pubDate.equals(getResources().getText(R.string.immediately))) { + } else if (!pubDate.equals(getText(R.string.immediately))) { if (mIsCustomPubDate) pubDateTimestamp = mCustomPubDate; else if (mPost.getDate_created_gmt() > 0) pubDateTimestamp = mPost.getDate_created_gmt(); - } else if (pubDate.equals(getResources().getText(R.string.immediately)) && mPost.isLocalDraft()) { + } else if (pubDate.equals(getText(R.string.immediately)) && mPost.isLocalDraft()) { mPost.setDate_created_gmt(0); mPost.setDateCreated(0); } String tags = "", postFormat = ""; if (!mPost.isPage()) { - tags = (mTagsEditText.getText() != null) ? mTagsEditText.getText().toString() : ""; + tags = WPActivityUtils.getNonNullString(mTagsEditText); // post format if (mPostFormats != null && mPostFormatSpinner != null && @@ -454,7 +455,12 @@ else if (mPost.getDate_created_gmt() > 0) } } - String status = getPostStatusForSpinnerPosition(mStatusSpinner.getSelectedItemPosition()); + String status; + if (mStatusSpinner != null) { + status = getPostStatusForSpinnerPosition(mStatusSpinner.getSelectedItemPosition()); + } else { + status = mPost.getPostStatus(); + } // We want to flag this post as having changed statuses from draft to published so that we // properly track stats we care about for when users first publish posts. diff --git a/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java b/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java index b9922f1428dd..e24dcb553a07 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java @@ -3,6 +3,7 @@ import android.content.Context; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; +import android.widget.TextView; public class WPActivityUtils { @@ -15,4 +16,12 @@ public static Context getThemedContext(Context context) { } return context; } + + public static String getNonNullString(TextView textView) { + if (textView != null && textView.getText().length() != 0) { + return textView.getText().toString(); + } + + return ""; + } } From 7337e2940515765db849dc00a904eee6fc966733 Mon Sep 17 00:00:00 2001 From: Tony Rankin Date: Wed, 17 Jun 2015 10:57:19 -0700 Subject: [PATCH 2/3] Simplifying utility method --- .../java/org/wordpress/android/util/WPActivityUtils.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java b/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java index e24dcb553a07..20302092e6a2 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java @@ -18,10 +18,6 @@ public static Context getThemedContext(Context context) { } public static String getNonNullString(TextView textView) { - if (textView != null && textView.getText().length() != 0) { - return textView.getText().toString(); - } - - return ""; + return (textView != null) ? textView.getText().toString() : ""; } } From 0dce1a238e1a5608ebae008b0730b33d7aacf9fb Mon Sep 17 00:00:00 2001 From: Tony Rankin Date: Thu, 18 Jun 2015 14:18:18 -0700 Subject: [PATCH 3/3] Updating EditTextUtils.getText method instead of creating new one. --- .../android/ui/posts/EditPostSettingsFragment.java | 9 ++++----- .../org/wordpress/android/util/WPActivityUtils.java | 5 ----- .../java/org/wordpress/android/util/EditTextUtils.java | 10 ++++------ 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java index 5e2b4272407a..ca893f1ec856 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostSettingsFragment.java @@ -52,7 +52,6 @@ import org.wordpress.android.util.EditTextUtils; import org.wordpress.android.util.GeocoderUtils; import org.wordpress.android.util.JSONUtils; -import org.wordpress.android.util.WPActivityUtils; import org.wordpress.android.util.helpers.LocationHelper; import org.xmlrpc.android.ApiHelper; @@ -426,9 +425,9 @@ public void updatePostSettings() { return; } - String password = WPActivityUtils.getNonNullString(mPasswordEditText); - String pubDate = WPActivityUtils.getNonNullString(mPubDateText); - String excerpt = WPActivityUtils.getNonNullString(mExcerptEditText); + String password = EditTextUtils.getText(mPasswordEditText); + String pubDate = EditTextUtils.getText(mPubDateText); + String excerpt = EditTextUtils.getText(mExcerptEditText); long pubDateTimestamp = 0; if (mIsCustomPubDate && pubDate.equals(getText(R.string.immediately)) && !mPost.isLocalDraft()) { @@ -446,7 +445,7 @@ else if (mPost.getDate_created_gmt() > 0) String tags = "", postFormat = ""; if (!mPost.isPage()) { - tags = WPActivityUtils.getNonNullString(mTagsEditText); + tags = EditTextUtils.getText(mTagsEditText); // post format if (mPostFormats != null && mPostFormatSpinner != null && diff --git a/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java b/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java index 20302092e6a2..b9922f1428dd 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/util/WPActivityUtils.java @@ -3,7 +3,6 @@ import android.content.Context; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; -import android.widget.TextView; public class WPActivityUtils { @@ -16,8 +15,4 @@ public static Context getThemedContext(Context context) { } return context; } - - public static String getNonNullString(TextView textView) { - return (textView != null) ? textView.getText().toString() : ""; - } } diff --git a/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/EditTextUtils.java b/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/EditTextUtils.java index 64ee67e566a9..66a0c77fdf8f 100644 --- a/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/EditTextUtils.java +++ b/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/EditTextUtils.java @@ -4,6 +4,7 @@ import android.text.TextUtils; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; +import android.widget.TextView; /** * EditText utils @@ -14,13 +15,10 @@ private EditTextUtils() { } /** - * returns text string from passed EditText + * returns non-null text string from passed TextView */ - public static String getText(EditText edit) { - if (edit.getText() == null) { - return ""; - } - return edit.getText().toString(); + public static String getText(TextView textView) { + return (textView != null) ? textView.getText().toString() : ""; } /**