make/jdk/src/classes/build/tools/jigsaw/ModuleSummary.java
changeset 52993 2626982cf4f7
parent 47216 71c04702a3d5
equal deleted inserted replaced
52992:4bb6e0871bf7 52993:2626982cf4f7
     1 /*
     1 /*
     2  * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    34 import java.lang.module.ResolvedModule;
    34 import java.lang.module.ResolvedModule;
    35 import java.nio.file.Files;
    35 import java.nio.file.Files;
    36 import java.nio.file.Path;
    36 import java.nio.file.Path;
    37 import java.nio.file.Paths;
    37 import java.nio.file.Paths;
    38 import java.util.Arrays;
    38 import java.util.Arrays;
       
    39 import java.util.ArrayList;
    39 import java.util.Comparator;
    40 import java.util.Comparator;
    40 import java.util.Date;
    41 import java.util.Date;
    41 import java.util.Enumeration;
    42 import java.util.Enumeration;
    42 import java.util.HashMap;
    43 import java.util.HashMap;
    43 import java.util.HashSet;
    44 import java.util.HashSet;
       
    45 import java.util.List;
    44 import java.util.Map;
    46 import java.util.Map;
    45 import java.util.Set;
    47 import java.util.Set;
    46 import java.util.stream.Collectors;
    48 import java.util.stream.Collectors;
    47 import java.util.zip.ZipEntry;
    49 import java.util.zip.ZipEntry;
    48 import java.util.zip.ZipFile;
    50 import java.util.zip.ZipFile;
   550                         .forEach(e -> sb.append(e.source()).append("<br>").append("\n"));
   552                         .forEach(e -> sb.append(e.source()).append("<br>").append("\n"));
   551                 sb.append("</td>");
   553                 sb.append("</td>");
   552                 return sb.toString();
   554                 return sb.toString();
   553             }
   555             }
   554 
   556 
       
   557             private String providesEntry(Provides p) {
       
   558                 StringBuilder sb = new StringBuilder();
       
   559                 sb.append(String.format("provides %s<br>\n", p.service()));
       
   560                 List<String> pvs = new ArrayList<>(p.providers());
       
   561                 pvs.sort(Comparator.naturalOrder());
       
   562                 for (int i = 0; i < pvs.size(); i++) {      // My kingdom for Stream::zip ...
       
   563                     String fmt = ((i == 0)
       
   564                                   ? "&nbsp;&nbsp;&nbsp;&nbsp;with %s"
       
   565                                   : ",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %s");
       
   566                     sb.append(String.format(fmt, pvs.get(i)));
       
   567                 }
       
   568                 sb.append("\n");
       
   569                 return sb.toString();
       
   570             }
       
   571 
   555             public String servicesColumn() {
   572             public String servicesColumn() {
   556                 StringBuilder sb = new StringBuilder();
   573                 StringBuilder sb = new StringBuilder();
   557                 sb.append(String.format("  <td class=\"%s\">", CODE));
   574                 sb.append(String.format("  <td class=\"%s\">", CODE));
   558                 ms.descriptor().uses().stream()
   575                 ms.descriptor().uses().stream()
   559                         .sorted()
   576                         .sorted()
   560                         .forEach(s -> sb.append("uses ").append(s).append("<br>").append("\n"));
   577                         .forEach(s -> sb.append("uses ").append(s).append("<br>").append("\n"));
   561                 ms.descriptor().provides().stream()
   578                 ms.descriptor().provides().stream()
   562                         .sorted(Comparator.comparing(Provides::service))
   579                         .sorted(Comparator.comparing(Provides::service))
   563                         .map(p -> String.format("provides %s<br>&nbsp;&nbsp;&nbsp;&nbsp;with %s",
   580                         .map(this::providesEntry)
   564                                                 p.service(), p.providers()))
       
   565                         .forEach(p -> sb.append(p).append("<br>").append("\n"));
   581                         .forEach(p -> sb.append(p).append("<br>").append("\n"));
   566                 sb.append("</td>");
   582                 sb.append("</td>");
   567                 return sb.toString();
   583                 return sb.toString();
   568             }
   584             }
   569 
   585