diff options
author | Brett Chabot <brettchabot@android.com> | 2011-09-29 17:08:53 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-29 17:08:53 -0700 |
commit | 58add15e93f9aa2a339ed5923538721f43f6fa3d (patch) | |
tree | 647f552798116b95b66940d58f04995f858971cd /ddms/libs | |
parent | c9192e375844e45ccb74ee69150717a31385564f (diff) | |
parent | 9b5b7c1634e16dd056b584ebb1b39ce40d9bdf60 (diff) | |
download | sdk-58add15e93f9aa2a339ed5923538721f43f6fa3d.zip sdk-58add15e93f9aa2a339ed5923538721f43f6fa3d.tar.gz sdk-58add15e93f9aa2a339ed5923538721f43f6fa3d.tar.bz2 |
Merge "Create FileListingService#getChildrenSync"
Diffstat (limited to 'ddms/libs')
-rw-r--r-- | ddms/libs/ddmlib/src/com/android/ddmlib/FileListingService.java | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/ddms/libs/ddmlib/src/com/android/ddmlib/FileListingService.java b/ddms/libs/ddmlib/src/com/android/ddmlib/FileListingService.java index 5ef5428..15a9fd2 100644 --- a/ddms/libs/ddmlib/src/com/android/ddmlib/FileListingService.java +++ b/ddms/libs/ddmlib/src/com/android/ddmlib/FileListingService.java @@ -16,6 +16,7 @@ package com.android.ddmlib; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -736,7 +737,38 @@ public final class FileListingService { return null; } + /** + * Returns the children of a {@link FileEntry}. + * <p/> + * This method is the explicit synchronous version of + * {@link #getChildren(FileEntry, boolean, IListingReceiver)}. It is roughly equivalent to + * calling + * getChildren(FileEntry, false, null) + * + * @param entry The parent entry. + * @return The list of children + * @throws TimeoutException in case of timeout on the connection when sending the command. + * @throws AdbCommandRejectedException if adb rejects the command. + * @throws ShellCommandUnresponsiveException in case the shell command doesn't send any output + * for a period longer than <var>maxTimeToOutputResponse</var>. + * @throws IOException in case of I/O error on the connection. + */ + public FileEntry[] getChildrenSync(final FileEntry entry) throws TimeoutException, + AdbCommandRejectedException, ShellCommandUnresponsiveException, IOException { + doLsAndThrow(entry); + return entry.getCachedChildren(); + } + private void doLs(FileEntry entry) { + try { + doLsAndThrow(entry); + } catch (Exception e) { + // do nothing + } + } + + private void doLsAndThrow(FileEntry entry) throws TimeoutException, + AdbCommandRejectedException, ShellCommandUnresponsiveException, IOException { // create a list that will receive the list of the entries ArrayList<FileEntry> entryList = new ArrayList<FileEntry>(); @@ -755,16 +787,14 @@ public final class FileListingService { // finish the process of the receiver to handle links receiver.finishLinks(); - } catch (Exception e) { - // catch all and do nothing. - } + } finally { + // at this point we need to refresh the viewer + entry.fetchTime = System.currentTimeMillis(); - - // at this point we need to refresh the viewer - entry.fetchTime = System.currentTimeMillis(); - - // sort the children and set them as the new children - Collections.sort(entryList, FileEntry.sEntryComparator); - entry.setChildren(entryList); + // sort the children and set them as the new children + Collections.sort(entryList, FileEntry.sEntryComparator); + entry.setChildren(entryList); + } } + } |