Issue-id: OCS-9
[msb/apigateway.git] / msb-core / apiroute / apiroute-service / src / main / java / org / openo / msb / wrapper / consul / cache / ServiceCache.java
1 /**
2  * Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved.
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.openo.msb.wrapper.consul.cache;
17
18 import java.math.BigInteger;
19 import java.util.List;
20 import java.util.Map;
21
22 import org.openo.msb.wrapper.consul.CatalogClient;
23 import org.openo.msb.wrapper.consul.async.ConsulResponseCallback;
24
25 public class ServiceCache  extends ConsulCache4Map<String, Map<String, List<String>>> {
26     private  ServiceCache( ConsulCache4Map.CallbackConsumer<Map<String, List<String>>> callbackConsumer) {
27                       super(callbackConsumer);
28                       // TODO Auto-generated constructor stub
29                   }
30                   
31                   
32                   public static ServiceCache newCache(
33                       final CatalogClient catalogClient,
34                       final int watchSeconds){
35                    
36                      
37                      final CallbackConsumer<Map<String, List<String>>> callbackConsumer = new CallbackConsumer<Map<String, List<String>>>() {
38                          @Override
39                          public void consume(BigInteger index, ConsulResponseCallback<Map<String, List<String>>> callback) {
40                              catalogClient.getService(watchParams(index, watchSeconds),callback);
41                          }
42                      };
43                      
44                       
45                      return new ServiceCache(callbackConsumer);
46                       
47                       
48                   }
49 }