fb01ce1796f21c42a967db231e98a454b97d0e46
[ccsdk/cds.git] /
1 /*
2  *  Copyright © 2019 IBM.
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  */
16
17 package org.onap.ccsdk.cds.blueprintsprocessor.message.service
18
19 import com.fasterxml.jackson.databind.JsonNode
20 import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintProperties
21 import org.onap.ccsdk.cds.blueprintsprocessor.message.KafkaBasicAuthMessageProducerProperties
22 import org.onap.ccsdk.cds.blueprintsprocessor.message.MessageLibConstants
23 import org.onap.ccsdk.cds.blueprintsprocessor.message.MessageProducerProperties
24 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintProcessorException
25 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
26 import org.springframework.stereotype.Service
27
28 @Service(MessageLibConstants.SERVICE_BLUEPRINT_MESSAGE_LIB_PROPERTY)
29 open class BluePrintMessageLibPropertyService(private var bluePrintProperties: BluePrintProperties) {
30
31     fun blueprintMessageClientService(jsonNode: JsonNode): BlueprintMessageProducerService {
32         val messageClientProperties = messageClientProperties(jsonNode)
33         return blueprintMessageClientService(messageClientProperties)
34     }
35
36     fun blueprintMessageClientService(selector: String): BlueprintMessageProducerService {
37         val prefix = "${MessageLibConstants.PROPERTY_MESSAGE_CLIENT_PREFIX}$selector"
38         val messageClientProperties = messageClientProperties(prefix)
39         return blueprintMessageClientService(messageClientProperties)
40     }
41
42     fun messageClientProperties(prefix: String): MessageProducerProperties {
43         val type = bluePrintProperties.propertyBeanType("$prefix.type", String::class.java)
44         return when (type) {
45             MessageLibConstants.TYPE_KAFKA_BASIC_AUTH -> {
46                 kafkaBasicAuthMessageClientProperties(prefix)
47             }
48             else -> {
49                 throw BluePrintProcessorException("Message adaptor($type) is not supported")
50             }
51         }
52     }
53
54     fun messageClientProperties(jsonNode: JsonNode): MessageProducerProperties {
55         val type = jsonNode.get("type").textValue()
56         return when (type) {
57             MessageLibConstants.TYPE_KAFKA_BASIC_AUTH -> {
58                 JacksonUtils.readValue(jsonNode, KafkaBasicAuthMessageProducerProperties::class.java)!!
59             }
60             else -> {
61                 throw BluePrintProcessorException("Message adaptor($type) is not supported")
62             }
63         }
64     }
65
66     private fun blueprintMessageClientService(MessageProducerProperties: MessageProducerProperties)
67             : BlueprintMessageProducerService {
68
69         when (MessageProducerProperties) {
70             is KafkaBasicAuthMessageProducerProperties -> {
71                 return KafkaBasicAuthMessageProducerService(MessageProducerProperties)
72             }
73             else -> {
74                 throw BluePrintProcessorException("couldn't get Message client service for")
75             }
76         }
77     }
78
79     private fun kafkaBasicAuthMessageClientProperties(prefix: String): KafkaBasicAuthMessageProducerProperties {
80         return bluePrintProperties.propertyBeanType(
81                 prefix, KafkaBasicAuthMessageProducerProperties::class.java)
82     }
83
84 }