diff --git a/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIDockerInterface.java b/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIDockerInterface.java index 4705f53..e9dca4a 100644 --- a/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIDockerInterface.java +++ b/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIDockerInterface.java @@ -9,13 +9,17 @@ import com.github.dockerjava.api.model.*; import com.github.dockerjava.core.DockerClientBuilder; import com.github.dockerjava.core.command.LogContainerResultCallback; +import com.github.dockerjava.httpclient5.ApacheDockerHttpClient; +import com.github.dockerjava.transport.DockerHttpClient; import com.google.common.collect.ImmutableList; import java.io.File; import java.io.IOException; +import java.net.URI; import java.nio.file.Path; import java.nio.file.Paths; import java.security.InvalidParameterException; +import java.time.Duration; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -162,22 +166,21 @@ public class DUUIDockerInterface { */ public DUUIDockerInterface() throws IOException { - // GREAT TODO!!! - //URI dockerClientURI; - //if (System.getProperty("os.name").toLowerCase().contains("windows")) { - // dockerClientURI = URI.create("npipe:////./pipe/docker_engine"); - //} else { - // dockerClientURI = URI.create("tcp://localhost:2375"); - //} - - //_docker = DockerClientBuilder.getInstance() -// .withDockerHttpClient(new ApacheDockerHttpClient.Builder() -// .dockerHost(dockerClientURI).build()).build(); - _docker = DockerClientBuilder.getInstance().build(); - + if (!System.getProperty("os.name").contains("Windows")) { + _docker = DockerClientBuilder.getInstance().build(); + } else { + // Windows + final DockerHttpClient http = new ApacheDockerHttpClient.Builder() + .connectionTimeout(Duration.ofSeconds(5)) + .responseTimeout(Duration.ofMinutes(10)) + .dockerHost(URI.create("npipe:////./pipe/docker_engine")) + // .dockerHost(URI.create("tcp://127.0.0.1:2375")) // if npipe doesn't work. + .build(); + _docker = DockerClientBuilder.getInstance() + .withDockerHttpClient(http) + .build(); -// DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder().withDockerHost("tcp://localhost:2375").build(); -// _docker = DockerClientBuilder.getInstance(config).build(); + } } /** diff --git a/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/document_handler/DUUIDropboxDocumentHandler.java b/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/document_handler/DUUIDropboxDocumentHandler.java index 919e53d..27e6cfb 100644 --- a/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/document_handler/DUUIDropboxDocumentHandler.java +++ b/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/document_handler/DUUIDropboxDocumentHandler.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.concurrent.ConcurrentLinkedQueue; import java.util.stream.Collectors; @@ -281,47 +280,31 @@ public List listDocuments(String path, String fileExtension, boole @Override public DUUIFolder getFolderStructure() { + return getFolderStructure("", "Files"); + } - DUUIFolder root = new DUUIFolder("", "Files"); + public DUUIFolder getFolderStructure(String path, String name) { - listFolderContents(root); + DUUIFolder root = new DUUIFolder(path, name); - return root; - } + ListFolderResult result = null; - /** - * Recursively traverses the dropbox directory and saves the directory - * tree in the root folder. - * - * @param root Root folder containing entire directory structure - */ - private void listFolderContents(DUUIFolder root) { try { - ListFolderResult result = client.files().listFolderBuilder(root.id) - .withRecursive(false) - .withIncludeMediaInfo(false) - .withIncludeDeleted(false) - .withIncludeHasExplicitSharedMembers(false) - .withIncludeMountedFolders(true) - .withLimit(2000L) + result = client + .files() + .listFolderBuilder(path) .start(); - do { - result.getEntries().parallelStream() - .filter(entry -> entry instanceof FolderMetadata) - .map(entry -> (FolderMetadata) entry) - .map(entry -> new DUUIFolder(entry.getPathDisplay(), entry.getName())) - .peek(root::addChild) - .forEach(this::listFolderContents); - - if (result.getHasMore()) { - result = client.files().listFolderContinue(result.getCursor()); - } else break; - - } while (true); - } catch (Exception e) { - new RuntimeException(e); + } catch (DbxException e) { + return null; } + result.getEntries().stream() + .filter(f -> f instanceof FolderMetadata) + .map(f -> getFolderStructure(((FolderMetadata) f).getId(), f.getName())) + .filter(Objects::nonNull) + .forEach(root::addChild); + + return root; } } \ No newline at end of file