aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java180
1 files changed, 0 insertions, 180 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
deleted file mode 100644
index 4a4f2312..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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.UnsupportedEncodingException;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.launch.Locator;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.util.FileUtils;
-
-/**
- * Converts a Path into a property suitable as a Manifest classpath.
- *
- * @since Ant 1.7
- *
- * @ant.task category="property"
- */
-public class ManifestClassPath extends Task {
-
- /** The property name to hold the classpath value. */
- private String name;
-
- /** The directory the classpath will be relative from. */
- private File dir;
-
- /** The maximum parent directory level to traverse. */
- private int maxParentLevels = 2;
-
- /** The classpath to convert. */
- private Path path;
-
- /**
- * Sets a property, which must not already exist, with a space
- * separated list of files and directories relative to the jar
- * file's parent directory.
- */
- public void execute() {
- if (name == null) {
- throw new BuildException("Missing 'property' attribute!");
- }
- if (dir == null) {
- throw new BuildException("Missing 'jarfile' attribute!");
- }
- if (getProject().getProperty(name) != null) {
- throw new BuildException("Property '" + name + "' already set!");
- }
- if (path == null) {
- throw new BuildException("Missing nested <classpath>!");
- }
-
- StringBuffer tooLongSb = new StringBuffer();
- for (int i = 0; i < maxParentLevels + 1; i++) {
- tooLongSb.append("../");
- }
- final String tooLongPrefix = tooLongSb.toString();
-
- // Normalize the reference directory (containing the jar)
- final FileUtils fileUtils = FileUtils.getFileUtils();
- dir = fileUtils.normalize(dir.getAbsolutePath());
-
- String[] elements = path.list();
- StringBuffer buffer = new StringBuffer();
- for (int i = 0; i < elements.length; ++i) {
- // Normalize the current file
- File pathEntry = new File(elements[i]);
- String fullPath = pathEntry.getAbsolutePath();
- pathEntry = fileUtils.normalize(fullPath);
-
- String relPath = null;
- String canonicalPath = null;
- try {
- if (dir.equals(pathEntry)) {
- relPath = ".";
- } else {
- relPath = FileUtils.getRelativePath(dir, pathEntry);
- }
-
- canonicalPath = pathEntry.getCanonicalPath();
- // getRelativePath always uses '/' as separator, adapt
- if (File.separatorChar != '/') {
- canonicalPath =
- canonicalPath.replace(File.separatorChar, '/');
- }
- } catch (Exception e) {
- throw new BuildException("error trying to get the relative path"
- + " from " + dir + " to " + fullPath,
- e);
- }
-
- // No match, so bail out!
- if (relPath.equals(canonicalPath)
- || relPath.startsWith(tooLongPrefix)) {
- throw new BuildException("No suitable relative path from "
- + dir + " to " + fullPath);
- }
-
- if (pathEntry.isDirectory() && !relPath.endsWith("/")) {
- relPath = relPath + '/';
- }
- try {
- relPath = Locator.encodeURI(relPath);
- } catch (UnsupportedEncodingException exc) {
- throw new BuildException(exc);
- }
- // Manifest's ClassPath: attribute always uses forward
- // slashes '/', and is space-separated. Ant will properly
- // format it on 72 columns with proper line continuation
- buffer.append(relPath);
- buffer.append(' ');
- }
-
- // Finally assign the property with the manifest classpath
- getProject().setNewProperty(name, buffer.toString().trim());
- }
-
- /**
- * Sets the property name to hold the classpath value.
- *
- * @param name the property name
- */
- public void setProperty(String name) {
- this.name = name;
- }
-
- /**
- * The JAR file to contain the classpath attribute in its manifest.
- *
- * @param jarfile the JAR file. Need not exist yet, but its parent
- * directory must exist on the other hand.
- */
- public void setJarFile(File jarfile) {
- File parent = jarfile.getParentFile();
- if (!parent.isDirectory()) {
- throw new BuildException("Jar's directory not found: " + parent);
- }
- this.dir = parent;
- }
-
- /**
- * Sets the maximum parent directory levels allowed when computing
- * a relative path.
- *
- * @param levels the max level. Defaults to 2.
- */
- public void setMaxParentLevels(int levels) {
- if (levels < 0) {
- throw new BuildException("maxParentLevels must not be a negative"
- + " number");
- }
- this.maxParentLevels = levels;
- }
-
- /**
- * Adds the classpath to convert.
- *
- * @param path the classpath to convert.
- */
- public void addClassPath(Path path) {
- this.path = path;
- }
-
-}