1 package com.atlassian.sal.api.page;
2
3 import com.google.common.base.Joiner;
4
5 import javax.annotation.Nonnull;
6 import javax.annotation.Nullable;
7 import java.util.Arrays;
8 import java.util.EnumSet;
9 import java.util.Objects;
10 import java.util.stream.Collectors;
11
12
13
14
15 public abstract class PageCapabilities {
16
17 public static final String SEPARATOR = ",";
18
19
20
21
22 public static EnumSet<PageCapability> empty() {
23 return EnumSet.noneOf(PageCapability.class);
24 }
25
26
27
28
29
30
31 public static EnumSet<PageCapability> valueOf(@Nullable String values) {
32 if (values == null || values.length() == 0) {
33 return empty();
34 }
35
36 return Arrays.stream(values.split(SEPARATOR))
37 .map(value -> {
38 try {
39 return PageCapability.valueOf(value);
40 } catch (IllegalArgumentException e) {
41 return null;
42 }
43 })
44 .filter(Objects::nonNull)
45 .collect(Collectors.toCollection(() -> EnumSet.noneOf(PageCapability.class)));
46 }
47
48
49
50
51
52 public static String toString(@Nonnull EnumSet<PageCapability> pageCaps) {
53 return Joiner.on(SEPARATOR).join(pageCaps.iterator());
54 }
55 }