|
2 | 2 |
|
3 | 3 | import org.asamk.signal.manager.api.AccountCheckException; |
4 | 4 | import org.asamk.signal.manager.api.NotRegisteredException; |
| 5 | +import org.asamk.signal.manager.api.Pair; |
5 | 6 | import org.asamk.signal.manager.api.ServiceEnvironment; |
6 | 7 | import org.asamk.signal.manager.config.ServiceConfig; |
7 | 8 | import org.asamk.signal.manager.config.ServiceEnvironmentConfig; |
@@ -63,19 +64,28 @@ public Set<String> getAllLocalAccountNumbers() throws IOException { |
63 | 64 | return accountsStore.getAllNumbers(); |
64 | 65 | } |
65 | 66 |
|
66 | | - public MultiAccountManager initMultiAccountManager() throws IOException { |
67 | | - final var managers = accountsStore.getAllAccounts().parallelStream().map(a -> { |
| 67 | + public MultiAccountManager initMultiAccountManager() throws IOException, AccountCheckException { |
| 68 | + final var managerPairs = accountsStore.getAllAccounts().parallelStream().map(a -> { |
68 | 69 | try { |
69 | | - return initManager(a.number(), a.path()); |
70 | | - } catch (NotRegisteredException | IOException | AccountCheckException e) { |
| 70 | + return new Pair<Manager, Throwable>(initManager(a.number(), a.path()), null); |
| 71 | + } catch (NotRegisteredException e) { |
71 | 72 | logger.warn("Ignoring {}: {} ({})", a.number(), e.getMessage(), e.getClass().getSimpleName()); |
72 | 73 | return null; |
73 | | - } catch (Throwable e) { |
| 74 | + } catch (AccountCheckException | IOException e) { |
74 | 75 | logger.error("Failed to load {}: {} ({})", a.number(), e.getMessage(), e.getClass().getSimpleName()); |
75 | | - throw e; |
| 76 | + return new Pair<Manager, Throwable>(null, e); |
76 | 77 | } |
77 | 78 | }).filter(Objects::nonNull).toList(); |
78 | 79 |
|
| 80 | + for (final var pair : managerPairs) { |
| 81 | + if (pair.second() instanceof IOException e) { |
| 82 | + throw e; |
| 83 | + } else if (pair.second() instanceof AccountCheckException e) { |
| 84 | + throw e; |
| 85 | + } |
| 86 | + } |
| 87 | + |
| 88 | + final var managers = managerPairs.stream().map(Pair::first).toList(); |
79 | 89 | return new MultiAccountManagerImpl(managers, this); |
80 | 90 | } |
81 | 91 |
|
|
0 commit comments