|
- /*
- * 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.File;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.Writer;
- import java.io.BufferedWriter;
- import java.io.OutputStreamWriter;
- import java.io.FileOutputStream;
-
- import org.apache.tools.ant.BuildException;
- import org.apache.tools.ant.Project;
- import org.apache.tools.ant.Task;
- import org.apache.tools.ant.util.FileUtils;
- import org.apache.tools.ant.types.LogLevel;
- import org.apache.tools.ant.types.Resource;
- import org.apache.tools.ant.types.resources.FileProvider;
- import org.apache.tools.ant.types.resources.FileResource;
-
- /**
- * Writes a message to the Ant logging facilities.
- *
- * @since Ant 1.1
- *
- * @ant.task category="utility"
- */
- public class Echo extends Task {
- // CheckStyle:VisibilityModifier OFF - bc
- protected String message = "";
- protected File file = null;
- protected boolean append = false;
- /** encoding; set to null or empty means 'default' */
- private String encoding = "";
-
- // by default, messages are always displayed
- protected int logLevel = Project.MSG_WARN;
- // CheckStyle:VisibilityModifier ON
-
- private Resource output;
-
- /**
- * Does the work.
- *
- * @exception BuildException if something goes wrong with the build
- */
- public void execute() throws BuildException {
- if (output == null) {
- log(message, logLevel);
- } else {
- Writer out = null;
- try {
- OutputStream os = output instanceof FileProvider ? os = new FileOutputStream(
- ((FileProvider) output).getFile(), append) : output.getOutputStream();
- OutputStreamWriter osw = (encoding == null || "".equals(encoding)) ? new OutputStreamWriter(
- os)
- : new OutputStreamWriter(os, encoding);
- out = new BufferedWriter(osw);
- out.write(message, 0, message.length());
- } catch (IOException ioe) {
- throw new BuildException(ioe, getLocation());
- } finally {
- FileUtils.close(out);
- }
- }
- }
-
- /**
- * Message to write.
- *
- * @param msg Sets the value for the message variable.
- */
- public void setMessage(String msg) {
- this.message = msg;
- }
-
- /**
- * File to write to.
- * @param file the file to write to, if not set, echo to
- * standard output
- */
- public void setFile(File file) {
- this.file = file;
- setOutput(new FileResource(getProject(), file));
- }
-
- /**
- * Resource to write to.
- * @param output the Resource to write to.
- * @since Ant 1.8
- */
- public void setOutput(Resource output) {
- if (this.output != null) {
- throw new BuildException("Cannot set > 1 output target");
- }
- this.output = output;
- this.file = output instanceof FileProvider ? ((FileProvider) output).getFile() : null;
- }
-
- /**
- * If true, append to existing file.
- * @param append if true, append to existing file, default
- * is false.
- */
- public void setAppend(boolean append) {
- this.append = append;
- }
-
- /**
- * Set a multiline message.
- * @param msg the CDATA text to append to the output text
- */
- public void addText(String msg) {
- message += getProject().replaceProperties(msg);
- }
-
- /**
- * Set the logging level. Level should be one of
- * <ul>
- * <li>error</li>
- * <li>warning</li>
- * <li>info</li>
- * <li>verbose</li>
- * <li>debug</li>
- * </ul>
- * <p>The default is "warning" to ensure that messages are
- * displayed by default when using the -quiet command line option.</p>
- * @param echoLevel the logging level
- */
- public void setLevel(EchoLevel echoLevel) {
- logLevel = echoLevel.getLevel();
- }
-
- /**
- * Declare the encoding to use when outputting to a file;
- * Use "" for the platform's default encoding.
- * @param encoding the character encoding to use.
- * @since 1.7
- */
- public void setEncoding(String encoding) {
- this.encoding = encoding;
- }
-
- /**
- * The enumerated values for the level attribute.
- */
- public static class EchoLevel extends LogLevel {
- }
- }
|