blob: 99d91b89584b166ce6737d9f74ecd203bd531568 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* 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.android.textclassifier.downloader;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
// TODO(licha): Consider making this a checked exception
/** Exception thrown when downloading a model. */
final class ModelDownloadException extends RuntimeException {
// Consistent with TextClassifierDownloadReported.failure_reason. [1, 8, 9] reserved
public static final int UNKNOWN_FAILURE_REASON = 0;
public static final int FAILED_TO_DOWNLOAD_SERVICE_CONN_BROKEN = 2;
public static final int FAILED_TO_DOWNLOAD_404_ERROR = 3;
public static final int FAILED_TO_DOWNLOAD_OTHER = 4;
public static final int DOWNLOADED_FILE_MISSING = 5;
public static final int FAILED_TO_PARSE_MANIFEST = 6;
public static final int FAILED_TO_VALIDATE_MODEL = 7;
/** Error code for a failed download task. */
@Retention(SOURCE)
@IntDef({
UNKNOWN_FAILURE_REASON,
FAILED_TO_DOWNLOAD_SERVICE_CONN_BROKEN,
FAILED_TO_DOWNLOAD_404_ERROR,
FAILED_TO_DOWNLOAD_OTHER,
DOWNLOADED_FILE_MISSING,
FAILED_TO_PARSE_MANIFEST,
FAILED_TO_VALIDATE_MODEL
})
public @interface ErrorCode {}
public static final int DEFAULT_DOWNLOADER_LIB_ERROR_CODE = -1;
private final int errorCode;
private final int downloaderLibErrorCode;
public ModelDownloadException(@ErrorCode int errorCode, Throwable cause) {
super(cause);
this.errorCode = errorCode;
this.downloaderLibErrorCode = DEFAULT_DOWNLOADER_LIB_ERROR_CODE;
}
public ModelDownloadException(@ErrorCode int errorCode, String message) {
super(message);
this.errorCode = errorCode;
this.downloaderLibErrorCode = DEFAULT_DOWNLOADER_LIB_ERROR_CODE;
}
public ModelDownloadException(
@ErrorCode int errorCode, int downloaderLibErrorCode, String message) {
super(message);
this.errorCode = errorCode;
this.downloaderLibErrorCode = downloaderLibErrorCode;
}
/** Returns the error code from Model Downloader itself. */
@ErrorCode
public int getErrorCode() {
return errorCode;
}
/** Returns the error code from internal HTTP stack. */
public int getDownloaderLibErrorCode() {
return downloaderLibErrorCode;
}
}