Author: bodewig Date: Tue Nov 29 20:53:48 2005 New Revision: 349878 URL: http://svn.apache.org/viewcvs?rev=349878&view=rev Log: fix linefeeds
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java (contents, props changed) Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java?rev=349878&r1=349877&r2=349878&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java Tue Nov 29 20:53:48 2005 @@ -1,184 +1,184 @@ -/* - * Copyright 2005 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.Task; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.BuildException; -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 exists, 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>!"); - } - - // Normalize the reference directory (containing the jar) - final FileUtils fileUtils = FileUtils.getFileUtils(); - _dir = fileUtils.normalize(_dir.getAbsolutePath()); - - // Create as many directory prefixes as parent levels to traverse, - // in addition to the reference directory itself - File currDir = _dir; - String[] dirs = new String[_maxParentLevels + 1]; - for (int i = 0; i < _maxParentLevels + 1; ++i) { - dirs[i] = currDir.getAbsolutePath() + File.separatorChar; - currDir = currDir.getParentFile(); - if (currDir == null) { - _maxParentLevels = i + 1; - break; - } - } - - String[] elements = _path.list(); - StringBuffer buffer = new StringBuffer(); - StringBuffer element = new StringBuffer(); - for (int i = 0; i < elements.length; ++i) { - // Normalize the current file - File pathEntry = new File(elements[i]); - pathEntry = fileUtils.normalize(pathEntry.getAbsolutePath()); - String fullPath = pathEntry.getAbsolutePath(); - - // Find the longest prefix shared by the current file - // and the reference directory. - String relPath = null; - for (int j = 0; j <= _maxParentLevels; ++j) { - String dir = dirs[j]; - if (!fullPath.startsWith(dir)) { - continue; - } - - // We have a match! Add as many ../ as parent - // directory traversed to get the relative path - element.setLength(0); - for (int k = 0; k < j; ++k) { - element.append(".."); - element.append(File.separatorChar); - } - element.append(fullPath.substring(dir.length())); - relPath = element.toString(); - break; - } - - // No match, so bail out! - if (relPath == null) { - throw new BuildException("No suitable relative path from " + - _dir + " to " + fullPath); - } - - // Manifest's ClassPath: attribute always uses forward - // slashes '/', and is space-separated. Ant will properly - // format it on 72 columns with proper line continuation - if (File.separatorChar != '/') { - relPath = relPath.replace(File.separatorChar, '/'); - } - buffer.append(relPath); - if (pathEntry.isDirectory()) { - buffer.append('/'); - } - buffer.append(' '); - } - - // Get rid of trailing space, if any - if (buffer.length() > 0) { - buffer.setLength(buffer.length() - 1); - } - - // Finally assign the property with the manifest classpath - getProject().setNewProperty(_name, buffer.toString()); - } - - /** - * Sets the property name to hold the classpath value. - * - * @param name the property name - */ - public void setProperty(String name) { - _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); - } - _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) { - _maxParentLevels = levels; - } - - /** - * Adds the classpath to convert. - * - * @param path the classpath to convert. - */ - public void addClassPath(Path path) { - _path = path; - } - -} +/* + * Copyright 2005 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.Task; +import org.apache.tools.ant.types.Path; +import org.apache.tools.ant.BuildException; +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 exists, 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>!"); + } + + // Normalize the reference directory (containing the jar) + final FileUtils fileUtils = FileUtils.getFileUtils(); + _dir = fileUtils.normalize(_dir.getAbsolutePath()); + + // Create as many directory prefixes as parent levels to traverse, + // in addition to the reference directory itself + File currDir = _dir; + String[] dirs = new String[_maxParentLevels + 1]; + for (int i = 0; i < _maxParentLevels + 1; ++i) { + dirs[i] = currDir.getAbsolutePath() + File.separatorChar; + currDir = currDir.getParentFile(); + if (currDir == null) { + _maxParentLevels = i + 1; + break; + } + } + + String[] elements = _path.list(); + StringBuffer buffer = new StringBuffer(); + StringBuffer element = new StringBuffer(); + for (int i = 0; i < elements.length; ++i) { + // Normalize the current file + File pathEntry = new File(elements[i]); + pathEntry = fileUtils.normalize(pathEntry.getAbsolutePath()); + String fullPath = pathEntry.getAbsolutePath(); + + // Find the longest prefix shared by the current file + // and the reference directory. + String relPath = null; + for (int j = 0; j <= _maxParentLevels; ++j) { + String dir = dirs[j]; + if (!fullPath.startsWith(dir)) { + continue; + } + + // We have a match! Add as many ../ as parent + // directory traversed to get the relative path + element.setLength(0); + for (int k = 0; k < j; ++k) { + element.append(".."); + element.append(File.separatorChar); + } + element.append(fullPath.substring(dir.length())); + relPath = element.toString(); + break; + } + + // No match, so bail out! + if (relPath == null) { + throw new BuildException("No suitable relative path from " + + _dir + " to " + fullPath); + } + + // Manifest's ClassPath: attribute always uses forward + // slashes '/', and is space-separated. Ant will properly + // format it on 72 columns with proper line continuation + if (File.separatorChar != '/') { + relPath = relPath.replace(File.separatorChar, '/'); + } + buffer.append(relPath); + if (pathEntry.isDirectory()) { + buffer.append('/'); + } + buffer.append(' '); + } + + // Get rid of trailing space, if any + if (buffer.length() > 0) { + buffer.setLength(buffer.length() - 1); + } + + // Finally assign the property with the manifest classpath + getProject().setNewProperty(_name, buffer.toString()); + } + + /** + * Sets the property name to hold the classpath value. + * + * @param name the property name + */ + public void setProperty(String name) { + _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); + } + _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) { + _maxParentLevels = levels; + } + + /** + * Adds the classpath to convert. + * + * @param path the classpath to convert. + */ + public void addClassPath(Path path) { + _path = path; + } + +} Propchange: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]