21ca9dae78cef89baef9a64a121f3f1f8347c6b2
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 package org.onap.ccsdk.features.sdnr.wt.mountpointstateprovider.impl;
19
20 import org.onap.ccsdk.features.sdnr.wt.common.configuration.Configuration;
21 import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
22
23 /**
24  * Configuration of mountpoint-state-provider, general section<br>
25  * - dmaapEnabled : Boolean disable/enable service depending on whether DMaaP is running or not Generates default
26  * Configuration properties if none exist or exist partially Generates Publisher properties only for
27  * TransportType=HTTPNOAUTH. Other TransportTypes like HTTP, AUTH_KEY and DME2 have additional properties and are not
28  * generated by default. For a list of applicable properties for the different TranportType values, please see -
29  * https://wiki.onap.org/display/DW/Feature+configuration+requirements
30  */
31 public class GeneralConfig implements Configuration {
32
33     private static final String SECTION_MARKER = "general";
34
35     private static final String PROPERTY_KEY_ENABLED = "dmaapEnabled"; //"disabled";
36
37     public static final String PROPERTY_KEY_PUBLISHER_TRANSPORTTYPE = "TransportType";
38     private static final String DEFAULT_VALUE_PUBLISHER_TRANSPORTTYPE = "HTTPNOAUTH";
39
40     public static final String PROPERTY_KEY_PUBLISHER_HOST_PORT = "host";
41     private static final String DEFAULT_VALUE_PUBLISHER_HOST_PORT = "onap-dmaap:3904";
42
43     public static final String PROPERTY_KEY_PUBLISHER_TOPIC = "topic";
44     private static final String DEFAULT_VALUE_PUBLISHER_TOPIC = "unauthenticated.SDNR_MOUNTPOINT_STATE_INFO";
45
46     public static final String PROPERTY_KEY_PUBLISHER_CONTENTTYPE = "contenttype";
47     private static final String DEFAULT_VALUE_PUBLISHER_CONTENTTYPE = "application/json";
48
49     public static final String PROPERTY_KEY_PUBLISHER_TIMEOUT = "timeout";
50     private static final String DEFAULT_VALUE_PUBLISHER_TIMEOUT = "20000";
51
52     public static final String PROPERTY_KEY_PUBLISHER_LIMIT = "limit";
53     private static final String DEFAULT_VALUE_PUBLISHER_LIMIT = "10000";
54
55     public static final String PROPERTY_KEY_PUBLISHER_MAXBATCHSIZE = "maxBatchSize";
56     public static final String DEFAULT_VALUE_PUBLISHER_MAXBATCHSIZE = "100";
57
58     public static final String PROPERTY_KEY_PUBLISHER_MAXAGEMS = "maxAgeMs";
59     public static final String DEFAULT_VALUE_PUBLISHER_MAXAGEMS = "250";
60
61     public static final String PROPERTY_KEY_PUBLISHER_MESSAGESENTTHREADOCCURANCE = "MessageSentThreadOccurance";
62     public static final String DEFAULT_VALUE_PUBLISHER_MESSAGESENTTHREADOCCURANCE = "50";
63
64     private final ConfigurationFileRepresentation configuration;
65
66     public GeneralConfig(ConfigurationFileRepresentation configuration) {
67         this.configuration = configuration;
68         this.configuration.addSection(SECTION_MARKER);
69         defaults();
70     }
71
72     public Boolean getEnabled() {
73         Boolean enabled = configuration.getPropertyBoolean(SECTION_MARKER, PROPERTY_KEY_ENABLED);
74         return enabled;
75     }
76
77     public String getHostPort() {
78         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_HOST_PORT);
79     }
80
81     public String getTransportType() {
82         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_TRANSPORTTYPE);
83     }
84
85     public String getTopic() {
86         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_TOPIC);
87     }
88
89     public String getTimeout() {
90         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_TIMEOUT);
91     }
92
93     public String getLimit() {
94         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_LIMIT);
95     }
96
97     public String getContenttype() {
98         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_CONTENTTYPE);
99     }
100
101     public String getMaxBatchSize() {
102         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_MAXBATCHSIZE);
103     }
104
105     public String getMaxAgeMs() {
106         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_MAXAGEMS);
107     }
108
109     public String getMessageSentThreadOccurrence() {
110         return configuration.getProperty(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_MESSAGESENTTHREADOCCURANCE);
111     }
112
113     @Override
114     public String getSectionName() {
115         return SECTION_MARKER;
116     }
117
118     @Override
119     public void defaults() {
120         // The default value should be "false" given that SDNR can be run in environments where DMaaP is not used
121         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_ENABLED, Boolean.FALSE);
122         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_TRANSPORTTYPE,
123                 DEFAULT_VALUE_PUBLISHER_TRANSPORTTYPE);
124         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_HOST_PORT,
125                 DEFAULT_VALUE_PUBLISHER_HOST_PORT);
126         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_TOPIC,
127                 DEFAULT_VALUE_PUBLISHER_TOPIC);
128         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_CONTENTTYPE,
129                 DEFAULT_VALUE_PUBLISHER_CONTENTTYPE);
130         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_TIMEOUT,
131                 DEFAULT_VALUE_PUBLISHER_TIMEOUT);
132         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_LIMIT,
133                 DEFAULT_VALUE_PUBLISHER_LIMIT);
134         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_MAXBATCHSIZE,
135                 DEFAULT_VALUE_PUBLISHER_MAXBATCHSIZE);
136         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_MAXAGEMS,
137                 DEFAULT_VALUE_PUBLISHER_MAXAGEMS);
138         configuration.setPropertyIfNotAvailable(SECTION_MARKER, PROPERTY_KEY_PUBLISHER_MESSAGESENTTHREADOCCURANCE,
139                 DEFAULT_VALUE_PUBLISHER_MESSAGESENTTHREADOCCURANCE);
140     }
141
142 }