package io.muoncore; import lombok.Getter; import java.net.URI; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; public class ServiceDescriptor { @Getter private String identifier; @Getter private List<String> tags; private List<String> codecs; @Getter private Collection<String> capabilities; @Getter private List<InstanceDescriptor> instanceDescriptors; public ServiceDescriptor(String identifier, List<String> tags, List<String> codecs, Collection<String> capabilities, List<InstanceDescriptor> instanceDescriptors) { assert identifier != null; this.identifier = identifier; this.tags = tags; this.codecs = codecs; this.capabilities = capabilities; this.instanceDescriptors = instanceDescriptors; } public List<String> getSchemes() { return instanceDescriptors.stream() .map(InstanceDescriptor::getConnectionUrls) .flatMap(Collection::stream) .map(URI::getScheme) .collect(Collectors.toList()); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ServiceDescriptor that = (ServiceDescriptor) o; return getIdentifier().equals(that.getIdentifier()); } @Override public int hashCode() { return getIdentifier().hashCode(); } public String[] getCodecs() { return codecs.toArray(new String[0]); } }