All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sortpom.processinstruction.XmlProcessingInstructionParser Maven / Gradle / Ivy

package sortpom.processinstruction;

import sortpom.exception.FailureException;
import sortpom.logger.SortPomLogger;

/**
 * Handling for xml processing instructions in the pom file. Supports ignore and resume
 *
 * @author bjorn
 * @since 2013-12-28
 */
public class XmlProcessingInstructionParser {
    private final IgnoredSectionsStore ignoredSectionsStore = new IgnoredSectionsStore();
    private String originalXml;
    private SortPomLogger logger;
    private boolean containsIgnoredSections = false;

    public void setup(SortPomLogger logger) {
        this.logger = logger;
    }

    /** Checks if pom file contains any processing instructions */
    public void scanForIgnoredSections(String originalXml) {
        this.originalXml = originalXml;
        SortpomPiScanner sortpomPiScanner = new SortpomPiScanner(logger);
        sortpomPiScanner.scan(originalXml);
        if (sortpomPiScanner.isScanError()) {
            throw new FailureException(sortpomPiScanner.getFirstError());
        }
        containsIgnoredSections = sortpomPiScanner.containsIgnoredSections();
    }

    /** Returns true if sortpom processing instructions exists */
    public boolean existsIgnoredSections() {
        return containsIgnoredSections;
    }

    /** Stores all ignored sections and replaces each with a processing instruction token */
    public String replaceIgnoredSections() {
        if (containsIgnoredSections) {
            return ignoredSectionsStore.replaceIgnoredSections(originalXml);
        }
        return originalXml;
    }

    /** Reverts the processing instruction token back to original content */
    public String revertIgnoredSections(String sortedXml) {
        if (containsIgnoredSections) {
            return ignoredSectionsStore.revertIgnoredSections(sortedXml);
        }
        return sortedXml;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy