Merge "Change the copyright to 2018"
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / openecomp / mso / client / RestPropertiesLoader.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
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
21 package org.openecomp.mso.client;
22
23 import java.util.Iterator;
24 import java.util.ServiceLoader;
25
26 public class RestPropertiesLoader {
27
28         private final ServiceLoader<RestProperties> services;
29         private RestPropertiesLoader() {
30                 services = ServiceLoader.load(RestProperties.class);
31         }
32         
33         private static class Helper {
34                 private static final RestPropertiesLoader INSTANCE = new RestPropertiesLoader();
35         }
36         
37         public static RestPropertiesLoader getInstance() {
38                 return Helper.INSTANCE;
39         }
40         
41         public <T> T getImpl(Class<? extends RestProperties> clazz) {
42                 T result = null;
43                 Iterator<RestProperties> propertyImpls = services.iterator();
44                 RestProperties item;
45                 while (propertyImpls.hasNext()) {
46                         item = propertyImpls.next();
47                         if (clazz.isAssignableFrom(item.getClass())) {
48                                 result = (T)item;
49                                 break;
50                         }
51                 }
52                 
53                 return result;
54         }
55 }