1 package emissary.client.response; 2 3 import jakarta.xml.bind.annotation.XmlAccessType; 4 import jakarta.xml.bind.annotation.XmlAccessorType; 5 import jakarta.xml.bind.annotation.XmlElement; 6 import jakarta.xml.bind.annotation.XmlRootElement; 7 import org.slf4j.Logger; 8 import org.slf4j.LoggerFactory; 9 10 import java.util.HashSet; 11 import java.util.Set; 12 13 @XmlRootElement(name = "peers") 14 @XmlAccessorType(XmlAccessType.NONE) 15 public class PeersResponseEntity extends BaseResponseEntity { 16 17 private static final long serialVersionUID = 5686691885767273319L; 18 19 private static final Logger logger = LoggerFactory.getLogger(PeersResponseEntity.class); 20 21 @XmlElement(name = "local") 22 private PeerList local = new PeerList(); 23 24 @XmlElement(name = "cluster") 25 private Set<PeerList> cluster = new HashSet<>(); 26 27 public PeersResponseEntity() {} 28 29 public PeersResponseEntity(PeerList local) { 30 this.local = local; 31 } 32 33 public void addClusterPeers(PeerList pl) { 34 if (cluster == null) { 35 cluster = new HashSet<>(); 36 } 37 this.cluster.add(pl); 38 } 39 40 public PeerList getLocal() { 41 return local; 42 } 43 44 public void setLocal(PeerList local) { 45 this.local = local; 46 } 47 48 public Set<PeerList> getCluster() { 49 return cluster; 50 } 51 52 @Override 53 public void append(BaseEntity e) { 54 addErrors(e.getErrors()); 55 if (e instanceof PeersResponseEntity) { 56 PeersResponseEntity pre = this.getClass().cast(e); 57 addClusterPeers(pre.getLocal()); 58 } 59 } 60 61 @Override 62 public void dumpToConsole() { 63 getLocal().dumpToConsole(); 64 for (PeerList peer : getCluster()) { 65 if (null != peer) { 66 peer.dumpToConsole(); 67 } 68 } 69 Set<String> errors = getErrors(); 70 if (!errors.isEmpty()) { 71 StringBuilder sb = new StringBuilder("\nErrors"); 72 for (String error : errors) { 73 sb.append(error); 74 } 75 logger.error("{}", sb); 76 } 77 } 78 }