org.apache.tools.ant.taskdefs.Unpack Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testatoo-container-jetty-full Show documentation
Show all versions of testatoo-container-jetty-full Show documentation
Testatoo Jetty Container with JSP support
/*
* Copyright 2001-2002,2004 The Apache Software Foundation
*
* Licensed 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;
/**
* Abstract Base class for unpack tasks.
*
*
* @since Ant 1.5
*/
public abstract class Unpack extends Task {
protected File source;
protected File dest;
/**
* @deprecated setSrc(String) is deprecated and is replaced with
* setSrc(File) to make Ant's Introspection
* mechanism do the work and also to encapsulate operations on
* the type in its own class.
* @ant.attribute ignore="true"
*/
public void setSrc(String src) {
log("DEPRECATED - The setSrc(String) method has been deprecated."
+ " Use setSrc(File) instead.");
setSrc(getProject().resolveFile(src));
}
/**
* @deprecated setDest(String) is deprecated and is replaced with
* setDest(File) to make Ant's Introspection
* mechanism do the work and also to encapsulate operations on
* the type in its own class.
* @ant.attribute ignore="true"
*/
public void setDest(String dest) {
log("DEPRECATED - The setDest(String) method has been deprecated."
+ " Use setDest(File) instead.");
setDest(getProject().resolveFile(dest));
}
/**
* The file to expand; required.
* @param src file to expand
*/
public void setSrc(File src) {
source = src;
}
/**
* The destination file or directory; optional.
* @param dest destination file or directory
*/
public void setDest(File dest) {
this.dest = dest;
}
private void validate() throws BuildException {
if (source == null) {
throw new BuildException("No Src specified", getLocation());
}
if (!source.exists()) {
throw new BuildException("Src doesn't exist", getLocation());
}
if (source.isDirectory()) {
throw new BuildException("Cannot expand a directory", getLocation());
}
if (dest == null) {
dest = new File(source.getParent());
}
if (dest.isDirectory()) {
String defaultExtension = getDefaultExtension();
createDestFile(defaultExtension);
}
}
private void createDestFile(String defaultExtension) {
String sourceName = source.getName();
int len = sourceName.length();
if (defaultExtension != null
&& len > defaultExtension.length()
&& defaultExtension.equalsIgnoreCase(sourceName.substring(len - defaultExtension.length()))) {
dest = new File(dest, sourceName.substring(0,
len - defaultExtension.length()));
} else {
dest = new File(dest, sourceName);
}
}
public void execute() throws BuildException {
File savedDest = dest; // may be altered in validate
try {
validate();
extract();
} finally {
dest = savedDest;
}
}
protected abstract String getDefaultExtension();
protected abstract void extract();
}