1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.forgerock.api.models;
17
18 import static org.forgerock.json.JsonValue.array;
19 import static org.forgerock.json.JsonValue.json;
20 import static org.forgerock.json.JsonValue.object;
21
22 import org.forgerock.json.JsonValue;
23 import org.forgerock.util.Function;
24 import org.forgerock.util.i18n.LocalizableString;
25 import org.forgerock.util.promise.NeverThrowsException;
26
27
28
29
30
31 public class TranslateJsonSchema implements Function<JsonValue, JsonValue, NeverThrowsException> {
32
33 private final ClassLoader loader;
34
35
36
37
38
39 public TranslateJsonSchema(ClassLoader loader) {
40 this.loader = loader;
41 }
42
43
44
45
46
47
48
49
50 @Override
51 public JsonValue apply(JsonValue value) {
52 JsonValue returnValue = value;
53 if (value.isCollection()) {
54 JsonValue transformedValue = json(array());
55 for (JsonValue item : value) {
56 transformedValue.add(item.as(this).getObject());
57 }
58 returnValue = transformedValue;
59 } else if (value.isMap()) {
60 JsonValue transformedValue = json(object());
61 for (String key : value.keys()) {
62 transformedValue.put(key, value.get(key).as(this).getObject());
63 }
64 returnValue = transformedValue;
65 } else if (value.isString() && value.asString().startsWith(LocalizableString.TRANSLATION_KEY_PREFIX)) {
66 returnValue = json(new LocalizableString(value.asString(), loader));
67 }
68 return returnValue;
69 }
70 }