1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
   | public class QuorumStats {
      private final Provider provider;
      public interface Provider {
          String UNKNOWN_STATE = "unknown";         String LOOKING_STATE = "leaderelection";         String LEADING_STATE = "leading";         String FOLLOWING_STATE = "following";         String OBSERVING_STATE = "observing";         String[] getQuorumPeers();         String getServerState();
      }
      protected QuorumStats(Provider provider) {         this.provider = provider;     }
      public String getServerState() {         return provider.getServerState();     }
      public String[] getQuorumPeers() {         return provider.getQuorumPeers();     }
      @Override     public String toString() {         StringBuilder sb = new StringBuilder(super.toString());         String state = getServerState();         if (state.equals(Provider.LEADING_STATE)) {             sb.append("Followers:");             for (String f : getQuorumPeers()) {                 sb.append(" ").append(f);             }             sb.append("\n");         } else if (state.equals(Provider.FOLLOWING_STATE) || state.equals(Provider.OBSERVING_STATE)) {             sb.append("Leader: ");             String[] ldr = getQuorumPeers();             if (ldr.length > 0) {                 sb.append(ldr[0]);             } else {                 sb.append("not connected");             }             sb.append("\n");         }         return sb.toString();     }
  }
  |