|
9 | 9 | import com.grack.nanojson.JsonStringWriter; |
10 | 10 | import com.grack.nanojson.JsonWriter; |
11 | 11 |
|
12 | | -import java.util.ArrayList; |
13 | 12 | import java.util.List; |
| 13 | +import java.util.Objects; |
| 14 | +import java.util.stream.Collectors; |
14 | 15 |
|
15 | 16 | /** |
16 | 17 | * Class to get a JSON representation of a list of tabs, and the other way around. |
@@ -44,39 +45,25 @@ public static List<Tab> getTabsFromJson(@Nullable final String tabsJson) |
44 | 45 | return getDefaultTabs(); |
45 | 46 | } |
46 | 47 |
|
47 | | - final List<Tab> returnTabs = new ArrayList<>(); |
48 | | - |
49 | | - final JsonObject outerJsonObject; |
50 | 48 | try { |
51 | | - outerJsonObject = JsonParser.object().from(tabsJson); |
| 49 | + final JsonObject outerJsonObject = JsonParser.object().from(tabsJson); |
52 | 50 |
|
53 | 51 | if (!outerJsonObject.has(JSON_TABS_ARRAY_KEY)) { |
54 | 52 | throw new InvalidJsonException("JSON doesn't contain \"" + JSON_TABS_ARRAY_KEY |
55 | 53 | + "\" array"); |
56 | 54 | } |
57 | 55 |
|
58 | | - final JsonArray tabsArray = outerJsonObject.getArray(JSON_TABS_ARRAY_KEY); |
59 | | - |
60 | | - for (final Object o : tabsArray) { |
61 | | - if (!(o instanceof JsonObject)) { |
62 | | - continue; |
63 | | - } |
| 56 | + final JsonArray tabsArray = outerJsonObject.getArray(JSON_TABS_ARRAY_KEY, null); |
64 | 57 |
|
65 | | - final Tab tab = Tab.from((JsonObject) o); |
| 58 | + final var returnTabs = tabsArray.streamAsJsonObjects() |
| 59 | + .map(Tab::from) |
| 60 | + .filter(Objects::nonNull) |
| 61 | + .collect(Collectors.toUnmodifiableList()); |
66 | 62 |
|
67 | | - if (tab != null) { |
68 | | - returnTabs.add(tab); |
69 | | - } |
70 | | - } |
| 63 | + return returnTabs.isEmpty() ? getDefaultTabs() : returnTabs; |
71 | 64 | } catch (final JsonParserException e) { |
72 | 65 | throw new InvalidJsonException(e); |
73 | 66 | } |
74 | | - |
75 | | - if (returnTabs.isEmpty()) { |
76 | | - return getDefaultTabs(); |
77 | | - } |
78 | | - |
79 | | - return returnTabs; |
80 | 67 | } |
81 | 68 |
|
82 | 69 | /** |
|
0 commit comments