From e9c74d4f90ae553035ab2edd81e336a8d205b3d2 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sun, 09 Dec 2018 15:47:48 +0000
Subject: [PATCH] ...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java | 51 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 35 insertions(+), 16 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
index 7388b2d..6185d2a 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -5,18 +5,23 @@
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.config.Definitions;
import de.micromata.borgbutler.json.JsonUtils;
-import de.micromata.borgbutler.json.borg.ArchiveInfo;
-import de.micromata.borgbutler.json.borg.RepoInfo;
-import de.micromata.borgbutler.json.borg.RepoList;
+import de.micromata.borgbutler.json.borg.*;
import org.apache.commons.exec.*;
import org.apache.commons.exec.environment.EnvironmentUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.FileWriter;
import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
+import java.util.Scanner;
public class BorgCommands {
private static Logger log = LoggerFactory.getLogger(BorgCommands.class);
@@ -64,18 +69,35 @@
return repoList;
}
- public static String list(BorgRepoConfig repoConfig, String archive) {
- String json = execute(repoConfig, "list", repoConfig.getRepo() + "::" + archive,
+ public static List<FilesystemItem> list(BorgRepoConfig repoConfig, Archive archive) {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ execute(outputStream, repoConfig, "list", repoConfig.getRepo() + "::" + archive.getArchive(),
"--json-lines");
- if (json == null) {
- return null;
+ String response = outputStream.toString(Definitions.STD_CHARSET);
+ try {
+ IOUtils.copy(new StringReader(response), new FileWriter("response.json"));
+ }catch (IOException ex) {
+
}
- // RepoList repoList = JsonUtils.fromJson(RepoList.class, json);
- // repoList.setOriginalJson(json);
- return json;
+ List<FilesystemItem> content = new ArrayList<>();
+ try (Scanner scanner = new Scanner(response)) {
+ while (scanner.hasNextLine()) {
+ String json = scanner.nextLine();
+ FilesystemItem item = JsonUtils.fromJson(FilesystemItem.class, json);
+ content.add(item);
+ }
+ }
+ return content;
}
private static String execute(BorgRepoConfig repoConfig, String command, String repoOrArchive, String... args) {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ execute(outputStream, repoConfig, command, repoOrArchive, args);
+ String json = outputStream.toString(Definitions.STD_CHARSET);
+ return json;
+ }
+
+ private static void execute(OutputStream outputStream, BorgRepoConfig repoConfig, String command, String repoOrArchive, String... args) {
CommandLine cmdLine = new CommandLine(ConfigurationHandler.getConfiguration().getBorgCommand());
cmdLine.addArgument(command);
for (String arg : args) {
@@ -86,7 +108,6 @@
//executor.setExitValue(2);
//ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);
//executor.setWatchdog(watchdog);
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ExecuteResultHandler handler = new DefaultExecuteResultHandler();
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
executor.setStreamHandler(streamHandler);
@@ -96,14 +117,12 @@
executor.execute(cmdLine, getEnvironment(repoConfig));
} catch (Exception ex) {
log.error("Error while creating environment for borg call '" + borgCall + "': " + ex.getMessage(), ex);
- String response = outputStream.toString(Definitions.STD_CHARSET);
- log.error("Response: " + response);
- return null;
+ log.error("Response: " + StringUtils.abbreviate(outputStream.toString(), 10000));
+ return;
}
- String json = outputStream.toString(Definitions.STD_CHARSET);
- return json;
}
+
private static Map<String, String> getEnvironment(BorgRepoConfig repoConfig) throws IOException {
Configuration config = ConfigurationHandler.getConfiguration();
Map<String, String> env = EnvironmentUtils.getProcEnvironment();
--
Gitblit v1.10.0