Coverage Report - com.ctrip.framework.apollo.internals.AbstractConfigRepository
 
Classes in this File Line Coverage Branch Coverage Complexity
AbstractConfigRepository
79%
19/24
75%
3/4
2
 
 1  
 package com.ctrip.framework.apollo.internals;
 2  
 
 3  
 import com.google.common.collect.Lists;
 4  
 
 5  
 import com.ctrip.framework.apollo.util.ExceptionUtil;
 6  
 import com.dianping.cat.Cat;
 7  
 
 8  
 import org.slf4j.Logger;
 9  
 import org.slf4j.LoggerFactory;
 10  
 
 11  
 import java.util.List;
 12  
 import java.util.Properties;
 13  
 
 14  
 /**
 15  
  * @author Jason Song(song_s@ctrip.com)
 16  
  */
 17  28
 public abstract class AbstractConfigRepository implements ConfigRepository {
 18  1
   private static final Logger logger = LoggerFactory.getLogger(AbstractConfigRepository.class);
 19  28
   private List<RepositoryChangeListener> m_listeners = Lists.newCopyOnWriteArrayList();
 20  
 
 21  
   protected boolean trySync() {
 22  
     try {
 23  46
       sync();
 24  20
       return true;
 25  25
     } catch (Throwable ex) {
 26  25
       Cat.logError(ex);
 27  25
       logger
 28  50
           .warn("Sync config failed, will retry. Repository {}, reason: {}", this.getClass(), ExceptionUtil
 29  25
               .getDetailMessage(ex));
 30  
     }
 31  25
     return false;
 32  
   }
 33  
 
 34  
   protected abstract void sync();
 35  
 
 36  
   @Override
 37  
   public void addChangeListener(RepositoryChangeListener listener) {
 38  19
     if (!m_listeners.contains(listener)) {
 39  19
       m_listeners.add(listener);
 40  
     }
 41  19
   }
 42  
 
 43  
   @Override
 44  
   public void removeChangeListener(RepositoryChangeListener listener) {
 45  0
     m_listeners.remove(listener);
 46  0
   }
 47  
 
 48  
   protected void fireRepositoryChange(String namespace, Properties newProperties) {
 49  18
     for (RepositoryChangeListener listener : m_listeners) {
 50  
       try {
 51  7
         listener.onRepositoryChange(namespace, newProperties);
 52  0
       } catch (Throwable ex) {
 53  0
         Cat.logError(ex);
 54  0
         logger.error("Failed to invoke repository change listener {}", listener.getClass(), ex);
 55  7
       }
 56  7
     }
 57  18
   }
 58  
 }