⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makeurl.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
字号:
/* *  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 org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;import org.apache.tools.ant.Task;import org.apache.tools.ant.DirectoryScanner;import org.apache.tools.ant.util.FileUtils;import org.apache.tools.ant.types.FileSet;import org.apache.tools.ant.types.Path;import java.io.File;import java.util.List;import java.util.LinkedList;import java.util.ListIterator;/** * This task takes file and turns them into a URL, which it then assigns * to a property. Use when for setting up RMI codebases. * <p/> * nested filesets are supported; if present, these are turned into the * url with the given separator between them (default = " "). * * @ant.task category="core" name="makeurl" */public class MakeUrl extends Task {    /**     * name of the property to set     */    private String property;    /**     * name of a file to turn into a URL     */    private File file;    /**     * separator char     */    private String separator = " ";    /**     * filesets of nested files to add to this url     */    private List filesets = new LinkedList();    /**     * paths to add     */    private List paths = new LinkedList();    /**     * validation flag     */    private boolean validate = true;    // error message strings    /** Missing file */    public static final String ERROR_MISSING_FILE = "A source file is missing :";    /** No property defined */    public static final String ERROR_NO_PROPERTY = "No property defined";    /** No files defined */    public static final String ERROR_NO_FILES = "No files defined";    /**     * set the name of a property to fill with the URL     *     * @param property the name of the property.     */    public void setProperty(String property) {        this.property = property;    }    /**     * the name of a file to be converted into a URL     *     * @param file the file to be converted.     */    public void setFile(File file) {        this.file = file;    }    /**     * a fileset of jar files to include in the URL, each     * separated by the separator     *     * @param fileset the fileset to be added.     */    public void addFileSet(FileSet fileset) {        filesets.add(fileset);    }    /**     * set the separator for the multi-url option.     *     * @param separator the separator to use.     */    public void setSeparator(String separator) {        this.separator = separator;    }    /**     * set this flag to trigger validation that every named file exists.     * Optional: default=true     *     * @param validate a <code>boolean</code> value.     */    public void setValidate(boolean validate) {        this.validate = validate;    }    /**     * add a path to the URL. All elements in the path     * will be converted to individual URL entries     *     * @param path a path value.     */    public void addPath(Path path) {        paths.add(path);    }    /**     * convert the filesets to urls.     *     * @return null for no files     */    private String filesetsToURL() {        if (filesets.isEmpty()) {            return "";        }        int count = 0;        StringBuffer urls = new StringBuffer();        ListIterator list = filesets.listIterator();        while (list.hasNext()) {            FileSet set = (FileSet) list.next();            DirectoryScanner scanner = set.getDirectoryScanner(getProject());            String[] files = scanner.getIncludedFiles();            for (int i = 0; i < files.length; i++) {                File f = new File(scanner.getBasedir(), files[i]);                validateFile(f);                String asUrl = toURL(f);                urls.append(asUrl);                log(asUrl, Project.MSG_DEBUG);                urls.append(separator);                count++;            }        }        //at this point there is one trailing space to remove, if the list is not empty.        return stripTrailingSeparator(urls, count);    }    /**     * convert the string buffer to a string, potentially stripping     * out any trailing separator     *     * @param urls  URL buffer     * @param count number of URL entries     * @return trimmed string, or empty string     */    private String stripTrailingSeparator(StringBuffer urls,                                          int count) {        if (count > 0) {            urls.delete(urls.length() - separator.length(), urls.length());            return new String(urls);        } else {            return "";        }    }    /**     * convert all paths to URLs     *     * @return the paths as a separated list of URLs     */    private String pathsToURL() {        if (paths.isEmpty()) {            return "";        }        int count = 0;        StringBuffer urls = new StringBuffer();        ListIterator list = paths.listIterator();        while (list.hasNext()) {            Path path = (Path) list.next();            String[] elements = path.list();            for (int i = 0; i < elements.length; i++) {                File f = new File(elements[i]);                validateFile(f);                String asUrl = toURL(f);                urls.append(asUrl);                log(asUrl, Project.MSG_DEBUG);                urls.append(separator);                count++;            }        }        //at this point there is one trailing space to remove, if the list is not empty.        return stripTrailingSeparator(urls, count);    }    /**     * verify that the file exists, if {@link #validate} is set     *     * @param fileToCheck file that may need to exist     * @throws BuildException with text beginning {@link #ERROR_MISSING_FILE}     */    private void validateFile(File fileToCheck) {        if (validate && !fileToCheck.exists()) {            throw new BuildException(ERROR_MISSING_FILE + fileToCheck.toString());        }    }    /**     * Create the url     *     * @throws org.apache.tools.ant.BuildException     *          if something goes wrong with the build     */    public void execute() throws BuildException {        validate();        //now exit here if the property is already set        if (getProject().getProperty(property) != null) {            return;        }        String url;        String filesetURL = filesetsToURL();        if (file != null) {            validateFile(file);            url = toURL(file);            //and add any files if also defined            if (filesetURL.length() > 0) {                url = url + separator + filesetURL;            }        } else {            url = filesetURL;        }        //add path URLs        String pathURL = pathsToURL();        if (pathURL.length() > 0) {            if (url.length() > 0) {                url = url + separator + pathURL;            } else {                url = pathURL;            }        }        log("Setting " + property + " to URL " + url, Project.MSG_VERBOSE);        getProject().setNewProperty(property, url);    }    /**     * check for errors     * @throws BuildException if we are not configured right     */    private void validate() {        //validation        if (property == null) {            throw new BuildException(ERROR_NO_PROPERTY);        }        if (file == null && filesets.isEmpty() && paths.isEmpty()) {            throw new BuildException(ERROR_NO_FILES);        }    }    /**     * convert a file to a URL;     *     * @param fileToConvert     * @return the file converted to a URL     */    private String toURL(File fileToConvert) {        String url;        //create the URL        //ant equivalent of  fileToConvert.toURI().toURL().toExternalForm();        url = FileUtils.getFileUtils().toURI(fileToConvert.getAbsolutePath());        return url;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -