• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.tradefed.build;
17 
18 import java.io.File;
19 
20 /**
21  * Interface for downloading a remote file.
22  */
23 public interface IFileDownloader {
24 
25     /**
26      * Downloads a remote file to a temporary file on local disk.
27      *
28      * @param remoteFilePath the remote path to the file to download, relative to a implementation
29      * specific root.
30      * @return the temporary local downloaded {@link File}.
31      * @throws BuildRetrievalError if file could not be downloaded
32      */
downloadFile(String remoteFilePath)33     public File downloadFile(String remoteFilePath) throws BuildRetrievalError;
34 
35     /**
36      * Alternate form of {@link #downloadFile(String)}, that allows caller to specify the
37      * destination file the remote contents should be placed in.
38      *
39      * @param relativeRemotePath the remote path to the file to download, relative to an
40      *        implementation-specific root.
41      * @param destFile the file to place the downloaded contents into. Should not exist.
42      * @throws BuildRetrievalError if file could not be downloaded
43      */
downloadFile(String relativeRemotePath, File destFile)44     public void downloadFile(String relativeRemotePath, File destFile) throws BuildRetrievalError;
45 
46     /**
47      * Check local file's freshness. If local file is the same as remote file, then it's fresh. If
48      * not, local file is stale. This is mainly used for cache. The default implementation will
49      * always return true, so if the file is immutable it will never need to check freshness.
50      *
51      * @param localFile local file.
52      * @param remoteFilePath remote file path.
53      * @return True if local file is fresh, otherwise false.
54      * @throws BuildRetrievalError
55      */
isFresh(File localFile, String remoteFilePath)56     public default boolean isFresh(File localFile, String remoteFilePath)
57             throws BuildRetrievalError {
58         return true;
59     }
60 }
61