Search in sources :

Example 1 with ChainReader

use of org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader in project ant by apache.

the class LoadProperties method execute.

/**
 * load Ant properties from the source file or resource
 *
 * @exception BuildException if something goes wrong with the build
 */
@Override
public final void execute() throws BuildException {
    // validation
    if (src == null) {
        throw new BuildException("A source resource is required.");
    }
    if (!src.isExists()) {
        if (src instanceof JavaResource) {
            // dreaded backwards compatibility
            log("Unable to find resource " + src, Project.MSG_WARN);
            return;
        }
        throw new BuildException("Source resource does not exist: " + src);
    }
    Charset charset = encoding == null ? Charset.defaultCharset() : Charset.forName(encoding);
    try (ChainReader instream = new ChainReaderHelper(getProject(), new InputStreamReader(new BufferedInputStream(src.getInputStream()), charset), filterChains).getAssembledReader()) {
        String text = instream.readFully();
        if (text != null && !text.isEmpty()) {
            if (!text.endsWith("\n")) {
                text = text + "\n";
            }
            ByteArrayInputStream tis = new ByteArrayInputStream(text.getBytes(ResourceUtils.ISO_8859_1));
            final Properties props = new Properties();
            props.load(tis);
            Property propertyTask = new Property();
            propertyTask.bindToOwner(this);
            propertyTask.setPrefix(prefix);
            propertyTask.setPrefixValues(prefixValues);
            propertyTask.addProperties(props);
        }
    } catch (final IOException ioe) {
        throw new BuildException("Unable to load file: " + ioe, ioe, getLocation());
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) ChainReader(org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader) BufferedInputStream(java.io.BufferedInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) Charset(java.nio.charset.Charset) ChainReaderHelper(org.apache.tools.ant.filters.util.ChainReaderHelper) BuildException(org.apache.tools.ant.BuildException) IOException(java.io.IOException) Properties(java.util.Properties) JavaResource(org.apache.tools.ant.types.resources.JavaResource)

Example 2 with ChainReader

use of org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader in project ant by apache.

the class LoadResource method execute.

/**
 * read in a source file to a property
 *
 * @exception BuildException if something goes wrong with the build
 */
@Override
public final void execute() throws BuildException {
    // validation
    if (src == null) {
        throw new BuildException("source resource not defined");
    }
    if (property == null) {
        throw new BuildException("output property not defined");
    }
    if (quiet && failOnError) {
        throw new BuildException("quiet and failonerror cannot both be set to true");
    }
    if (!src.isExists()) {
        String message = src + " doesn't exist";
        if (failOnError) {
            throw new BuildException(message);
        }
        log(message, quiet ? Project.MSG_WARN : Project.MSG_ERR);
        return;
    }
    log("loading " + src + " into property " + property, Project.MSG_VERBOSE);
    Charset charset = encoding == null ? Charset.defaultCharset() : Charset.forName(encoding);
    try {
        final long len = src.getSize();
        log("resource size = " + (len != Resource.UNKNOWN_SIZE ? String.valueOf(len) : "unknown"), Project.MSG_DEBUG);
        // discard most of really big resources
        final int size = (int) len;
        // open up the resource
        String text;
        if (size != 0) {
            try (ChainReader chainReader = new ChainReaderHelper(getProject(), new InputStreamReader(new BufferedInputStream(src.getInputStream()), charset), filterChains).with(crh -> {
                if (src.getSize() != Resource.UNKNOWN_SIZE) {
                    crh.setBufferSize(size);
                }
            }).getAssembledReader()) {
                text = chainReader.readFully();
            }
        } else {
            log("Do not set property " + property + " as its length is 0.", quiet ? Project.MSG_VERBOSE : Project.MSG_INFO);
            text = null;
        }
        if (text != null && !text.isEmpty()) {
            getProject().setNewProperty(property, text);
            log("loaded " + text.length() + " characters", Project.MSG_VERBOSE);
            log(property + " := " + text, Project.MSG_DEBUG);
        }
    } catch (final IOException ioe) {
        final String message = "Unable to load resource: " + ioe;
        if (failOnError) {
            throw new BuildException(message, ioe, getLocation());
        }
        log(message, quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
    } catch (final BuildException be) {
        if (failOnError) {
            throw be;
        }
        log(be.getMessage(), quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
    }
}
Also used : Resource(org.apache.tools.ant.types.Resource) BufferedInputStream(java.io.BufferedInputStream) Task(org.apache.tools.ant.Task) FilterChain(org.apache.tools.ant.types.FilterChain) ChainReader(org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader) IOException(java.io.IOException) BuildException(org.apache.tools.ant.BuildException) ResourceCollection(org.apache.tools.ant.types.ResourceCollection) InputStreamReader(java.io.InputStreamReader) ChainReaderHelper(org.apache.tools.ant.filters.util.ChainReaderHelper) List(java.util.List) Vector(java.util.Vector) Charset(java.nio.charset.Charset) Project(org.apache.tools.ant.Project) InputStreamReader(java.io.InputStreamReader) ChainReader(org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader) BufferedInputStream(java.io.BufferedInputStream) Charset(java.nio.charset.Charset) ChainReaderHelper(org.apache.tools.ant.filters.util.ChainReaderHelper) BuildException(org.apache.tools.ant.BuildException) IOException(java.io.IOException)

Aggregations

BufferedInputStream (java.io.BufferedInputStream)2 IOException (java.io.IOException)2 InputStreamReader (java.io.InputStreamReader)2 Charset (java.nio.charset.Charset)2 BuildException (org.apache.tools.ant.BuildException)2 ChainReaderHelper (org.apache.tools.ant.filters.util.ChainReaderHelper)2 ChainReader (org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 List (java.util.List)1 Properties (java.util.Properties)1 Vector (java.util.Vector)1 Project (org.apache.tools.ant.Project)1 Task (org.apache.tools.ant.Task)1 FilterChain (org.apache.tools.ant.types.FilterChain)1 Resource (org.apache.tools.ant.types.Resource)1 ResourceCollection (org.apache.tools.ant.types.ResourceCollection)1 JavaResource (org.apache.tools.ant.types.resources.JavaResource)1