aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/LoadResource.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/LoadResource.java236
1 files changed, 236 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/LoadResource.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
new file mode 100644
index 00000000..f68b5ba4
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
@@ -0,0 +1,236 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.taskdefs;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Vector;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.filters.util.ChainReaderHelper;
+import org.apache.tools.ant.types.FilterChain;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
+import org.apache.tools.ant.util.FileUtils;
+
+/**
+ * Load a resource into a property
+ *
+ * @since Ant 1.7
+ * @ant.task category="utility"
+ */
+public class LoadResource extends Task {
+
+ /**
+ * The resource to load.
+ */
+ private Resource src;
+
+ /**
+ * what to do when it goes pear-shaped
+ */
+ private boolean failOnError = true;
+
+ /**
+ * suppress error message if it goes pear-shaped, sets failOnError=false
+ */
+ private boolean quiet = false;
+
+ /**
+ * Encoding to use for filenames, defaults to the platform's default
+ * encoding.
+ */
+ private String encoding = null;
+
+ /**
+ * name of property
+ */
+ private String property = null;
+
+ /**
+ * Holds FilterChains
+ */
+ private final Vector<FilterChain> filterChains = new Vector<FilterChain>();
+
+ /**
+ * Encoding to use for input, defaults to the platform's default
+ * encoding. <p>
+ *
+ * For a list of possible values see
+ * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html">
+ * http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
+ * </a>.</p>
+ *
+ * @param encoding The new Encoding value
+ */
+
+ public final void setEncoding(final String encoding) {
+ this.encoding = encoding;
+ }
+
+
+ /**
+ * Property name to save to.
+ *
+ * @param property The new Property value
+ */
+ public final void setProperty(final String property) {
+ this.property = property;
+ }
+
+ /**
+ * If true, fail on load error.
+ *
+ * @param fail The new Failonerror value
+ */
+ public final void setFailonerror(final boolean fail) {
+ failOnError = fail;
+ }
+
+ /**
+ * If true, suppress the load error report and set the
+ * the failonerror value to false.
+ * @param quiet The new Quiet value
+ */
+ public void setQuiet(final boolean quiet) {
+ this.quiet = quiet;
+ if (quiet) {
+ this.failOnError = false;
+ }
+ }
+
+ /**
+ * read in a source file to a property
+ *
+ * @exception BuildException if something goes wrong with the build
+ */
+ 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);
+ } else {
+ log(message, quiet ? Project.MSG_WARN : Project.MSG_ERR);
+ return;
+ }
+ }
+ InputStream is = null;
+ BufferedInputStream bis = null;
+ Reader instream = null;
+ log("loading " + src + " into property " + property,
+ Project.MSG_VERBOSE);
+ 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
+ is = src.getInputStream();
+ bis = new BufferedInputStream(is);
+ if (encoding == null) {
+ instream = new InputStreamReader(bis);
+ } else {
+ instream = new InputStreamReader(bis, encoding);
+ }
+
+ String text = "";
+ if (size != 0) {
+ ChainReaderHelper crh = new ChainReaderHelper();
+ if (len != Resource.UNKNOWN_SIZE) {
+ crh.setBufferSize(size);
+ }
+ crh.setPrimaryReader(instream);
+ crh.setFilterChains(filterChains);
+ crh.setProject(getProject());
+ instream = crh.getAssembledReader();
+
+ text = crh.readFully(instream);
+ } else {
+ log("Do not set property " + property + " as its length is 0.",
+ quiet ? Project.MSG_VERBOSE : Project.MSG_INFO);
+ }
+
+ if (text != null) {
+ if (text.length() > 0) {
+ 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.toString();
+ if (failOnError) {
+ throw new BuildException(message, ioe, getLocation());
+ } else {
+ log(message, quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
+ }
+ } catch (final BuildException be) {
+ if (failOnError) {
+ throw be;
+ } else {
+ log(be.getMessage(),
+ quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
+ }
+ } finally {
+ FileUtils.close(is);
+ }
+ }
+
+ /**
+ * Add the FilterChain element.
+ * @param filter the filter to add
+ */
+ public final void addFilterChain(FilterChain filter) {
+ filterChains.addElement(filter);
+ }
+
+ /**
+ * Set the source resource.
+ * @param a the resource to load as a single element Resource collection.
+ */
+ public void addConfigured(ResourceCollection a) {
+ if (a.size() != 1) {
+ throw new BuildException("only single argument resource collections"
+ + " are supported");
+ }
+ src = a.iterator().next();
+ }
+
+}