diff options
author | rsudev <rasch@munin-soft.de> | 2015-10-03 00:35:35 +0200 |
---|---|---|
committer | rsudev <rasch@munin-soft.de> | 2015-10-03 00:35:35 +0200 |
commit | d581ff572cb28bfe79400e35105506ad977d5173 (patch) | |
tree | f00ef98818d436c4af849e771fe00d7de71a57da | |
parent | 0498e52f9a09b4499933fe107f252b9cf2b8d6d3 (diff) | |
download | cgeo-d581ff572cb28bfe79400e35105506ad977d5173.zip cgeo-d581ff572cb28bfe79400e35105506ad977d5173.tar.gz cgeo-d581ff572cb28bfe79400e35105506ad977d5173.tar.bz2 |
Fixes #5218, NPE checking credentials in preference
- make all credential methods return <EMPTY, EMPTY> instead of null
6 files changed, 16 insertions, 7 deletions
diff --git a/main/src/cgeo/geocaching/gcvote/GCVote.java b/main/src/cgeo/geocaching/gcvote/GCVote.java index 1c99367..188af88 100644 --- a/main/src/cgeo/geocaching/gcvote/GCVote.java +++ b/main/src/cgeo/geocaching/gcvote/GCVote.java @@ -46,7 +46,7 @@ public final class GCVote { public static StatusCode login() { final ImmutablePair<String, String> login = Settings.getGCVoteLogin(); - if (login == null) { + if (StringUtils.isBlank(login.left)) { Log.e("Credentials can't be retreived"); return StatusCode.NO_LOGIN_INFO_STORED; } @@ -110,7 +110,7 @@ public final class GCVote { final Parameters params = new Parameters("version", "cgeo"); final ImmutablePair<String, String> login = Settings.getGCVoteLogin(); - if (login != null) { + if (StringUtils.isNotBlank(login.left)) { params.put("userName", login.left, "password", login.right); } @@ -181,7 +181,7 @@ public final class GCVote { } final ImmutablePair<String, String> login = Settings.getGCVoteLogin(); - if (login == null) { + if (StringUtils.isBlank(login.left)) { Log.e("GCVote.setRating: cannot find credentials"); return false; } diff --git a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java index 7978d76..08babd5 100644 --- a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java @@ -9,6 +9,7 @@ import cgeo.geocaching.utils.RxUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.eclipse.jdt.annotation.NonNull; import rx.Observable; import rx.android.app.AppObservable; @@ -37,6 +38,7 @@ public abstract class AbstractCheckCredentialsPreference extends AbstractClickab return new LoginCheckClickListener(activity); } + @NonNull protected abstract ImmutablePair<String, String> getCredentials(); /** diff --git a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java index 8f7da2c..2aec35f 100644 --- a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java @@ -5,6 +5,7 @@ import cgeo.geocaching.connector.ec.ECLogin; import cgeo.geocaching.enumerations.StatusCode; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.eclipse.jdt.annotation.NonNull; import rx.Observable; @@ -23,6 +24,7 @@ public class CheckECCredentialsPreference extends AbstractCheckCredentialsPrefer } @Override + @NonNull protected ImmutablePair<String, String> getCredentials() { return Settings.getCredentials(ECConnector.getInstance()); } diff --git a/main/src/cgeo/geocaching/settings/CheckGCVoteCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGCVoteCredentialsPreference.java index eb3723e..1de03ea 100644 --- a/main/src/cgeo/geocaching/settings/CheckGCVoteCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckGCVoteCredentialsPreference.java @@ -4,13 +4,14 @@ import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.gcvote.GCVote; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.eclipse.jdt.annotation.NonNull; + +import rx.Observable; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; -import rx.Observable; - public class CheckGCVoteCredentialsPreference extends AbstractCheckCredentialsPreference { public CheckGCVoteCredentialsPreference(final Context context, final AttributeSet attrs) { @@ -22,6 +23,7 @@ public class CheckGCVoteCredentialsPreference extends AbstractCheckCredentialsPr } @Override + @NonNull protected ImmutablePair<String, String> getCredentials() { return Settings.getGCVoteLogin(); } diff --git a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java index 04f406f..316728b 100644 --- a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java @@ -4,6 +4,7 @@ import cgeo.geocaching.connector.gc.GCLogin; import cgeo.geocaching.enumerations.StatusCode; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.eclipse.jdt.annotation.NonNull; import rx.Observable; @@ -22,6 +23,7 @@ public class CheckGcCredentialsPreference extends AbstractCheckCredentialsPrefer } @Override + @NonNull protected ImmutablePair<String, String> getCredentials() { return Settings.getGcCredentials(); } diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index 6fc32cf..e186f35 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -321,6 +321,7 @@ public class Settings { * * @return a pair either with (login, password) or (empty, empty) if no valid information is stored */ + @NonNull public static ImmutablePair<String, String> getCredentials(final @NonNull ICredentials connector) { final String username = getString(connector.getUsernamePreferenceKey(), null); final String password = getString(connector.getPasswordPreferenceKey(), null); @@ -388,7 +389,7 @@ public class Settings { } public static boolean isGCVoteLogin() { - return getGCVoteLogin() != null; + return StringUtils.isNotBlank(getGCVoteLogin().left); } public static ImmutablePair<String, String> getGCVoteLogin() { @@ -396,7 +397,7 @@ public class Settings { final String password = getString(R.string.pref_pass_vote, null); if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) { - return null; + return new ImmutablePair<>(StringUtils.EMPTY, StringUtils.EMPTY); } return new ImmutablePair<>(username, password); |