diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionAdapter.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionAdapter.java | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionAdapter.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionAdapter.java new file mode 100644 index 00000000..b3cfddc2 --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionAdapter.java @@ -0,0 +1,215 @@ +/* + * 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 org.apache.tools.ant.BuildException; +import org.apache.tools.ant.types.DataType; +import org.apache.tools.ant.types.Reference; +import org.apache.tools.ant.util.DeweyDecimal; + +/** + * Simple class that represents an Extension and conforms to Ants + * patterns. + * + * @ant.datatype name="extension" + */ +public class ExtensionAdapter extends DataType { + /** + * 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; + + /** + * Set the name of extension. + * + * @param extensionName the name of extension + */ + public void setExtensionName(final String extensionName) { + verifyNotAReference(); + this.extensionName = extensionName; + } + + /** + * Set the specificationVersion of extension. + * + * @param specificationVersion the specificationVersion of extension + */ + public void setSpecificationVersion(final String specificationVersion) { + verifyNotAReference(); + this.specificationVersion = new DeweyDecimal(specificationVersion); + } + + /** + * Set the specificationVendor of extension. + * + * @param specificationVendor the specificationVendor of extension + */ + public void setSpecificationVendor(final String specificationVendor) { + verifyNotAReference(); + this.specificationVendor = specificationVendor; + } + + /** + * Set the implementationVendorID of extension. + * + * @param implementationVendorID the implementationVendorID of extension + */ + public void setImplementationVendorId(final String implementationVendorID) { + verifyNotAReference(); + this.implementationVendorID = implementationVendorID; + } + + /** + * Set the implementationVendor of extension. + * + * @param implementationVendor the implementationVendor of extension + */ + public void setImplementationVendor(final String implementationVendor) { + verifyNotAReference(); + this.implementationVendor = implementationVendor; + } + + /** + * Set the implementationVersion of extension. + * + * @param implementationVersion the implementationVersion of extension + */ + public void setImplementationVersion(final String implementationVersion) { + verifyNotAReference(); + this.implementationVersion = new DeweyDecimal(implementationVersion); + } + + /** + * Set the implementationURL of extension. + * + * @param implementationURL the implementationURL of extension + */ + public void setImplementationUrl(final String implementationURL) { + verifyNotAReference(); + this.implementationURL = implementationURL; + } + + /** + * Makes this instance in effect a reference to another ExtensionAdapter + * instance. + * + * <p>You must not set another attribute or nest elements inside + * this element if you make it a reference.</p> + * + * @param reference the reference to which this instance is associated + * @exception BuildException if this instance already has been configured. + */ + public void setRefid(final Reference reference) + throws BuildException { + if (null != extensionName + || null != specificationVersion + || null != specificationVendor + || null != implementationVersion + || null != implementationVendorID + || null != implementationVendor + || null != implementationURL) { + throw tooManyAttributes(); + } + super.setRefid(reference); + } + + private void verifyNotAReference() + throws BuildException { + if (isReference()) { + throw tooManyAttributes(); + } + } + + /** + * Convert this adpater object into an extension object. + * + * @return the extension object + */ + Extension toExtension() + throws BuildException { + if (isReference()) { + return ((ExtensionAdapter) getCheckedRef()).toExtension(); + } + dieOnCircularReference(); + if (null == extensionName) { + final String message = "Extension is missing name."; + throw new BuildException(message); + } + + String specificationVersionString = null; + if (null != specificationVersion) { + specificationVersionString = specificationVersion.toString(); + } + String implementationVersionString = null; + if (null != implementationVersion) { + implementationVersionString = implementationVersion.toString(); + } + return new Extension(extensionName, + specificationVersionString, + specificationVendor, + implementationVersionString, + implementationVendor, + implementationVendorID, + implementationURL); + } + + /** + * a debug toString method. + * @return the extension in a string. + * @see java.lang.Object#toString() + */ + public String toString() { + return "{" + toExtension().toString() + "}"; + } +} |