git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272207 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,89 @@ | |||||
| /* | |||||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||||
| * | |||||
| * This software is published under the terms of the Apache Software License | |||||
| * version 1.1, a copy of which has been included with this distribution in | |||||
| * the LICENSE.txt file. | |||||
| */ | |||||
| package org.apache.antlib.extensions; | |||||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||||
| import org.apache.avalon.excalibur.i18n.Resources; | |||||
| import org.apache.myrmidon.api.TaskException; | |||||
| /** | |||||
| * Simple holder for extra attributes in main section of manifest. | |||||
| * | |||||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||||
| * @version $Revision$ $Date$ | |||||
| * @todo Refactor this and all the other parameter, sysproperty, | |||||
| * property etc into a single class in framework | |||||
| */ | |||||
| public class ExtraAttribute | |||||
| { | |||||
| private static final Resources REZ = | |||||
| ResourceManager.getPackageResources( ExtraAttribute.class ); | |||||
| private String m_name; | |||||
| private String m_value; | |||||
| /** | |||||
| * Set the name of the parameter. | |||||
| * | |||||
| * @param name the name of parameter | |||||
| */ | |||||
| public void setName( final String name ) | |||||
| { | |||||
| m_name = name; | |||||
| } | |||||
| /** | |||||
| * Set the value of the parameter. | |||||
| * | |||||
| * @param value the parameter value | |||||
| */ | |||||
| public void setValue( final String value ) | |||||
| { | |||||
| m_value = value; | |||||
| } | |||||
| /** | |||||
| * Retrieve name of parameter. | |||||
| * | |||||
| * @return the name of parameter. | |||||
| */ | |||||
| String getName() | |||||
| { | |||||
| return m_name; | |||||
| } | |||||
| /** | |||||
| * Retrieve the value of parameter. | |||||
| * | |||||
| * @return the value of parameter. | |||||
| */ | |||||
| String getValue() | |||||
| { | |||||
| return m_value; | |||||
| } | |||||
| /** | |||||
| * Make sure that neither the name or the value | |||||
| * is null. | |||||
| */ | |||||
| public void validate() | |||||
| throws TaskException | |||||
| { | |||||
| if( null == m_name ) | |||||
| { | |||||
| final String message = REZ.getString( "param.noname.error" ); | |||||
| throw new TaskException( message ); | |||||
| } | |||||
| else if( null == m_value ) | |||||
| { | |||||
| final String message = | |||||
| REZ.getString( "param.novalue.error", m_name ); | |||||
| throw new TaskException( message ); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -113,6 +113,12 @@ public class JarLibManifestTask | |||||
| */ | */ | ||||
| private String m_implementationURL; | private String m_implementationURL; | ||||
| /** | |||||
| * Extra attributes the user specifies for main section | |||||
| * in manifest. | |||||
| */ | |||||
| private final ArrayList m_extraAttributes = new ArrayList(); | |||||
| /** | /** | ||||
| * Set the name of extension in generated manifest. | * Set the name of extension in generated manifest. | ||||
| * | * | ||||
| @@ -213,6 +219,16 @@ public class JarLibManifestTask | |||||
| m_optionals.addElement( fileSet ); | m_optionals.addElement( fileSet ); | ||||
| } | } | ||||
| /** | |||||
| * Adds an attribute that is to be put in main section of manifest. | |||||
| * | |||||
| * @param attribute an attribute that is to be put in main section of manifest. | |||||
| */ | |||||
| public void addAttribute( final ExtraAttribute attribute ) | |||||
| { | |||||
| m_extraAttributes.add( attribute ); | |||||
| } | |||||
| public void execute() | public void execute() | ||||
| throws TaskException | throws TaskException | ||||
| { | { | ||||
| @@ -224,6 +240,8 @@ public class JarLibManifestTask | |||||
| attributes.put( Attributes.Name.MANIFEST_VERSION, MANIFEST_VERSION ); | attributes.put( Attributes.Name.MANIFEST_VERSION, MANIFEST_VERSION ); | ||||
| attributes.putValue( "Created-By", Constants.BUILD_DESCRIPTION ); | attributes.putValue( "Created-By", Constants.BUILD_DESCRIPTION ); | ||||
| appendExtraAttributes( attributes ); | |||||
| appendExtensionData( attributes ); | appendExtensionData( attributes ); | ||||
| final String extensionKey = Extension.EXTENSION_LIST.toString(); | final String extensionKey = Extension.EXTENSION_LIST.toString(); | ||||
| @@ -269,6 +287,24 @@ public class JarLibManifestTask | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Add any extra attributes to the manifest. | |||||
| * | |||||
| * @param attributes the manifest section to write | |||||
| * attributes to | |||||
| */ | |||||
| private void appendExtraAttributes( final Attributes attributes ) | |||||
| { | |||||
| final Iterator iterator = m_extraAttributes.iterator(); | |||||
| while( iterator.hasNext() ) | |||||
| { | |||||
| final ExtraAttribute attribute = | |||||
| (ExtraAttribute)iterator.next(); | |||||
| attributes.putValue( attribute.getName(), | |||||
| attribute.getValue() ); | |||||
| } | |||||
| } | |||||
| /** | /** | ||||
| * Write out manifest to destfile. | * Write out manifest to destfile. | ||||
| * | * | ||||
| @@ -4,4 +4,7 @@ extension.bad-file.error="{0}" is not a file. | |||||
| manifest.missing-file.error=Destfile attribute not specified. | manifest.missing-file.error=Destfile attribute not specified. | ||||
| manifest.bad-file.error="{0}" is not a file. | manifest.bad-file.error="{0}" is not a file. | ||||
| manifest.file.notice=Generating manifest {0}. | |||||
| manifest.file.notice=Generating manifest {0}. | |||||
| param.noname.error=Missing name from parameter. | |||||
| param.novalue.error=Missing value from parameter "{0}". | |||||
| @@ -341,8 +341,9 @@ Legal: | |||||
| destfile="../../generated-manifest.txt" | destfile="../../generated-manifest.txt" | ||||
| extension-name="org.realityforge.dve" | extension-name="org.realityforge.dve" | ||||
| specification-version="1.0" | specification-version="1.0" | ||||
| specification-vendor="Peter Donald" | |||||
| > | |||||
| specification-vendor="Peter Donald" > | |||||
| <attribute name="Main-class" | |||||
| value="org.realityforg.dve.WorldGen"/> | |||||
| <depends dir="../../"> | <depends dir="../../"> | ||||
| <include name="src/ant1compat/jar/*.jar"/> | <include name="src/ant1compat/jar/*.jar"/> | ||||
| </depends> | </depends> | ||||