| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.google.ipc.invalidation.external.client.types; |
| |
| /** |
| * Information about an error given to the application. |
| * |
| */ |
| public final class ErrorInfo { |
| /** |
| * Possible reasons for error in {@code InvalidationListener.informError}. The application writer |
| * must NOT assume that this is complete list since error codes may be added later. That is, for |
| * error codes that it cannot handle, it should not necessarily just crash the code. It may want |
| * to present a dialog box to the user (say). For each ErrorReason, the ErrorInfo object has a |
| * context object. We describe the type and meaning of the context for each named constant below. |
| */ |
| public static class ErrorReason { |
| /** The provided authentication/authorization token is not valid for use. */ |
| public static final int AUTH_FAILURE = 1; |
| |
| /** An unknown failure - more human-readable information is in the error message. */ |
| public static final int UNKNOWN_FAILURE = -1; |
| |
| private ErrorReason() {} // not instantiable |
| } |
| |
| /** The cause of the failure. */ |
| private final int errorReason; |
| |
| /** |
| * Is the error transient or permanent. See discussion in {@code Status.Code} for permanent and |
| * transient failure handling. |
| */ |
| private final boolean isTransient; |
| |
| /** Human-readable description of the error. */ |
| private final String errorMessage; |
| |
| /** Extra information about the error - cast to appropriate object as specified by the reason. */ |
| private final Object context; |
| |
| /** |
| * Returns a new ErrorInfo object given the reason for the error, whether it is transient or |
| * permanent, a helpful error message and extra context about the error. |
| */ |
| public static ErrorInfo newInstance(int errorReason, boolean isTransient, |
| String errorMessage, ErrorContext context) { |
| return new ErrorInfo(errorReason, isTransient, errorMessage, context); |
| } |
| |
| private ErrorInfo(int errorReason, boolean isTransient, String errorMessage, |
| ErrorContext context) { |
| this.errorReason = errorReason; |
| this.isTransient = isTransient; |
| this.errorMessage = errorMessage; |
| this.context = context; |
| } |
| |
| public boolean isTransient() { |
| return isTransient; |
| } |
| |
| public String getErrorMessage() { |
| return errorMessage; |
| } |
| |
| public int getErrorReason() { |
| return errorReason; |
| } |
| |
| public Object getContext() { |
| return context; |
| } |
| |
| @Override |
| public String toString() { |
| return "ErrorInfo: " + errorReason + ", " + isTransient + ", " + errorMessage + ", " + context; |
| } |
| } |