1package im.conversations.android.xmpp;
2
3import androidx.annotation.NonNull;
4import androidx.annotation.Nullable;
5import com.google.common.collect.ImmutableMap;
6import java.util.Collection;
7import java.util.Map;
8import java.util.Set;
9
10public class NodeConfiguration implements Map<String, Object> {
11
12 private static final String PERSIST_ITEMS = "pubsub#persist_items";
13 private static final String ACCESS_MODEL = "pubsub#access_model";
14 private static final String SEND_LAST_PUBLISHED_ITEM = "pubsub#send_last_published_item";
15 private static final String MAX_ITEMS = "pubsub#max_items";
16 private static final String NOTIFY_DELETE = "pubsub#notify_delete";
17 private static final String NOTIFY_RETRACT = "pubsub#notify_retract";
18
19 public static final NodeConfiguration OPEN =
20 new NodeConfiguration(
21 new ImmutableMap.Builder<String, Object>()
22 .put(PERSIST_ITEMS, Boolean.TRUE)
23 .put(ACCESS_MODEL, "open")
24 .build());
25 public static final NodeConfiguration PRESENCE =
26 new NodeConfiguration(
27 new ImmutableMap.Builder<String, Object>()
28 .put(PERSIST_ITEMS, Boolean.TRUE)
29 .put(ACCESS_MODEL, "presence")
30 .build());
31 public static final NodeConfiguration WHITELIST_MAX_ITEMS =
32 new NodeConfiguration(
33 new ImmutableMap.Builder<String, Object>()
34 .put(PERSIST_ITEMS, Boolean.TRUE)
35 .put(ACCESS_MODEL, "whitelist")
36 .put(SEND_LAST_PUBLISHED_ITEM, "never")
37 .put(MAX_ITEMS, "max")
38 .put(NOTIFY_DELETE, Boolean.TRUE)
39 .put(NOTIFY_RETRACT, Boolean.TRUE)
40 .build());
41 private final Map<String, Object> delegate;
42
43 private NodeConfiguration(Map<String, Object> map) {
44 this.delegate = map;
45 }
46
47 @Override
48 public int size() {
49 return this.delegate.size();
50 }
51
52 @Override
53 public boolean isEmpty() {
54 return this.delegate.isEmpty();
55 }
56
57 @Override
58 public boolean containsKey(@Nullable Object o) {
59 return this.delegate.containsKey(o);
60 }
61
62 @Override
63 public boolean containsValue(@Nullable Object o) {
64 return this.delegate.containsValue(o);
65 }
66
67 @Nullable
68 @Override
69 public Object get(@Nullable Object o) {
70 return this.delegate.get(o);
71 }
72
73 @Nullable
74 @Override
75 public Object put(String s, Object o) {
76 return this.delegate.put(s, o);
77 }
78
79 @Nullable
80 @Override
81 public Object remove(@Nullable Object o) {
82 return this.delegate.remove(o);
83 }
84
85 @Override
86 public void putAll(@NonNull Map<? extends String, ?> map) {
87 this.delegate.putAll(map);
88 }
89
90 @Override
91 public void clear() {
92 this.delegate.clear();
93 }
94
95 @NonNull
96 @Override
97 public Set<String> keySet() {
98 return this.delegate.keySet();
99 }
100
101 @NonNull
102 @Override
103 public Collection<Object> values() {
104 return this.delegate.values();
105 }
106
107 @NonNull
108 @Override
109 public Set<Entry<String, Object>> entrySet() {
110 return this.delegate.entrySet();
111 }
112}