pvs = new ArrayList<>(p.providers());
+ pvs.sort(Comparator.naturalOrder());
+ for (int i = 0; i < pvs.size(); i++) { // My kingdom for Stream::zip ...
+ String fmt = ((i == 0)
+ ? " with %s"
+ : ",
%s");
+ sb.append(String.format(fmt, pvs.get(i)));
+ }
+ sb.append("\n");
+ return sb.toString();
+ }
+
public String servicesColumn() {
StringBuilder sb = new StringBuilder();
sb.append(String.format(" ", CODE));
@@ -560,8 +577,7 @@
.forEach(s -> sb.append("uses ").append(s).append(" ").append("\n"));
ms.descriptor().provides().stream()
.sorted(Comparator.comparing(Provides::service))
- .map(p -> String.format("provides %s with %s",
- p.service(), p.providers()))
+ .map(this::providesEntry)
.forEach(p -> sb.append(p).append(" ").append("\n"));
sb.append(" | ");
return sb.toString();