e0961f0760d51b7d9c07addc021ae1b03f43b903
[msb/apigateway.git] /
1 /*******************************************************************************
2  * Copyright 2016-2017 ZTE, Inc. and others.
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 package org.onap.msb.apiroute.wrapper.consulextend.cache;
17
18 import java.math.BigInteger;
19
20 import org.apache.http.HttpEntity;
21 import org.onap.msb.apiroute.wrapper.consulextend.CatalogClient;
22 import org.onap.msb.apiroute.wrapper.consulextend.async.ConsulResponseCallback;
23
24 import com.orbitz.consul.option.CatalogOptions;
25 import com.orbitz.consul.option.QueryOptions;
26
27 public class ServicesCatalogCache extends ConsulCache<HttpEntity> {
28         
29     private ServicesCatalogCache(CallbackConsumer<HttpEntity> callbackConsumer) {
30         super(callbackConsumer);
31     }
32
33     public static ServicesCatalogCache newCache(
34             final CatalogClient catalogClient,
35             final CatalogOptions catalogOptions,
36             final QueryOptions queryOptions,
37             final int watchSeconds) {
38         
39         CallbackConsumer<HttpEntity> callbackConsumer = new CallbackConsumer<HttpEntity>() {
40             @Override
41             public void consume(BigInteger index, ConsulResponseCallback<HttpEntity> callback) {
42                 QueryOptions params = watchParams(index, watchSeconds, queryOptions);
43                 catalogClient.getServices(catalogOptions, params,callback);
44             }
45         };
46
47         return new ServicesCatalogCache(callbackConsumer);
48
49     }
50     
51     public static ServicesCatalogCache newCache(final CatalogClient catalogClient) {
52         return newCache(catalogClient, CatalogOptions.BLANK, QueryOptions.BLANK, 10);
53     }
54 }