diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorageParser.java b/app/src/main/java/io/xpipe/app/storage/DataStorageParser.java index 5e2a7ca6..14da7f95 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorageParser.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorageParser.java @@ -1,6 +1,5 @@ package io.xpipe.app.storage; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.NullNode; @@ -23,8 +22,9 @@ public class DataStorageParser { var mapper = JacksonMapper.newMapper(); try { return mapper.treeToValue(node, DataSource.class); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); + } catch (Throwable e) { + ErrorEvent.fromThrowable(e).handle(); + return null; } } @@ -33,7 +33,7 @@ public class DataStorageParser { var mapper = JacksonMapper.newMapper(); try { return mapper.treeToValue(node, DataStore.class); - } catch (JsonProcessingException e) { + } catch (Throwable e) { ErrorEvent.fromThrowable(e).handle(); return null; } diff --git a/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java b/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java index 9940d14f..24f40210 100644 --- a/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java +++ b/beacon/src/main/java/io/xpipe/beacon/BeaconServer.java @@ -3,7 +3,6 @@ package io.xpipe.beacon; import io.xpipe.beacon.exchange.StopExchange; import io.xpipe.core.impl.FileNames; import io.xpipe.core.process.OsType; -import io.xpipe.core.process.ShellDialects; import io.xpipe.core.util.XPipeDaemonMode; import io.xpipe.core.util.XPipeInstallation; @@ -25,14 +24,19 @@ public class BeaconServer { } } + private static List toProcessCommand(String toExec) { + var command = OsType.getLocal().equals(OsType.WINDOWS) ? List.of("cmd", "/c", toExec) : List.of("sh", "-c", toExec); + return command; + } + public static Process tryStartCustom() throws Exception { var custom = BeaconConfig.getCustomDaemonCommand(); if (custom != null) { - var command = ShellDialects.getPlatformDefault() - .executeCommandListWithShell(custom - + (BeaconConfig.getDaemonArguments() != null - ? " " + BeaconConfig.getDaemonArguments() - : "")); + var toExec = custom + + (BeaconConfig.getDaemonArguments() != null + ? " " + BeaconConfig.getDaemonArguments() + : ""); + var command = toProcessCommand(toExec); Process process = Runtime.getRuntime().exec(command.toArray(String[]::new)); printDaemonOutput(process, command); return process; @@ -50,7 +54,7 @@ public class BeaconServer { getDaemonDebugExecutable(installationBase), BeaconConfig.getDaemonArguments(), mode); } - var fullCommand = ShellDialects.getPlatformDefault().executeCommandListWithShell(command); + var fullCommand = toProcessCommand(command); Process process = new ProcessBuilder(fullCommand).start(); printDaemonOutput(process, fullCommand); return process;