e670782588722bf19557c0f71b62b1d9e93fba28
[dcaegen2/collectors/hv-ves.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * dcaegen2-collectors-veshv
4  * ================================================================================
5  * Copyright (C) 2019 NOKIA
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.dcae.collectors.veshv.config.impl
21
22
23 import arrow.core.Option
24 import arrow.core.getOrElse
25 import arrow.core.toOption
26
27 /**
28  * @author Pawel Biniek <pawel.biniek@nokia.com>
29  * @since March 2019
30  */
31 internal class ConfigurationMerger {
32     fun merge(base: PartialConfiguration, update: PartialConfiguration): PartialConfiguration =
33             PartialConfiguration(
34                     listenPort = base.listenPort.updateToGivenOrNone(update.listenPort),
35                     idleTimeoutSec = base.idleTimeoutSec.updateToGivenOrNone(update.idleTimeoutSec),
36
37                     firstRequestDelaySec = base.firstRequestDelaySec.updateToGivenOrNone(update.firstRequestDelaySec),
38                     requestIntervalSec = base.requestIntervalSec.updateToGivenOrNone(update.requestIntervalSec),
39
40                     sslDisable = base.sslDisable.updateToGivenOrNone(update.sslDisable),
41                     keyStoreFile = base.keyStoreFile.updateToGivenOrNone(update.keyStoreFile),
42                     keyStorePasswordFile = base.keyStorePasswordFile.updateToGivenOrNone(update.keyStorePasswordFile),
43                     trustStoreFile = base.trustStoreFile.updateToGivenOrNone(update.trustStoreFile),
44                     trustStorePasswordFile = base.trustStorePasswordFile.updateToGivenOrNone(update.trustStorePasswordFile),
45
46                     streamPublishers = base.streamPublishers.updateToGivenOrNone(update.streamPublishers),
47
48                     logLevel = base.logLevel.updateToGivenOrNone(update.logLevel)
49             )
50
51     private fun <T> Option<T>.updateToGivenOrNone(update: Option<T>) =
52             update.getOrElse(this::orNull).toOption()
53 }