Oliver Lietz created SLING-5917:
-----------------------------------

             Summary: parseRawText flag in getRepoInitText() is ambiguous
                 Key: SLING-5917
                 URL: https://issues.apache.org/jira/browse/SLING-5917
             Project: Sling
          Issue Type: Bug
          Components: JCR
    Affects Versions: Repoinit JCR 1.0.0
            Reporter: Oliver Lietz


*current:*
{noformat}
    private String getRepoInitText() {
        final boolean parseRawText = modelSectionName.trim().length() > 0;
        if(parseRawText) {
            log.info("Reading repoinit statements from {}", textURL);
        } else {
            log.info("Extracting repoinit statements from section {} of 
provisioning model {}", modelSectionName, textURL);
        }
        String result = getRawRepoInitText();
        log.debug("Raw text from {}: \n{}", textURL, result);
        log.info("Got {} characters from {}", result.length(), textURL);
        if(parseRawText) {
            final StringReader r = new StringReader(result);
            try {
                final Model m = ModelReader.read(r, textURL);
                final StringBuilder b = new StringBuilder();
                for(Feature f : m.getFeatures()) {
                    for(Section s : f.getAdditionalSections(modelSectionName)) {
                        b.append("# ").append(modelSectionName).append(" from 
").append(f.getName()).append("\n");
                        b.append("# ").append(s.getComment()).append("\n");
                        b.append(s.getContents()).append("\n");
                    }
                }
                result = b.toString();
            } catch (IOException e) {
                result = "";
                log.warn("Error parsing provisioning model from " + textURL, e);
            }
        }
        return result;
    }
{noformat}

*improved:*
{noformat}
    private String getRepoInitText() {
        final String rawText = getRawRepoInitText();
        log.debug("Raw text from {}: \n{}", textURL, rawText);
        log.info("Got {} characters from {}", rawText.length(), textURL);
        final boolean parseRawText = modelSectionName.trim().length() == 0;
        if (parseRawText) {
            log.info("Parsing raw repoinit statements from {}", textURL);
            return rawText;
        } else {
            log.info("Extracting repoinit statements from section '{}' of 
provisioning model {}", modelSectionName, textURL);
            final StringReader reader = new StringReader(rawText);
            try {
                final Model model = ModelReader.read(reader, textURL);
                final StringBuilder sb = new StringBuilder();
                for (Feature feature : model.getFeatures()) {
                    for (Section section : 
feature.getAdditionalSections(modelSectionName)) {
                        sb.append("# ").append(modelSectionName).append(" from 
").append(feature.getName()).append("\n");
                        sb.append("# 
").append(section.getComment()).append("\n");
                        sb.append(section.getContents()).append("\n");
                    }
                }
                return sb.toString();
            } catch (IOException e) {
                log.warn("Error parsing provisioning model from " + textURL, e);
                return "";
            }
        }
    }
{noformat}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to