diff --git a/mobile/com.sap.sailing.android.shared/res/values/strings.xml b/mobile/com.sap.sailing.android.shared/res/values/strings.xml index 36f425926e8..31727b149bd 100644 --- a/mobile/com.sap.sailing.android.shared/res/values/strings.xml +++ b/mobile/com.sap.sailing.android.shared/res/values/strings.xml @@ -59,4 +59,10 @@ EULA Licence Information + + (Request %1$d) %2$s\nHTTP response code: %3$d.\nHTTP response body: %4$s. + (Request %d) HTTP request executed. + (Request %d) HTTP request aborted. + (Request %d) HTTP request failed. + \ No newline at end of file diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java index 22d8255aa03..9829cce07e1 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/HttpRequest.java @@ -94,26 +94,27 @@ public abstract class HttpRequest { try { responseInputStream = doRequest(connection); } catch (FileNotFoundException fnfe) { + if (HttpURLConnection.HTTP_UNAUTHORIZED == connection.getResponseCode()) { + throw new UnauthorizedException(); + } // 404 errors... - throw new FileNotFoundException(String.format( - "(Request %d) %s\nHTTP response code: %d.\nHTTP response body: %s.", this.hashCode(), - fnfe.getMessage(), connection.getResponseCode(), connection.getResponseMessage())); + throw new FileNotFoundException(context.getString(R.string.http_request_exception, this.hashCode(), fnfe.getMessage(), connection.getResponseCode(), connection.getResponseMessage())); } validateHttpResponseCode(connection); InputStream copiedResponseInputStream = readAndCopyResponse(connection, responseInputStream); - + if (copiedResponseInputStream != null) { - ExLog.i(context, TAG, String.format("(Request %d) HTTP request executed.", this.hashCode())); + ExLog.i(context, TAG, context.getString(R.string.http_request_executed, this.hashCode())); } else { - ExLog.i(context, TAG, String.format("(Request %d) HTTP request aborted.", this.hashCode())); + ExLog.i(context, TAG, context.getString(R.string.http_request_aborted, this.hashCode())); } - + connection.disconnect(); return copiedResponseInputStream; } catch (IOException e) { - ExLog.i(context, TAG, String.format("(Request %d) HTTP request failed.", this.hashCode())); + ExLog.i(context, TAG, context.getString(R.string.http_request_failed, this.hashCode())); throw e; } finally { safeClose(responseInputStream); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/UnauthorizedException.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/UnauthorizedException.java new file mode 100644 index 00000000000..aa44e7dc729 --- /dev/null +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/http/UnauthorizedException.java @@ -0,0 +1,10 @@ +package com.sap.sailing.android.shared.data.http; + +import java.io.IOException; + +/** + * Used for HTTP-Request ResponseCode 401 + */ +public class UnauthorizedException extends IOException { + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml b/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml index a5052b5b831..8506c5ad3be 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/values-de/strings.xml @@ -465,5 +465,6 @@ Select Race Getting Started http://www.sapsailing.com/gwt/Home.html?locale=de#SolutionsPlace:navigationTab=RaceCommitteeApp + Request fehlgeschlagen. User ist nicht autorisiert. \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml b/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml index f17e4036d2f..6c2e499a2a0 100644 --- a/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml +++ b/mobile/com.sap.sailing.racecommittee.app/res/values/strings.xml @@ -492,5 +492,6 @@ Select Race Getting Started http://www.sapsailing.com/gwt/Home.html?locale=en#SolutionsPlace:navigationTab=RaceCommitteeApp + Request failed. User is unauthorized. \ No newline at end of file diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/LoadFailedDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/LoadFailedDialog.java index 38f069c20ac..790af887571 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/LoadFailedDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/LoadFailedDialog.java @@ -31,10 +31,7 @@ public class LoadFailedDialog extends FragmentAttachedDialogFragment { @Override protected AlertDialog.Builder createDialog(AlertDialog.Builder builder) { return builder - .setMessage(String.format( - getString(R.string.generic_load_failure), - getArguments().getString(ARGS_ERROR_MSG))) - .setTitle(getString(R.string.loading_failure)) - .setIcon(R.drawable.ic_warning_grey_600_36dp); + .setMessage(getString(R.string.generic_load_failure, getArguments().getString(ARGS_ERROR_MSG))) + .setTitle(getString(R.string.loading_failure)); } } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/lists/NamedListFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/lists/NamedListFragment.java index a78cceb444a..084012b9d55 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/lists/NamedListFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/lists/NamedListFragment.java @@ -11,12 +11,14 @@ import android.app.Activity; import android.app.FragmentManager; import android.app.LoaderManager.LoaderCallbacks; import android.os.Bundle; +import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; +import com.sap.sailing.android.shared.data.http.UnauthorizedException; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.data.OnlineDataManager; @@ -101,11 +103,19 @@ public abstract class NamedListFragment extends LoggableListFra showProgressBar(false); - String message = reason.getMessage(); - if (message == null) { - message = reason.toString(); + if (reason instanceof UnauthorizedException) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog); + builder.setTitle(R.string.loading_failure); + builder.setPositiveButton(android.R.string.ok, null); + builder.setMessage(getActivity().getString(R.string.user_unauthorized)); + builder.show(); + } else { + String message = reason.getMessage(); + if (message == null) { + message = reason.toString(); + } + showLoadFailedDialog(message); } - showLoadFailedDialog(message); } @Override