e3c2a710bca0a0102457933cadaba4ef14c04158
[ccsdk/cds.git] /
1 /*\r
2  *  Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\r
4  *  Licensed under the Apache License, Version 2.0 (the "License");\r
5  *  you may not use this file except in compliance with the License.\r
6  *  You may obtain a copy of the License at\r
7  *\r
8  *      http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  *  Unless required by applicable law or agreed to in writing, software\r
11  *  distributed under the License is distributed on an "AS IS" BASIS,\r
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  *  See the License for the specific language governing permissions and\r
14  *  limitations under the License.\r
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints.core.utils\r
18 \r
19 import com.att.eelf.configuration.EELFLogger\r
20 import com.att.eelf.configuration.EELFManager\r
21 import com.fasterxml.jackson.databind.JsonNode\r
22 import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper\r
23 import reactor.core.publisher.Mono\r
24 import reactor.core.publisher.toMono\r
25 \r
26 @Deprecated("Reactor will be replaced by coroutines by default")\r
27 object JacksonReactorUtils {\r
28     private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
29 \r
30     @JvmStatic\r
31     fun getContent(fileName: String): Mono<String> {\r
32         return JacksonUtils.getContent(fileName).toMono()\r
33     }\r
34 \r
35     @JvmStatic\r
36     fun getClassPathFileContent(fileName: String): Mono<String> {\r
37         return JacksonUtils.getClassPathFileContent(fileName).toMono()\r
38     }\r
39 \r
40     @JvmStatic\r
41     fun <T> readValue(content: String, valueType: Class<T>): Mono<T> {\r
42         return Mono.just(jacksonObjectMapper().readValue(content, valueType))\r
43     }\r
44 \r
45     @JvmStatic\r
46     fun jsonNode(content: String): Mono<JsonNode> {\r
47         return Mono.just(jacksonObjectMapper().readTree(content))\r
48     }\r
49 \r
50     @JvmStatic\r
51     fun getJson(any: kotlin.Any, pretty: Boolean = false): Mono<String> {\r
52         return Mono.just(JacksonUtils.getJson(any, pretty))\r
53     }\r
54 \r
55     @JvmStatic\r
56     fun <T> getListFromJson(content: String, valueType: Class<T>): Mono<List<T>> {\r
57         val objectMapper = jacksonObjectMapper()\r
58         val javaType = objectMapper.typeFactory.constructCollectionType(List::class.java, valueType)\r
59         return objectMapper.readValue<List<T>>(content, javaType).toMono()\r
60     }\r
61 \r
62     @JvmStatic\r
63     fun <T> readValueFromFile(fileName: String, valueType: Class<T>): Mono<T> {\r
64         return getContent(fileName)\r
65                 .flatMap { content ->\r
66                     readValue(content, valueType)\r
67                 }\r
68     }\r
69 \r
70     @JvmStatic\r
71     fun <T> readValueFromClassPathFile(fileName: String, valueType: Class<T>): Mono<T> {\r
72         return getClassPathFileContent(fileName)\r
73                 .flatMap { content ->\r
74                     readValue(content, valueType)\r
75                 }\r
76     }\r
77 \r
78     @JvmStatic\r
79     fun jsonNodeFromFile(fileName: String): Mono<JsonNode> {\r
80         return getContent(fileName)\r
81                 .flatMap { content ->\r
82                     jsonNode(content)\r
83                 }\r
84     }\r
85 \r
86     @JvmStatic\r
87     fun jsonNodeFromClassPathFile(fileName: String): Mono<JsonNode> {\r
88         return getClassPathFileContent(fileName)\r
89                 .flatMap { content ->\r
90                     jsonNode(content)\r
91                 }\r
92     }\r
93 \r
94     @JvmStatic\r
95     fun <T> getListFromFile(fileName: String, valueType: Class<T>): Mono<List<T>> {\r
96         return getContent(fileName)\r
97                 .flatMap { content ->\r
98                     getListFromJson(content, valueType)\r
99                 }\r
100     }\r
101 \r
102     @JvmStatic\r
103     fun <T> getListFromClassPathFile(fileName: String, valueType: Class<T>): Mono<List<T>> {\r
104         return getClassPathFileContent(fileName)\r
105                 .flatMap { content ->\r
106                     getListFromJson(content, valueType)\r
107                 }\r
108     }\r
109 }