- /*
- * 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 org.apache.tools.ant.BuildException;
- import org.apache.tools.ant.Task;
- import org.apache.tools.ant.util.FileUtils;
-
- /**
- * This task sets a property to the name of a temporary file.
- * Unlike {@link File#createTempFile}, this task does not (by default) actually create the
- * temporary file, but it does guarantee that the file did not
- * exist when the task was executed.
- * <p>
- * Examples
- * <pre><tempfile property="temp.file" /></pre>
- * create a temporary file
- * <pre><tempfile property="temp.file" suffix=".xml" /></pre>
- * create a temporary file with the .xml suffix.
- * <pre><tempfile property="temp.file" destDir="build"/></pre>
- * create a temp file in the build subdir
- * @since Ant 1.5
- * @ant.task
- */
-
- public class TempFile extends Task {
-
- private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
-
- /**
- * Name of property to set.
- */
- private String property;
-
- /**
- * Directory to create the file in. Can be null.
- */
- private File destDir = null;
-
- /**
- * Prefix for the file.
- */
- private String prefix;
-
- /**
- * Suffix for the file.
- */
- private String suffix = "";
-
- /** deleteOnExit flag */
- private boolean deleteOnExit;
-
- /** createFile flag */
- private boolean createFile;
-
- /**
- * Sets the property you wish to assign the temporary file to.
- *
- * @param property The property to set
- * @ant.attribute group="required"
- */
- public void setProperty(String property) {
- this.property = property;
- }
-
- /**
- * Sets the destination directory. If not set,
- * the basedir directory is used instead.
- *
- * @param destDir The new destDir value
- */
- public void setDestDir(File destDir) {
- this.destDir = destDir;
- }
-
- /**
- * Sets the optional prefix string for the temp file.
- *
- * @param prefix string to prepend to generated string
- */
- public void setPrefix(String prefix) {
- this.prefix = prefix;
- }
-
- /**
- * Sets the optional suffix string for the temp file.
- *
- * @param suffix suffix including any ".", e.g ".xml"
- */
- public void setSuffix(String suffix) {
- this.suffix = suffix;
- }
-
- /**
- * Set whether the tempfile created by this task should be set
- * for deletion on normal VM exit.
- * @param deleteOnExit boolean flag.
- */
- public void setDeleteOnExit(boolean deleteOnExit) {
- this.deleteOnExit = deleteOnExit;
- }
-
- /**
- * Learn whether deleteOnExit is set for this tempfile task.
- * @return boolean deleteOnExit flag.
- */
- public boolean isDeleteOnExit() {
- return deleteOnExit;
- }
-
- /**
- * If set the file is actually created, if not just a name is created.
- * @param createFile boolean flag.
- */
- public void setCreateFile(boolean createFile) {
- this.createFile = createFile;
- }
-
- /**
- * Learn whether createFile flag is set for this tempfile task.
- * @return the createFile flag.
- */
- public boolean isCreateFile() {
- return createFile;
- }
-
- /**
- * Creates the temporary file.
- *
- * @exception BuildException if something goes wrong with the build
- */
- @Override
- public void execute() throws BuildException {
- if (property == null || property.isEmpty()) {
- throw new BuildException("no property specified");
- }
- if (destDir == null) {
- destDir = getProject().resolveFile(".");
- }
- File tfile = FILE_UTILS.createTempFile(prefix, suffix, destDir,
- deleteOnExit, createFile);
- getProject().setNewProperty(property, tfile.toString());
- }
- }
|