1 package org.onap.msb.apiroute.wrapper.consulextend.expose;
3 import java.util.ArrayList;
6 import org.onap.msb.apiroute.SyncDataManager;
7 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ImmutableService;
8 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ImmutableServiceHealth;
9 import org.onap.msb.apiroute.wrapper.consulextend.model.health.Service;
10 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ServiceHealth;
11 import org.onap.msb.apiroute.wrapper.queue.QueueManager;
12 import org.onap.msb.apiroute.wrapper.queue.ServiceData;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
16 import com.orbitz.consul.model.ConsulResponse;
17 import com.orbitz.consul.model.health.ImmutableNode;
21 public class CheckServiceDataEmptyAndAutoStopWatchFilter implements
22 WatchTask.Filter<List<ServiceHealth>> {
24 private final static Logger LOGGER = LoggerFactory
25 .getLogger(CheckServiceDataEmptyAndAutoStopWatchFilter.class);
26 private final String serviceName;
28 public CheckServiceDataEmptyAndAutoStopWatchFilter(
29 final String serviceName) {
30 this.serviceName = serviceName;
34 public boolean filter(ConsulResponse<List<ServiceHealth>> object) {
35 // TODO Auto-generated method stub
36 boolean result = check(object);
40 writeServiceToQueue4Del();
42 SyncDataManager.stopWatchService(serviceName);
49 // 1)service had been deleted
50 // 2)service Health check was not passing
51 // single service return [],size==0
52 // stop this service watching task and create delete event
53 private boolean check(ConsulResponse<List<ServiceHealth>> object) {
54 boolean result = true;
56 if (object == null || object.getResponse() == null
57 || object.getResponse().size() == 0) {
58 LOGGER.info("check service-{},its data is empty",
66 private void writeServiceToQueue4Del() {
67 ServiceData<List<ServiceHealth>> data = new ServiceData<List<ServiceHealth>>();
68 data.setDataType(ServiceData.DataType.service);
69 data.setOperate(ServiceData.Operate.delete);
71 // tell the subsequent operation the service name which will be deleted
72 Service service = ImmutableService.builder().id("").port(0).address("")
73 .service(serviceName).addTags("").createIndex(0).modifyIndex(0).build();
74 ServiceHealth serviceHealth = ImmutableServiceHealth.builder()
76 .node(ImmutableNode.builder().node("").address("").build())
78 List<ServiceHealth> serviceHealthList = new ArrayList<ServiceHealth>();
79 serviceHealthList.add(serviceHealth);
81 data.setData(serviceHealthList);
83 LOGGER.info("put delete service["
85 + "] to service queue :because of deleted ");
88 QueueManager.getInstance().putIn(data);
89 } catch (InterruptedException e) {
90 // TODO Auto-generated catch block
94 + "] to service queue interrupted because of deleted:",