aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/Extension.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/Extension.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/Extension.java690
1 files changed, 0 insertions, 690 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/Extension.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/Extension.java
deleted file mode 100644
index d13d2f4e..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/Extension.java
+++ /dev/null
@@ -1,690 +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.optional.extension;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
-
-import org.apache.tools.ant.util.DeweyDecimal;
-import org.apache.tools.ant.util.StringUtils;
-
-/**
- * <p>Utility class that represents either an available "Optional Package"
- * (formerly known as "Standard Extension") as described in the manifest
- * of a JAR file, or the requirement for such an optional package.</p>
- *
- * <p>For more information about optional packages, see the document
- * <em>Optional Package Versioning</em> in the documentation bundle for your
- * Java2 Standard Edition package, in file
- * <code>guide/extensions/versioning.html</code>.</p>
- *
- */
-public final class Extension {
- /**
- * Manifest Attribute Name object for EXTENSION_LIST.
- */
- public static final Attributes.Name EXTENSION_LIST
- = new Attributes.Name("Extension-List");
-
- /**
- * <code>Name</code> object for <code>Optional-Extension-List</code>
- * manifest attribute used for declaring optional dependencies on
- * installed extensions. Note that the dependencies declared by this method
- * are not required for the library to operate but if present will be used.
- * It is NOT part of the official "Optional Package" specification.
- *
- * @see <a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/spec.html#dependency">
- * Installed extension dependency</a>
- */
- public static final Attributes.Name OPTIONAL_EXTENSION_LIST
- = new Attributes.Name("Optional-Extension-List");
-
- /**
- * Manifest Attribute Name object for EXTENSION_NAME.
- */
- public static final Attributes.Name EXTENSION_NAME =
- new Attributes.Name("Extension-Name");
- /**
- * Manifest Attribute Name object for SPECIFICATION_VERSION.
- */
- public static final Attributes.Name SPECIFICATION_VERSION
- = Attributes.Name.SPECIFICATION_VERSION;
-
- /**
- * Manifest Attribute Name object for SPECIFICATION_VENDOR.
- */
- public static final Attributes.Name SPECIFICATION_VENDOR
- = Attributes.Name.SPECIFICATION_VENDOR;
-
- /**
- * Manifest Attribute Name object for IMPLEMENTATION_VERSION.
- */
- public static final Attributes.Name IMPLEMENTATION_VERSION
- = Attributes.Name.IMPLEMENTATION_VERSION;
-
- /**
- * Manifest Attribute Name object for IMPLEMENTATION_VENDOR.
- */
- public static final Attributes.Name IMPLEMENTATION_VENDOR
- = Attributes.Name.IMPLEMENTATION_VENDOR;
-
- /**
- * Manifest Attribute Name object for IMPLEMENTATION_URL.
- */
- public static final Attributes.Name IMPLEMENTATION_URL
- = new Attributes.Name("Implementation-URL");
-
- /**
- * Manifest Attribute Name object for IMPLEMENTATION_VENDOR_ID.
- */
- public static final Attributes.Name IMPLEMENTATION_VENDOR_ID
- = new Attributes.Name("Implementation-Vendor-Id");
-
- /**
- * Enum indicating that extension is compatible with other extension.
- */
- public static final Compatibility COMPATIBLE
- = new Compatibility("COMPATIBLE");
-
- /**
- * Enum indicating that extension requires an upgrade
- * of specification to be compatible with other extension.
- */
- public static final Compatibility REQUIRE_SPECIFICATION_UPGRADE
- = new Compatibility("REQUIRE_SPECIFICATION_UPGRADE");
-
- /**
- * Enum indicating that extension requires a vendor
- * switch to be compatible with other extension.
- */
- public static final Compatibility REQUIRE_VENDOR_SWITCH
- = new Compatibility("REQUIRE_VENDOR_SWITCH");
-
- /**
- * Enum indicating that extension requires an upgrade
- * of implementation to be compatible with other extension.
- */
- public static final Compatibility REQUIRE_IMPLEMENTATION_UPGRADE
- = new Compatibility("REQUIRE_IMPLEMENTATION_UPGRADE");
-
- /**
- * Enum indicating that extension is incompatible with
- * other extension in ways other than other enums
- * indicate). For example the other extension may have
- * a different ID.
- */
- public static final Compatibility INCOMPATIBLE
- = new Compatibility("INCOMPATIBLE");
-
- /**
- * The name of the optional package being made available, or required.
- */
- private String extensionName;
-
- /**
- * The version number (dotted decimal notation) of the specification
- * to which this optional package conforms.
- */
- private DeweyDecimal specificationVersion;
-
- /**
- * The name of the company or organization that originated the
- * specification to which this optional package conforms.
- */
- private String specificationVendor;
-
- /**
- * The unique identifier of the company that produced the optional
- * package contained in this JAR file.
- */
- private String implementationVendorID;
-
- /**
- * The name of the company or organization that produced this
- * implementation of this optional package.
- */
- private String implementationVendor;
-
- /**
- * The version number (dotted decimal notation) for this implementation
- * of the optional package.
- */
- private DeweyDecimal implementationVersion;
-
- /**
- * The URL from which the most recent version of this optional package
- * can be obtained if it is not already installed.
- */
- private String implementationURL;
-
- /**
- * Return an array of <code>Extension</code> objects representing optional
- * packages that are available in the JAR file associated with the
- * specified <code>Manifest</code>. If there are no such optional
- * packages, a zero-length array is returned.
- *
- * @param manifest Manifest to be parsed
- * @return the "available" extensions in specified manifest
- */
- public static Extension[] getAvailable(final Manifest manifest) {
- if (null == manifest) {
- return new Extension[ 0 ];
- }
-
- final ArrayList results = new ArrayList();
-
- final Attributes mainAttributes = manifest.getMainAttributes();
- if (null != mainAttributes) {
- final Extension extension = getExtension("", mainAttributes);
- if (null != extension) {
- results.add(extension);
- }
- }
-
- final Map entries = manifest.getEntries();
- final Iterator keys = entries.keySet().iterator();
- while (keys.hasNext()) {
- final String key = (String) keys.next();
- final Attributes attributes = (Attributes) entries.get(key);
- final Extension extension = getExtension("", attributes);
- if (null != extension) {
- results.add(extension);
- }
- }
-
- return (Extension[]) results.toArray(new Extension[results.size()]);
- }
-
- /**
- * Return the set of <code>Extension</code> objects representing optional
- * packages that are required by the application contained in the JAR
- * file associated with the specified <code>Manifest</code>. If there
- * are no such optional packages, a zero-length list is returned.
- *
- * @param manifest Manifest to be parsed
- * @return the dependencies that are specified in manifest
- */
- public static Extension[] getRequired(final Manifest manifest) {
- return getListed(manifest, Attributes.Name.EXTENSION_LIST);
- }
-
- /**
- * Return the set of <code>Extension</code> objects representing "Optional
- * Packages" that the application declares they will use if present. If
- * there are no such optional packages, a zero-length list is returned.
- *
- * @param manifest Manifest to be parsed
- * @return the optional dependencies that are specified in manifest
- */
- public static Extension[] getOptions(final Manifest manifest) {
- return getListed(manifest, OPTIONAL_EXTENSION_LIST);
- }
-
- /**
- * Add Extension to the specified manifest Attributes.
- *
- * @param attributes the attributes of manifest to add to
- * @param extension the extension
- */
- public static void addExtension(final Extension extension,
- final Attributes attributes) {
- addExtension(extension, "", attributes);
- }
-
- /**
- * Add Extension to the specified manifest Attributes.
- * Use the specified prefix so that dependencies can added
- * with a prefix such as "java3d-" etc.
- *
- * @param attributes the attributes of manifest to add to
- * @param extension the extension
- * @param prefix the name to prefix to extension
- */
- public static void addExtension(final Extension extension,
- final String prefix,
- final Attributes attributes) {
- attributes.putValue(prefix + EXTENSION_NAME,
- extension.getExtensionName());
-
- final String specificationVendor = extension.getSpecificationVendor();
- if (null != specificationVendor) {
- attributes.putValue(prefix + SPECIFICATION_VENDOR,
- specificationVendor);
- }
-
- final DeweyDecimal specificationVersion
- = extension.getSpecificationVersion();
- if (null != specificationVersion) {
- attributes.putValue(prefix + SPECIFICATION_VERSION,
- specificationVersion.toString());
- }
-
- final String implementationVendorID
- = extension.getImplementationVendorID();
- if (null != implementationVendorID) {
- attributes.putValue(prefix + IMPLEMENTATION_VENDOR_ID,
- implementationVendorID);
- }
-
- final String implementationVendor = extension.getImplementationVendor();
- if (null != implementationVendor) {
- attributes.putValue(prefix + IMPLEMENTATION_VENDOR,
- implementationVendor);
- }
-
- final DeweyDecimal implementationVersion
- = extension.getImplementationVersion();
- if (null != implementationVersion) {
- attributes.putValue(prefix + IMPLEMENTATION_VERSION,
- implementationVersion.toString());
- }
-
- final String implementationURL = extension.getImplementationURL();
- if (null != implementationURL) {
- attributes.putValue(prefix + IMPLEMENTATION_URL,
- implementationURL);
- }
- }
-
- /**
- * The constructor to create Extension object.
- * Note that every component is allowed to be specified
- * but only the extensionName is mandatory.
- *
- * @param extensionName the name of extension.
- * @param specificationVersion the specification Version of extension.
- * @param specificationVendor the specification Vendor of extension.
- * @param implementationVersion the implementation Version of extension.
- * @param implementationVendor the implementation Vendor of extension.
- * @param implementationVendorId the implementation VendorId of extension.
- * @param implementationURL the implementation URL of extension.
- */
- public Extension(final String extensionName,
- final String specificationVersion,
- final String specificationVendor,
- final String implementationVersion,
- final String implementationVendor,
- final String implementationVendorId,
- final String implementationURL) {
- this.extensionName = extensionName;
- this.specificationVendor = specificationVendor;
-
- if (null != specificationVersion) {
- try {
- this.specificationVersion
- = new DeweyDecimal(specificationVersion);
- } catch (final NumberFormatException nfe) {
- final String error = "Bad specification version format '"
- + specificationVersion + "' in '" + extensionName
- + "'. (Reason: " + nfe + ")";
- throw new IllegalArgumentException(error);
- }
- }
-
- this.implementationURL = implementationURL;
- this.implementationVendor = implementationVendor;
- this.implementationVendorID = implementationVendorId;
-
- if (null != implementationVersion) {
- try {
- this.implementationVersion
- = new DeweyDecimal(implementationVersion);
- } catch (final NumberFormatException nfe) {
- final String error = "Bad implementation version format '"
- + implementationVersion + "' in '" + extensionName
- + "'. (Reason: " + nfe + ")";
- throw new IllegalArgumentException(error);
- }
- }
-
- if (null == this.extensionName) {
- throw new NullPointerException("extensionName property is null");
- }
- }
-
- /**
- * Get the name of the extension.
- *
- * @return the name of the extension
- */
- public String getExtensionName() {
- return extensionName;
- }
-
- /**
- * Get the vendor of the extensions specification.
- *
- * @return the vendor of the extensions specification.
- */
- public String getSpecificationVendor() {
- return specificationVendor;
- }
-
- /**
- * Get the version of the extensions specification.
- *
- * @return the version of the extensions specification.
- */
- public DeweyDecimal getSpecificationVersion() {
- return specificationVersion;
- }
-
- /**
- * Get the url of the extensions implementation.
- *
- * @return the url of the extensions implementation.
- */
- public String getImplementationURL() {
- return implementationURL;
- }
-
- /**
- * Get the vendor of the extensions implementation.
- *
- * @return the vendor of the extensions implementation.
- */
- public String getImplementationVendor() {
- return implementationVendor;
- }
-
- /**
- * Get the vendorID of the extensions implementation.
- *
- * @return the vendorID of the extensions implementation.
- */
- public String getImplementationVendorID() {
- return implementationVendorID;
- }
-
- /**
- * Get the version of the extensions implementation.
- *
- * @return the version of the extensions implementation.
- */
- public DeweyDecimal getImplementationVersion() {
- return implementationVersion;
- }
-
- /**
- * Return a Compatibility enum indicating the relationship of this
- * <code>Extension</code> with the specified <code>Extension</code>.
- *
- * @param required Description of the required optional package
- * @return the enum indicating the compatibility (or lack thereof)
- * of specified extension
- */
- public Compatibility getCompatibilityWith(final Extension required) {
- // Extension Name must match
- if (!extensionName.equals(required.getExtensionName())) {
- return INCOMPATIBLE;
- }
-
- // Available specification version must be >= required
- final DeweyDecimal requiredSpecificationVersion
- = required.getSpecificationVersion();
- if (null != requiredSpecificationVersion) {
- if (null == specificationVersion
- || !isCompatible(specificationVersion, requiredSpecificationVersion)) {
- return REQUIRE_SPECIFICATION_UPGRADE;
- }
- }
-
- // Implementation Vendor ID must match
- final String requiredImplementationVendorID
- = required.getImplementationVendorID();
- if (null != requiredImplementationVendorID) {
- if (null == implementationVendorID
- || !implementationVendorID.equals(requiredImplementationVendorID)) {
- return REQUIRE_VENDOR_SWITCH;
- }
- }
-
- // Implementation version must be >= required
- final DeweyDecimal requiredImplementationVersion
- = required.getImplementationVersion();
- if (null != requiredImplementationVersion) {
- if (null == implementationVersion
- || !isCompatible(implementationVersion, requiredImplementationVersion)) {
- return REQUIRE_IMPLEMENTATION_UPGRADE;
- }
- }
-
- // This available optional package satisfies the requirements
- return COMPATIBLE;
- }
-
- /**
- * Return <code>true</code> if the specified <code>Extension</code>
- * (which represents an optional package required by an application)
- * is satisfied by this <code>Extension</code> (which represents an
- * optional package that is already installed. Otherwise, return
- * <code>false</code>.
- *
- * @param required Description of the required optional package
- * @return true if the specified extension is compatible with this extension
- */
- public boolean isCompatibleWith(final Extension required) {
- return (COMPATIBLE == getCompatibilityWith(required));
- }
-
- /**
- * Return a String representation of this object.
- *
- * @return string representation of object.
- */
- public String toString() {
- final String brace = ": ";
-
- final StringBuffer sb = new StringBuffer(EXTENSION_NAME.toString());
- sb.append(brace);
- sb.append(extensionName);
- sb.append(StringUtils.LINE_SEP);
-
- if (null != specificationVersion) {
- sb.append(SPECIFICATION_VERSION);
- sb.append(brace);
- sb.append(specificationVersion);
- sb.append(StringUtils.LINE_SEP);
- }
-
- if (null != specificationVendor) {
- sb.append(SPECIFICATION_VENDOR);
- sb.append(brace);
- sb.append(specificationVendor);
- sb.append(StringUtils.LINE_SEP);
- }
-
- if (null != implementationVersion) {
- sb.append(IMPLEMENTATION_VERSION);
- sb.append(brace);
- sb.append(implementationVersion);
- sb.append(StringUtils.LINE_SEP);
- }
-
- if (null != implementationVendorID) {
- sb.append(IMPLEMENTATION_VENDOR_ID);
- sb.append(brace);
- sb.append(implementationVendorID);
- sb.append(StringUtils.LINE_SEP);
- }
-
- if (null != implementationVendor) {
- sb.append(IMPLEMENTATION_VENDOR);
- sb.append(brace);
- sb.append(implementationVendor);
- sb.append(StringUtils.LINE_SEP);
- }
-
- if (null != implementationURL) {
- sb.append(IMPLEMENTATION_URL);
- sb.append(brace);
- sb.append(implementationURL);
- sb.append(StringUtils.LINE_SEP);
- }
-
- return sb.toString();
- }
-
- /**
- * Return <code>true</code> if the first version number is greater than
- * or equal to the second; otherwise return <code>false</code>.
- *
- * @param first First version number (dotted decimal)
- * @param second Second version number (dotted decimal)
- */
- private boolean isCompatible(final DeweyDecimal first,
- final DeweyDecimal second) {
- return first.isGreaterThanOrEqual(second);
- }
-
- /**
- * Retrieve all the extensions listed under a particular key
- * (Usually EXTENSION_LIST or OPTIONAL_EXTENSION_LIST).
- *
- * @param manifest the manifest to extract extensions from
- * @param listKey the key used to get list (Usually
- * EXTENSION_LIST or OPTIONAL_EXTENSION_LIST)
- * @return the list of listed extensions
- */
- private static Extension[] getListed(final Manifest manifest,
- final Attributes.Name listKey) {
- final ArrayList results = new ArrayList();
- final Attributes mainAttributes = manifest.getMainAttributes();
-
- if (null != mainAttributes) {
- getExtension(mainAttributes, results, listKey);
- }
-
- final Map entries = manifest.getEntries();
- final Iterator keys = entries.keySet().iterator();
- while (keys.hasNext()) {
- final String key = (String) keys.next();
- final Attributes attributes = (Attributes) entries.get(key);
- getExtension(attributes, results, listKey);
- }
-
- return (Extension[]) results.toArray(new Extension[results.size()]);
- }
-
- /**
- * Add required optional packages defined in the specified
- * attributes entry, if any.
- *
- * @param attributes Attributes to be parsed
- * @param required list to add required optional packages to
- * @param listKey the key to use to lookup list, usually EXTENSION_LIST
- * or OPTIONAL_EXTENSION_LIST
- */
- private static void getExtension(final Attributes attributes,
- final ArrayList required,
- final Attributes.Name listKey) {
- final String names = attributes.getValue(listKey);
- if (null == names) {
- return;
- }
-
- final String[] extensions = split(names, " ");
- for (int i = 0; i < extensions.length; i++) {
- final String prefix = extensions[ i ] + "-";
- final Extension extension = getExtension(prefix, attributes);
-
- if (null != extension) {
- required.add(extension);
- }
- }
- }
-
- /**
- * Splits the string on every token into an array of strings.
- *
- * @param string the string
- * @param onToken the token
- * @return the resultant array
- */
- private static String[] split(final String string,
- final String onToken) {
- final StringTokenizer tokenizer = new StringTokenizer(string, onToken);
- final String[] result = new String[ tokenizer.countTokens() ];
-
- for (int i = 0; i < result.length; i++) {
- result[ i ] = tokenizer.nextToken();
- }
-
- return result;
- }
-
- /**
- * Extract an Extension from Attributes.
- * Prefix indicates the prefix checked for each string.
- * Usually the prefix is <em>"&lt;extension&gt;-"</em> if looking for a
- * <b>Required</b> extension. If you are looking for an
- * <b>Available</b> extension
- * then the prefix is <em>""</em>.
- *
- * @param prefix the prefix for each attribute name
- * @param attributes Attributes to searched
- * @return the new Extension object, or null
- */
- private static Extension getExtension(final String prefix,
- final Attributes attributes) {
- //WARNING: We trim the values of all the attributes because
- //Some extension declarations are badly defined (ie have spaces
- //after version or vendorID)
- final String nameKey = prefix + EXTENSION_NAME;
- final String name = getTrimmedString(attributes.getValue(nameKey));
- if (null == name) {
- return null;
- }
-
- final String specVendorKey = prefix + SPECIFICATION_VENDOR;
- final String specVendor
- = getTrimmedString(attributes.getValue(specVendorKey));
- final String specVersionKey = prefix + SPECIFICATION_VERSION;
- final String specVersion
- = getTrimmedString(attributes.getValue(specVersionKey));
-
- final String impVersionKey = prefix + IMPLEMENTATION_VERSION;
- final String impVersion
- = getTrimmedString(attributes.getValue(impVersionKey));
- final String impVendorKey = prefix + IMPLEMENTATION_VENDOR;
- final String impVendor
- = getTrimmedString(attributes.getValue(impVendorKey));
- final String impVendorIDKey = prefix + IMPLEMENTATION_VENDOR_ID;
- final String impVendorId
- = getTrimmedString(attributes.getValue(impVendorIDKey));
- final String impURLKey = prefix + IMPLEMENTATION_URL;
- final String impURL = getTrimmedString(attributes.getValue(impURLKey));
-
- return new Extension(name, specVersion, specVendor, impVersion,
- impVendor, impVendorId, impURL);
- }
-
- /**
- * Trim the supplied string if the string is non-null
- *
- * @param value the string to trim or null
- * @return the trimmed string or null
- */
- private static String getTrimmedString(final String value) {
- return null == value ? null : value.trim();
- }
-}