|
Ant example source code file (Unpack.java)
The Unpack.java source code/* * 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.types.Resource; import org.apache.tools.ant.types.ResourceCollection; import org.apache.tools.ant.types.resources.FileResource; /** * Abstract Base class for unpack tasks. * * @since Ant 1.5 */ public abstract class Unpack extends Task { // CheckStyle:VisibilityModifier OFF - bc protected File source; protected File dest; protected Resource srcResource; // CheckStyle:VisibilityModifier ON /** * @deprecated since 1.5.x. * 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" * @param src a <code>String value */ public void setSrc(String src) { log("DEPRECATED - The setSrc(String) method has been deprecated." + " Use setSrc(File) instead."); setSrc(getProject().resolveFile(src)); } /** * @deprecated since 1.5.x. * 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" * @param dest a <code>String value */ 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) { setSrcResource(new FileResource(src)); } /** * The resource to expand; required. * @param src resource to expand */ public void setSrcResource(Resource src) { if (!src.isExists()) { throw new BuildException("the archive doesn't exist"); } if (src.isDirectory()) { throw new BuildException("the archive can't be a directory"); } if (src instanceof FileResource) { source = ((FileResource) src).getFile(); } else if (!supportsNonFileResources()) { throw new BuildException("Only FileSystem resources are" + " supported."); } srcResource = src; } /** * Set the source Archive resource. * @param a the archive 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 as archives"); } setSrcResource((Resource) a.iterator().next()); } /** * 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 (srcResource == null) { throw new BuildException("No Src specified", 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); } } /** * Execute the task. * @throws BuildException on error */ public void execute() throws BuildException { File savedDest = dest; // may be altered in validate try { validate(); extract(); } finally { dest = savedDest; } } /** * Get the extension. * This is to be overridden by subclasses. * @return the default extension. */ protected abstract String getDefaultExtension(); /** * Do the uncompressing. * This is to be overridden by subclasses. */ protected abstract void extract(); /** * Whether this task can deal with non-file resources. * * <p>This implementation returns false. * @return false for this task. * @since Ant 1.7 */ protected boolean supportsNonFileResources() { return false; } } Other Ant examples (source code examples)Here is a short list of links related to this Ant Unpack.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.