public void service()

in src/main/java/org/apache/sling/installer/core/impl/console/OsgiInstallerWebConsolePlugin.java [136:283]


    public void service(final ServletRequest req, final ServletResponse res)
            throws IOException {
        StringWriter bufferedWriter = new StringWriter();
        final PrintWriter bufferedPw = new PrintWriter(bufferedWriter);

        PrintWriter pw = res.getWriter();
        final InstallationState state = this.installer.getInstallationState();
        pw.print("<p class='statline ui-state-highlight'>Apache Sling OSGi Installer");
        if ( state.getActiveResources().size() == 0 && state.getInstalledResources().size() == 0 && state.getUntransformedResources().size() == 0 ) {
            pw.print(" - no resources registered.");
        }
        
        pw.print("</p>");
        pw.println("<ul class=list>");
        pw.println("<li>Active Resources");
        pw.println("<ul>");
        
        String rt = null;
        for (final ResourceGroup group : state.getActiveResources()) {
            final Resource toActivate = group.getResources().get(0);
            if ( !toActivate.getType().equals(rt) ) {
                if ( rt != null ) {
                    bufferedPw.println("</tbody></table>");
                }
                String anchor = "active-" + escapeXml(getType(toActivate));
                pw.println("<li><a href='#" + anchor + "'>" + escapeXml(getType(toActivate)) + "</a></li>");
                bufferedPw.println("<div id='" + anchor + "' class='ui-widget-header ui-corner-top buttonGroup' style='height: 15px;'>");
                bufferedPw.printf("<span style='float: left; margin-left: 1em;'>Active Resources - %s</span>", getType(toActivate));
                bufferedPw.println("</div>");
                bufferedPw.println("<table class='nicetable'><tbody>");
                bufferedPw.printf("<tr><th>Entity ID</th><th>Digest/Priority</th><th>URL (Version)</th><th>State</th><th>Error</th></tr>");
                rt = toActivate.getType();
            }
            bufferedPw.printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
                    escapeXml(getEntityId(toActivate, group.getAlias())),
                    escapeXml(getInfo(toActivate)),
                    escapeXml(getURL(toActivate)),
                    escapeXml(toActivate.getState().toString()),
                    escapeXml(getError(toActivate)));
        }
        if ( rt != null ) {
            bufferedPw.println("</tbody></table>");
        } else {
            pw.println("<li>none</li>");
        }
        rt = null;

        pw.println("</ul></li>");
        pw.println("<li>Processed Resources");
        pw.println("<ul>");
        
        for(final ResourceGroup group : state.getInstalledResources()) {
            final Collection<Resource> resources = group.getResources();
            if (resources.size() > 0) {
                final Iterator<Resource> iter = resources.iterator();
                final Resource first = iter.next();
                if ( !first.getType().equals(rt) ) {
                    if ( rt != null ) {
                        bufferedPw.println("</tbody></table>");
                    }
                    String anchor = "processed-" + escapeXml(getType(first));
                    pw.println("<li><a href='#" + anchor + "'>" + escapeXml(getType(first)) + "</a></li>");
                    
                    bufferedPw.println("<div id='" + anchor + "' class='ui-widget-header ui-corner-top buttonGroup' style='height: 15px;'>");
                    bufferedPw.printf("<span style='float: left; margin-left: 1em;'>Processed Resources - %s</span>", getType(first));
                    bufferedPw.println("</div>");
                    bufferedPw.println("<table class='nicetable'><tbody>");
                    bufferedPw.printf("<tr><th>Entity ID</th><th>Digest/Priority</th><th>URL (Version)</th><th>State</th><th>Error</th></tr>");
                    rt = first.getType();
                }
                bufferedPw.print("<tr><td>");
                bufferedPw.print(escapeXml(getEntityId(first, group.getAlias())));
                bufferedPw.print("</td><td>");
                bufferedPw.print(escapeXml(getInfo(first)));
                bufferedPw.print("</td><td>");
                bufferedPw.print(escapeXml(getURL(first)));
                bufferedPw.print("</td><td>");
                bufferedPw.print(escapeXml(getState(first)));
                if ( first.getState() == ResourceState.INSTALLED ) {
                    final long lastChange = first.getLastChange();
                    if ( lastChange > 0 ) {
                        bufferedPw.print("<br/>");
                        bufferedPw.print(formatDate(lastChange));
                    }
                }
                bufferedPw.print("</td><td>");
                bufferedPw.print(escapeXml(getError(first)));
                bufferedPw.print("</td></tr>");
                if ( first.getAttribute(TaskResource.ATTR_INSTALL_EXCLUDED) != null ) {
                    bufferedPw.printf("<tr><td></td><td colspan='2'>%s</td><td></td><td></td></tr>",
                            escapeXml(first.getAttribute(TaskResource.ATTR_INSTALL_EXCLUDED).toString()));
                }
                if ( first.getAttribute(TaskResource.ATTR_INSTALL_INFO) != null ) {
                    bufferedPw.printf("<tr><td></td><td colspan='2'>%s</td><td></td><td></td></tr>",
                            escapeXml(first.getAttribute(TaskResource.ATTR_INSTALL_INFO).toString()));

                }
                while ( iter.hasNext() ) {
                    final Resource resource = iter.next();
                    bufferedPw.printf("<tr><td></td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
                            escapeXml(getInfo(resource)),
                            escapeXml(getURL(resource)),
                            escapeXml(resource.getState().toString()),
                            escapeXml(getError(resource)));
                }
            }
        }
        if ( rt != null ) {
            bufferedPw.println("</tbody></table>");
        } else {
            pw.println("<li>none</li>");
        }

        pw.println("</ul></li>");
        pw.println("<li>Untransformed Resources");
        pw.println("<ul>");

        rt = null;
        for(final RegisteredResource registeredResource : state.getUntransformedResources()) {
            if ( !registeredResource.getType().equals(rt) ) {
                if ( rt != null ) {
                    bufferedPw.println("</tbody></table>");
                }
                String anchor = "untransformed-" + escapeXml(getType(registeredResource));
                pw.println("<li><a href='#" + anchor + "'>" + escapeXml(getType(registeredResource)) + "</a></li>");
                
                bufferedPw.println("<div id='" + anchor + "' class='ui-widget-header ui-corner-top buttonGroup' style='height: 15px;'>");
                bufferedPw.printf("<span style='float: left; margin-left: 1em;'>Untransformed Resources - %s</span>", getType(registeredResource));
                bufferedPw.println("</div>");
                bufferedPw.println("<table class='nicetable'><tbody>");
                bufferedPw.printf("<tr><th>Digest/Priority</th><th>URL</th></tr>");

                rt = registeredResource.getType();
            }
            bufferedPw.printf("<tr><td>%s</td><td>%s</td></tr>",
                    escapeXml(getInfo(registeredResource)),
                    escapeXml(registeredResource.getURL()));
        }
        if ( rt != null ) {
            bufferedPw.println("</tbody></table>");
        } else {
            pw.println("<li>none</li>");
        }

        pw.println("</ul></li>");
        pw.println("</ul>");
        pw.print(bufferedWriter.toString());
    }