2 * Copyright © 2019 IBM.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.onap.ccsdk.cds.blueprintsprocessor.message.service
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
28 @Service(MessageLibConstants.SERVICE_BLUEPRINT_MESSAGE_LIB_PROPERTY)
29 open class BluePrintMessageLibPropertyService(private var bluePrintProperties: BluePrintProperties) {
31 fun blueprintMessageClientService(jsonNode: JsonNode): BlueprintMessageProducerService {
32 val messageClientProperties = messageClientProperties(jsonNode)
33 return blueprintMessageClientService(messageClientProperties)
36 fun blueprintMessageClientService(selector: String): BlueprintMessageProducerService {
37 val prefix = "${MessageLibConstants.PROPERTY_MESSAGE_CLIENT_PREFIX}$selector"
38 val messageClientProperties = messageClientProperties(prefix)
39 return blueprintMessageClientService(messageClientProperties)
42 fun messageClientProperties(prefix: String): MessageProducerProperties {
43 val type = bluePrintProperties.propertyBeanType("$prefix.type", String::class.java)
45 MessageLibConstants.TYPE_KAFKA_BASIC_AUTH -> {
46 kafkaBasicAuthMessageClientProperties(prefix)
49 throw BluePrintProcessorException("Message adaptor($type) is not supported")
54 fun messageClientProperties(jsonNode: JsonNode): MessageProducerProperties {
55 val type = jsonNode.get("type").textValue()
57 MessageLibConstants.TYPE_KAFKA_BASIC_AUTH -> {
58 JacksonUtils.readValue(jsonNode, KafkaBasicAuthMessageProducerProperties::class.java)!!
61 throw BluePrintProcessorException("Message adaptor($type) is not supported")
66 private fun blueprintMessageClientService(MessageProducerProperties: MessageProducerProperties)
67 : BlueprintMessageProducerService {
69 when (MessageProducerProperties) {
70 is KafkaBasicAuthMessageProducerProperties -> {
71 return KafkaBasicAuthMessageProducerService(MessageProducerProperties)
74 throw BluePrintProcessorException("couldn't get Message client service for")
79 private fun kafkaBasicAuthMessageClientProperties(prefix: String): KafkaBasicAuthMessageProducerProperties {
80 return bluePrintProperties.propertyBeanType(
81 prefix, KafkaBasicAuthMessageProducerProperties::class.java)