private void printResolutionTestTool()

in src/main/java/org/apache/sling/caconfig/management/impl/console/ConfigurationWebConsolePlugin.java [114:258]


    private void printResolutionTestTool(HttpServletRequest request, PrintWriter pw) {
        final String path = this.getParameter(request, "path", "/content");
        String configNameOther = this.getParameter(request, "configNameOther", null);
        String configName = this.getParameter(request, "configName", null);
        if (configName == null) {
            configName = configNameOther;
        }
        else {
            configNameOther = null;
        }
        final boolean resourceCollection = BooleanUtils.toBoolean(this.getParameter(request, "resourceCollection", "false"));

        ResourceResolver resolver = null;
        try {
            Resource contentResource = null;
            if (path != null) {
                resolver = getResolver(request);
                if (resolver != null) {
                    contentResource = resolver.getResource(path);
                }
            }

            pw.println("<form method='get'>");

            tableStart(pw, "Test Configuration Resolution", 2);

            String alertMessage = null;
            if (path != null) {
                if (resolver == null) {
                    alertMessage = "Unable to access repository - please check system configuration.";
                }
                else if (contentResource == null) {
                    alertMessage = "Path does not exist.";
                }
            }
            textField(pw, "Content Path", "path", path, alertMessage);

            tableRows(pw);
            selectField(pw, "Config Name", "configName", configName, configurationManager.getConfigurationNames());

            tableRows(pw);
            textField(pw, "Other Config Name", "configNameOther", configNameOther);

            tableRows(pw);
            checkboxField(pw, "Resource collection", "resourceCollection", resourceCollection);

            tableRows(pw);
            pw.println("<td></td>");
            pw.println("<td><input type='submit' value='Resolve'/></td>");
            tableEnd(pw);

            pw.println("</form>");

            pw.println("<br/>");

            if (contentResource != null && configName != null) {

                // context paths
                Iterator<ContextResource> contextResources = contextPathStrategyMultiplexer.findContextResources(contentResource);
                tableStart(pw, "Context paths", 3);
                pw.println("<th>Context path</th>");
                pw.println("<th>Config reference</th>");
                pw.println("<th>Ranking</th>");
                while (contextResources.hasNext()) {
                    ContextResource contextResource = contextResources.next();
                    tableRows(pw);
                    pw.println("<td>" + xss.encodeForHTML(contextResource.getResource().getPath()) + "</td>");
                    pw.println("<td>" + xss.encodeForHTML(contextResource.getConfigRef()) + "</td>");
                    pw.println("<td>" + contextResource.getServiceRanking() + "</td>");
                }
                tableEnd(pw);

                pw.println("<br/>");

                // resolve configuration
                Collection<ConfigurationData> configDatas;
                if (resourceCollection) {
                    configDatas = configurationManager.getConfigurationCollection(contentResource, configName).getItems();
                }
                else {
                    ConfigurationData configData = configurationManager.getConfiguration(contentResource, configName);
                    if (configData != null) {
                        configDatas = Collections.singletonList(configData);
                    }
                    else {
                        configDatas = Collections.emptyList();
                    }
                }

                tableStart(pw, "Result", 6);

                if (configDatas.size() == 0) {
                    pw.println("<td colspan='6'>");
                    alertDiv(pw, "No matching item found.");
                    pw.println("<br/>&nbsp;</td>");
                }
                else {

                    pw.println("<th>Property</th>");
                    pw.println("<th>Effective Value</th>");
                    pw.println("<th>Value</th>");
                    pw.println("<th>Default</th>");
                    pw.println("<th>Inherited</th>");
                    pw.println("<th>Overwritten</th>");

                    for (ConfigurationData data : configDatas) {
                        tableRows(pw);
                        pw.println("<td colspan='6' style='background-color:#f3f3f3'>");
                        pw.print("Path: " + xss.encodeForHTML(data.getResourcePath()));
                        pw.println("</td>");

                        for (String propertyName : data.getPropertyNames()) {
                            ValueInfo<?> valueInfo = data.getValueInfo(propertyName);
                            if (valueInfo == null) {
                                continue;
                            }
                            tableRows(pw);
                            td(pw, propertyName);
                            td(pw, valueInfo.getEffectiveValue());
                            td(pw, valueInfo.getValue());
                            td(pw, valueInfo.isDefault());

                            String title = null;
                            if (valueInfo.isInherited()) {
                                title = "Source path: " + valueInfo.getConfigSourcePath();
                            }
                            td(pw, valueInfo.isInherited(), title);

                            td(pw, valueInfo.isOverridden());
                        }

                   }

                }

                tableEnd(pw);
            }

        }
        finally {
            if (resolver != null) {
                resolver.close();
            }
        }
    }