- final File dataPath,
- final SignalServiceConfiguration serviceConfiguration,
- final List<String> usernames
- ) {
- final List<Manager> managers = usernames.stream()
- .map(u -> loadManager(u, dataPath, serviceConfiguration))
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
-
- int result = command.handleCommand(ns, managers);
-
- for (Manager m : managers) {
- try {
- m.close();
- } catch (IOException e) {
- logger.warn("Cleanup failed", e);
- }
+ final File configPath,
+ final ServiceEnvironment serviceEnvironment,
+ final OutputWriter outputWriter,
+ final TrustNewIdentity trustNewIdentity
+ ) throws CommandException {
+ try (var multiAccountManager = MultiAccountManager.init(configPath,
+ serviceEnvironment,
+ BaseConfig.USER_AGENT,
+ trustNewIdentity)) {
+ command.handleCommand(ns, multiAccountManager, outputWriter);
+ }
+ }
+
+ private void handleMultiLocalCommand(
+ final MultiLocalCommand c, final DBusConnection dBusConn, final OutputWriter outputWriter
+ ) throws CommandException, DBusException {
+ final var signalControl = dBusConn.getRemoteObject(DbusConfig.getBusname(),
+ DbusConfig.getObjectPath(),
+ SignalControl.class);
+ try (final var multiAccountManager = new DbusMultiAccountManagerImpl(signalControl, dBusConn)) {
+ c.handleCommand(ns, multiAccountManager, outputWriter);
+ } catch (UnsupportedOperationException e) {
+ throw new UserErrorException("Command is not yet implemented via dbus", e);