Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@apache.org Received: (qmail 20094 invoked from network); 21 Nov 2001 09:20:24 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 21 Nov 2001 09:20:24 -0000 Received: (qmail 11347 invoked by uid 97); 21 Nov 2001 09:20:26 -0000 Delivered-To: qmlist-jakarta-archive-ant-dev@jakarta.apache.org Received: (qmail 11290 invoked by uid 97); 21 Nov 2001 09:20:25 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 11279 invoked by uid 97); 21 Nov 2001 09:20:23 -0000 Date: 21 Nov 2001 09:05:16 -0000 Message-ID: <20011121090516.50400.qmail@icarus.apache.org> From: umagesh@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs Manifest.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N umagesh 01/11/21 01:05:15 Modified: src/main/org/apache/tools/ant/taskdefs Manifest.java Log: Reverted to 1.9 Revision Changes Path 1.11 +97 -97 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Manifest.java Index: Manifest.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Manifest.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- Manifest.java 2001/11/21 08:14:45 1.10 +++ Manifest.java 2001/11/21 09:05:15 1.11 @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2001 The Apache Software Foundation. All rights + * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -9,7 +9,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -17,15 +17,15 @@ * distribution. * * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the + * any, must include the following acknowlegement: + * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written + * from this software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" @@ -68,60 +68,60 @@ /** * Class to manage Manifest information - * + * * @author Conor MacNeill */ public class Manifest { /** The standard manifest version header */ public final static String ATTRIBUTE_MANIFEST_VERSION = "Manifest-Version"; - + /** The standard Signature Version header */ public final static String ATTRIBUTE_SIGNATURE_VERSION = "Signature-Version"; - + /** The Name Attribute is the first in a named section */ public final static String ATTRIBUTE_NAME = "Name"; - - /** The From Header is disallowed in a Manifest */ + + /** The From Header is disallowed in a Manifest */ public final static String ATTRIBUTE_FROM = "From"; - - /** The Class-Path Header is special - it can be duplicated */ + + /** The Class-Path Header is special - it can be duplicated */ public final static String ATTRIBUTE_CLASSPATH = "class-path"; - + /** Default Manifest version if one is not specified */ public final static String DEFAULT_MANIFEST_VERSION = "1.0"; - + /** The max length of a line in a Manifest */ public final static int MAX_LINE_LENGTH = 70; - + /** * Class to hold manifest attributes */ public static class Attribute { /** The attribute's name */ private String name = null; - + /** The attribute's value */ private String value = null; - /** + /** * Construct an empty attribute */ public Attribute() { } - + /** * Construct an attribute by parsing a line from the Manifest - * + * * @param line the line containing the attribute name and value * - * @throws ManifestException if the line is not valid + * @throws ManifestException if the line is not valid */ public Attribute(String line) throws ManifestException { parse(line); } - + /** - * Construct a manifest by specifying its name and value - * + * Construct a manifest by specifying its name and value + * * @param name the attribute's name * @param value the Attribute's value */ @@ -129,18 +129,18 @@ this.name = name; this.value = value; } - + public boolean equals(Object rhs) { if (!(rhs instanceof Attribute)) { return false; } - + Attribute rhsAttribute = (Attribute)rhs; return (name != null && rhsAttribute.name != null && name.toLowerCase().equals(rhsAttribute.name.toLowerCase()) && value != null && value.equals(rhsAttribute.value)); } - + /** * Parse a line into name and value pairs * @@ -157,17 +157,17 @@ } name = line.substring(0, index); value = line.substring(index + 2); - } - + } + /** * Set the Attribute's name - * + * * @param name the attribute's name */ public void setName(String name) { this.name = name; } - + /** * Get the Attribute's name * @@ -176,16 +176,16 @@ public String getName() { return name; } - + /** * Set the Attribute's value - * + * * @param value the attribute's value */ public void setValue(String value) { this.value = value; } - + /** * Get the Attribute's value * @@ -194,18 +194,18 @@ public String getValue() { return value; } - + /** * Add a continuation line from the Manifest file * - * When lines are too long in a manifest, they are continued on the + * When lines are too long in a manifest, they are continued on the * next line by starting with a space. This method adds the continuation * data to the attribute value by skipping the first character. */ public void addContinuation(String line) { value += line.substring(1); } - + /** * Write the attribute out to a print writer. * @@ -230,32 +230,32 @@ line = " " + line.substring(breakIndex); } writer.println(line); - } + } } - /** - * Class to represent an individual section in the + /** + * Class to represent an individual section in the * Manifest. A section consists of a set of attribute values, * separated from other sections by a blank line. */ public static class Section { private Vector warnings = new Vector(); - + /** The section's name if any. The main section in a manifest is unnamed.*/ private String name = null; - + /** The section's attributes.*/ private Hashtable attributes = new Hashtable(); - + /** * Set the Section's name - * + * * @param name the section's name */ public void setName(String name) { this.name = name; } - + /** * Get the Section's name * @@ -264,23 +264,23 @@ public String getName() { return name; } - + /** - * Read a section through a reader - * + * Read a section through a reader + * * @param reader the reader from which the section is read * - * @return the name of the next section if it has been read as part of this + * @return the name of the next section if it has been read as part of this * section - This only happens if the Manifest is malformed. - * + * * @throws ManifestException if the section is not valid according to the JAR spec * @throws IOException if the section cannot be read from the reader. */ public String read(BufferedReader reader) throws ManifestException, IOException { Attribute attribute = null; - while (true) { + while (true) { String line = reader.readLine(); - if (line == null || line.trim().length() == 0) { + if (line == null || line.length() == 0) { return null; } if (line.charAt(0) == ' ') { @@ -308,7 +308,7 @@ } } } - + /** * Merge in another section * @@ -321,10 +321,10 @@ name != null && !(name.equalsIgnoreCase(section.getName()))) { throw new ManifestException("Unable to merge sections with different names"); } - + for (Enumeration e = section.attributes.keys(); e.hasMoreElements();) { String attributeName = (String)e.nextElement(); - if (attributeName.equals(ATTRIBUTE_CLASSPATH) && + if (attributeName.equals(ATTRIBUTE_CLASSPATH) && attributes.containsKey(attributeName)) { // classpath entries are vetors which are merged Vector classpathAttrs = (Vector)section.attributes.get(attributeName); @@ -333,18 +333,18 @@ ourClasspathAttrs.addElement(e2.nextElement()); } } - else { + else { // the merge file always wins attributes.put(attributeName, section.attributes.get(attributeName)); } } - + // add in the warnings for (Enumeration e = section.warnings.elements(); e.hasMoreElements();) { warnings.addElement(e.nextElement()); } } - + /** * Write the section out to a print writer. * @@ -373,7 +373,7 @@ } writer.println(); } - + /** * Get the value of the attribute with the name given. * @@ -381,7 +381,7 @@ * * @return the attribute's value or null if the attribute does not exist * in the section - */ + */ public String getAttributeValue(String attributeName) { Object attribute = attributes.get(attributeName.toLowerCase()); if (attribute == null) { @@ -401,7 +401,7 @@ } /** - * Remove tge given attribute from the section + * Remove tge given attribute from the section * * @param attributeName the name of the attribute to be removed. */ @@ -412,11 +412,11 @@ public void addConfiguredAttribute(Attribute attribute) throws ManifestException { String check = addAttributeAndCheck(attribute); if (check != null) { - throw new BuildException("Specify the section name using the \"name\" attribute of the
element rather " + + throw new BuildException("Specify the section name using the \"name\" attribute of the
element rather " + "than using a \"Name\" manifest attribute"); } } - + /** * Add an attribute to the section * @@ -432,14 +432,14 @@ } if (attribute.getName().equalsIgnoreCase(ATTRIBUTE_NAME)) { warnings.addElement("\"" + ATTRIBUTE_NAME + "\" attributes should not occur in the " + - "main section and must be the first element in all " + - "other sections: \"" +attribute.getName() + ": " + attribute.getValue() + "\""); + "main section and must be the first element in all " + + "other sections: \"" +attribute.getName() + ": " + attribute.getValue() + "\""); return attribute.getValue(); } - + if (attribute.getName().toLowerCase().startsWith(ATTRIBUTE_FROM.toLowerCase())) { warnings.addElement("Manifest attributes should not start with \"" + - ATTRIBUTE_FROM + "\" in \"" +attribute.getName() + ": " + attribute.getValue() + "\""); + ATTRIBUTE_FROM + "\" in \"" +attribute.getName() + ": " + attribute.getValue() + "\""); } else { // classpath attributes go into a vector @@ -453,7 +453,7 @@ classpathAttrs.addElement(attribute); } else if (attributes.containsKey(attributeName)) { - throw new ManifestException("The attribute \"" + attribute.getName() + "\" may not " + + throw new ManifestException("The attribute \"" + attribute.getName() + "\" may not " + "occur more than once in the same section"); } else { @@ -466,17 +466,17 @@ public Enumeration getWarnings() { return warnings.elements(); } - + public boolean equals(Object rhs) { if (!(rhs instanceof Section)) { return false; } - + Section rhsSection = (Section)rhs; if (attributes.size() != rhsSection.attributes.size()) { return false; } - + for (Enumeration e = attributes.elements(); e.hasMoreElements();) { Attribute attribute = (Attribute)e.nextElement(); Attribute rshAttribute = (Attribute)rhsSection.attributes.get(attribute.getName().toLowerCase()); @@ -484,30 +484,30 @@ return false; } } - + return true; } - } + } /** The version of this manifest */ private String manifestVersion = DEFAULT_MANIFEST_VERSION; - - /** The main section of this manifest */ + + /** The main section of this manifest */ private Section mainSection = new Section(); - + /** The named sections of this manifest */ private Hashtable sections = new Hashtable(); /** Construct an empty manifest */ public Manifest() { } - + /** * Read a manifest file from the given input stream + * + * @param is the input stream from which the Manifest is read * - * @param is the input stream from which the Manifest is read - * * @throws ManifestException if the manifest is not valid according to the JAR spec * @throws IOException if the manifest cannot be read from the reader. */ @@ -526,12 +526,12 @@ if (line.length() == 0) { continue; } - + Section section = new Section(); if (nextSectionName == null) { Attribute sectionName = new Attribute(line); if (!sectionName.getName().equalsIgnoreCase(ATTRIBUTE_NAME)) { - throw new ManifestException("Manifest sections should start with a \"" + ATTRIBUTE_NAME + + throw new ManifestException("Manifest sections should start with a \"" + ATTRIBUTE_NAME + "\" attribute and not \"" + sectionName.getName() + "\""); } nextSectionName = sectionName.getValue(); @@ -543,24 +543,24 @@ Attribute firstAttribute = new Attribute(line); section.addAttributeAndCheck(firstAttribute); } - + section.setName(nextSectionName); nextSectionName = section.read(reader); addConfiguredSection(section); } } - + public void addConfiguredSection(Section section) throws ManifestException { if (section.getName() == null) { throw new BuildException("Sections must have a name"); } sections.put(section.getName().toLowerCase(), section); } - + public void addConfiguredAttribute(Attribute attribute) throws ManifestException { mainSection.addConfiguredAttribute(attribute); } - + /** * Merge the contents of the given manifest into this manifest * @@ -583,9 +583,9 @@ ourSection.merge(otherSection); } } - + } - + /** * Write the manifest out to a print writer. * @@ -609,13 +609,13 @@ // shouldn't happen - ignore } } - + for (Enumeration e = sections.elements(); e.hasMoreElements();) { Section section = (Section)e.nextElement(); section.write(writer); } } - + /** * Convert the manifest to its string representation * @@ -631,7 +631,7 @@ } return sw.toString(); } - + /** * Get the warnings for this manifest. * @@ -639,11 +639,11 @@ */ public Enumeration getWarnings() { Vector warnings = new Vector(); - + for (Enumeration e2 = mainSection.getWarnings(); e2.hasMoreElements();) { warnings.addElement(e2.nextElement()); } - + // create a vector and add in the warnings for all the sections for (Enumeration e = sections.elements(); e.hasMoreElements();) { Section section = (Section)e.nextElement(); @@ -651,15 +651,15 @@ warnings.addElement(e2.nextElement()); } } - + return warnings.elements(); } - + public boolean equals(Object rhs) { if (!(rhs instanceof Manifest)) { return false; } - + Manifest rhsManifest = (Manifest)rhs; if (!manifestVersion.equals(rhsManifest.manifestVersion)) { return false; @@ -667,11 +667,11 @@ if (sections.size() != rhsManifest.sections.size()) { return false; } - + if (!mainSection.equals(rhsManifest.mainSection)) { return false; } - + for (Enumeration e = sections.elements(); e.hasMoreElements();) { Section section = (Section)e.nextElement(); Section rhsSection = (Section)rhsManifest.sections.get(section.getName().toLowerCase()); @@ -679,7 +679,7 @@ return false; } } - + return true; } } -- To unsubscribe, e-mail: For additional commands, e-mail: