Browse Source

Zap remainder of committed antlibs

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272486 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
495609773e
9 changed files with 0 additions and 1235 deletions
  1. +0
    -174
      proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtensionAdapter.java
  2. +0
    -69
      proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtensionSet.java
  3. +0
    -124
      proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtensionUtil.java
  4. +0
    -89
      proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtraAttribute.java
  5. +0
    -125
      proposal/myrmidon/src/java/org/apache/antlib/extensions/JarLibDisplayTask.java
  6. +0
    -332
      proposal/myrmidon/src/java/org/apache/antlib/extensions/JarLibManifestTask.java
  7. +0
    -119
      proposal/myrmidon/src/java/org/apache/antlib/extensions/LibFileSet.java
  8. +0
    -190
      proposal/myrmidon/src/java/org/apache/antlib/extensions/LibraryDisplayer.java
  9. +0
    -13
      proposal/myrmidon/src/java/org/apache/antlib/extensions/Resources.properties

+ 0
- 174
proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtensionAdapter.java View File

@@ -1,174 +0,0 @@
/*
* 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.extension.DeweyDecimal;
import org.apache.avalon.excalibur.extension.Extension;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;

/**
* Simple class that represents an Extension and conforms to Ants
* patterns.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
* @ant.data-type name="extension"
*/
public class ExtensionAdapter
implements DataType
{
private static final Resources REZ =
ResourceManager.getPackageResources( ExtensionAdapter.class );

/**
* The name of the optional package being made available, or required.
*/
private String m_extensionName;

/**
* The version number (dotted decimal notation) of the specification
* to which this optional package conforms.
*/
private DeweyDecimal m_specificationVersion;

/**
* The name of the company or organization that originated the
* specification to which this optional package conforms.
*/
private String m_specificationVendor;

/**
* The unique identifier of the company that produced the optional
* package contained in this JAR file.
*/
private String m_implementationVendorID;

/**
* The name of the company or organization that produced this
* implementation of this optional package.
*/
private String m_implementationVendor;

/**
* The version number (dotted decimal notation) for this implementation
* of the optional package.
*/
private DeweyDecimal m_implementationVersion;

/**
* The URL from which the most recent version of this optional package
* can be obtained if it is not already installed.
*/
private String m_implementationURL;

/**
* Set the name of extension.
*
* @param extensionName the name of extension
*/
public void setExtensionName( final String extensionName )
{
m_extensionName = extensionName;
}

/**
* Set the specificationVersion of extension.
*
* @param specificationVersion the specificationVersion of extension
*/
public void setSpecificationVersion( final String specificationVersion )
{
m_specificationVersion = new DeweyDecimal( specificationVersion );
}

/**
* Set the specificationVendor of extension.
*
* @param specificationVendor the specificationVendor of extension
*/
public void setSpecificationVendor( final String specificationVendor )
{
m_specificationVendor = specificationVendor;
}

/**
* Set the implementationVendorID of extension.
*
* @param implementationVendorID the implementationVendorID of extension
*/
public void setImplementationVendorID( final String implementationVendorID )
{
m_implementationVendorID = implementationVendorID;
}

/**
* Set the implementationVendor of extension.
*
* @param implementationVendor the implementationVendor of extension
*/
public void setImplementationVendor( final String implementationVendor )
{
m_implementationVendor = implementationVendor;
}

/**
* Set the implementationVersion of extension.
*
* @param implementationVersion the implementationVersion of extension
*/
public void setImplementationVersion( final String implementationVersion )
{
m_implementationVersion = new DeweyDecimal( implementationVersion );
}

/**
* Set the implementationURL of extension.
*
* @param implementationURL the implementationURL of extension
*/
public void setImplementationURL( final String implementationURL )
{
m_implementationURL = implementationURL;
}

/**
* Convert this adpater object into an extension object.
*
* @return the extension object
*/
Extension toExtension()
throws TaskException
{
if( null == m_extensionName )
{
final String message = REZ.getString( "extension.noname.error" );
throw new TaskException( message );
}

String specificationVersion = null;
if( null != m_specificationVersion )
{
specificationVersion = m_specificationVersion.toString();
}
String implementationVersion = null;
if( null != m_implementationVersion )
{
implementationVersion = m_implementationVersion.toString();
}
return new Extension( m_extensionName,
specificationVersion,
m_specificationVendor,
implementationVersion,
m_implementationVendorID,
m_implementationVendor,
m_implementationURL );
}
}

+ 0
- 69
proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtensionSet.java View File

@@ -1,69 +0,0 @@
/*
* 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 java.util.ArrayList;
import org.apache.avalon.excalibur.extension.Extension;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.DataType;

/**
* The Extension set lists a set of "Optional Packages" /
* "Extensions".
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
* @ant.data-type name="extension-set"
*/
public class ExtensionSet
implements DataType
{
/**
* ExtensionAdapter objects representing extensions.
*/
private final ArrayList m_extensions = new ArrayList();

/**
* Filesets specifying all the extensions wanted.
*/
private final ArrayList m_extensionsFilesets = new ArrayList();

/**
* Adds an extension that this library requires.
*
* @param extensionAdapter an extension that this library requires.
*/
public void addExtension( final ExtensionAdapter extensionAdapter )
{
m_extensions.add( extensionAdapter );
}

/**
* Adds a set of files about which extensions data will be extracted.
*
* @param fileSet a set of files about which extensions data will be extracted.
*/
public void addLibfileset( final LibFileSet fileSet )
{
m_extensionsFilesets.add( fileSet );
}

/**
* Extract a set of Extension objects from the ExtensionSet.
*
* @throws TaskException if an error occurs
*/
public Extension[] toExtensions()
throws TaskException
{
final ArrayList extensions = ExtensionUtil.toExtensions( m_extensions );
ExtensionUtil.extractExtensions( extensions, m_extensionsFilesets );
return (Extension[])extensions.toArray( new Extension[ extensions.size() ] );
}

}

+ 0
- 124
proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtensionUtil.java View File

@@ -1,124 +0,0 @@
/*
* 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 java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.jar.JarFile;
import org.apache.avalon.excalibur.extension.Extension;
import org.apache.myrmidon.api.TaskException;
import org.apache.tools.todo.types.DirectoryScanner;
import org.apache.tools.todo.types.ScannerUtil;

/**
* A set of useful methods relating to extensions.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class ExtensionUtil
{
/**
* Convert a list of extensionAdapter objects to extensions.
*
* @param adapters the list of ExtensionAdapterss to add to convert
* @throws TaskException if an error occurs
*/
static ArrayList toExtensions( final ArrayList adapters )
throws TaskException
{
final ArrayList results = new ArrayList();

final int size = adapters.size();
for( int i = 0; i < size; i++ )
{
final ExtensionAdapter adapter =
(ExtensionAdapter)adapters.get( i );
final Extension extension = adapter.toExtension();
results.add( extension );
}

return results;
}

/**
* Generate a list of extensions from a specified fileset.
*
* @param librarys the list to add extensions to
* @param fileset the filesets containing librarys
* @throws TaskException if an error occurs
*/
static void extractExtensions( final ArrayList librarys,
final ArrayList fileset )
throws TaskException
{
if( !fileset.isEmpty() )
{
final Extension[] extensions = getExtensions( fileset );
for( int i = 0; i < extensions.length; i++ )
{
librarys.add( extensions[ i ] );
}
}
}

/**
* Retrieve extensions from the specified librarys.
*
* @param librarys the filesets for librarys
* @return the extensions contained in librarys
* @throws TaskException if failing to scan librarys
*/
private static Extension[] getExtensions( final ArrayList librarys )
throws TaskException
{
final ArrayList extensions = new ArrayList();
final Iterator iterator = librarys.iterator();
while( iterator.hasNext() )
{
final LibFileSet fileSet = (LibFileSet)iterator.next();
final DirectoryScanner scanner = ScannerUtil.getDirectoryScanner( fileSet );
final File basedir = scanner.getBasedir();
final String[] files = scanner.getIncludedFiles();
for( int i = 0; i < files.length; i++ )
{
final File file = new File( basedir, files[ i ] );
loadExtensions( file, extensions );
}
}
return (Extension[])extensions.toArray( new Extension[ extensions.size() ] );
}

/**
* Load list of available extensions from specified file.
*
* @param file the file
* @param extensions the list to add available extensions to
* @throws TaskException if there is an error
*/
private static void loadExtensions( final File file,
final ArrayList extensions )
throws TaskException
{
try
{
final JarFile jarFile = new JarFile( file );
final Extension[] extension =
Extension.getAvailable( jarFile.getManifest() );
for( int i = 0; i < extension.length; i++ )
{
extensions.add( extension[ i ] );
}
}
catch( final Exception e )
{
throw new TaskException( e.getMessage(), e );
}
}
}

+ 0
- 89
proposal/myrmidon/src/java/org/apache/antlib/extensions/ExtraAttribute.java View File

@@ -1,89 +0,0 @@
/*
* 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 );
}
}
}

+ 0
- 125
proposal/myrmidon/src/java/org/apache/antlib/extensions/JarLibDisplayTask.java View File

@@ -1,125 +0,0 @@
/*
* 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 java.io.File;
import java.util.Iterator;
import java.util.Vector;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.FileSet;
import org.apache.tools.todo.types.DirectoryScanner;
import org.apache.tools.todo.types.ScannerUtil;

/**
* Display the "Optional Package" and "Package Specification" information
* contained within the specified jars.
*
* <p>Prior to JDK1.3, an "Optional Package" was known as an Extension.
* The specification for this mechanism is available in the JDK1.3
* documentation in the directory
* $JDK_HOME/docs/guide/extensions/versioning.html. Alternatively it is
* available online at <a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html">
* http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p>
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @ant.task name="jarlib-display"
*/
public class JarLibDisplayTask
extends AbstractTask
{
private final static Resources REZ =
ResourceManager.getPackageResources( JarLibDisplayTask.class );

/**
* The library to display information about.
*/
private File m_file;

/**
* Filesets specifying all the librarys
* to display information about.
*/
private final Vector m_filesets = new Vector();

/**
* The jar library to display information for.
*
* @param file The jar library to display information for.
*/
public void setFile( final File file )
{
m_file = file;
}

/**
* Adds a set of files about which library data will be displayed.
*
* @param fileSet a set of files about which library data will be displayed.
*/
public void addFileset( final FileSet fileSet )
{
m_filesets.addElement( fileSet );
}

public void execute()
throws TaskException
{
validate();

final LibraryDisplayer displayer = new LibraryDisplayer();
// Check if list of files to check has been specified
if( !m_filesets.isEmpty() )
{
final Iterator iterator = m_filesets.iterator();
while( iterator.hasNext() )
{
final FileSet fileSet = (FileSet)iterator.next();
final DirectoryScanner scanner = ScannerUtil.getDirectoryScanner( fileSet );
final File basedir = scanner.getBasedir();
final String[] files = scanner.getIncludedFiles();
for( int i = 0; i < files.length; i++ )
{
final File file = new File( basedir, files[ i ] );
displayer.displayLibrary( file );
}
}
}
else
{
displayer.displayLibrary( m_file );
}
}

/**
* Validate the tasks parameters.
*
* @throws TaskException if invalid parameters found
*/
private void validate()
throws TaskException
{
if( null == m_file && m_filesets.isEmpty() )
{
final String message = REZ.getString( "extension.missing-file.error" );
throw new TaskException( message );
}
if( null != m_file && !m_file.exists() )
{
final String message = REZ.getString( "extension.file-noexist.error", m_file );
throw new TaskException( message );
}
if( null != m_file && !m_file.isFile() )
{
final String message = REZ.getString( "extension.bad-file.error", m_file );
throw new TaskException( message );
}
}
}

+ 0
- 332
proposal/myrmidon/src/java/org/apache/antlib/extensions/JarLibManifestTask.java View File

@@ -1,332 +0,0 @@
/*
* 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 java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import org.apache.avalon.excalibur.extension.Extension;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.avalon.excalibur.io.IOUtil;
import org.apache.myrmidon.Constants;
import org.apache.myrmidon.api.AbstractTask;
import org.apache.myrmidon.api.TaskException;

/**
* Task to generate a manifest that declares all the dependencies
* in manifest. The dependencies are determined by looking in the
* specified path and searching for Extension / "Optional Package"
* specifications in the manifests of the jars.
*
* <p>Prior to JDK1.3, an "Optional Package" was known as an Extension.
* The specification for this mechanism is available in the JDK1.3
* documentation in the directory
* $JDK_HOME/docs/guide/extensions/versioning.html. Alternatively it is
* available online at <a href="http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html">
* http://java.sun.com/j2se/1.3/docs/guide/extensions/versioning.html</a>.</p>
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @ant.task name="jarlib-manifest"
*/
public final class JarLibManifestTask
extends AbstractTask
{
private final static Resources REZ =
ResourceManager.getPackageResources( JarLibManifestTask.class );

/**
* Version of manifest spec that task generates.
*/
private static final String MANIFEST_VERSION = "1.0";

/**
* "Created-By" string used when creating manifest.
*/
private static final String CREATED_BY = "Created-By";

/**
* The library to display information about.
*/
private File m_destfile;

/**
* The extension supported by this library (if any).
*/
private Extension m_extension;

/**
* ExtensionAdapter objects representing
* dependencies required by library.
*/
private final ArrayList m_dependencies = new ArrayList();

/**
* ExtensionAdapter objects representing optional
* dependencies required by library.
*/
private final ArrayList m_optionals = new ArrayList();

/**
* Extra attributes the user specifies for main section
* in manifest.
*/
private final ArrayList m_extraAttributes = new ArrayList();

/**
* The location where generated manifest is placed.
*
* @param destfile The location where generated manifest is placed.
*/
public void setDestfile( final File destfile )
{
m_destfile = destfile;
}

/**
* Adds an extension that this library implements.
*
* @param extensionAdapter an extension that this library implements.
*/
public void addExtension( final ExtensionAdapter extensionAdapter )
throws TaskException
{
if( null != m_extension )
{
final String message = REZ.getString( "manifest.multi-extension.error" );
throw new TaskException( message );
}
else
{
m_extension = extensionAdapter.toExtension();
}
}

/**
* Adds a set of extensions that this library requires.
*
* @param extensionSet a set of extensions that this library requires.
*/
public void addDepends( final ExtensionSet extensionSet )
{
m_dependencies.add( extensionSet );
}

/**
* Adds a set of extensions that this library optionally requires.
*
* @param extensionSet a set of extensions that this library optionally requires.
*/
public void addOptions( final ExtensionSet extensionSet )
{
m_optionals.add( extensionSet );
}

/**
* 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()
throws TaskException
{
validate();

final Manifest manifest = new Manifest();
final Attributes attributes = manifest.getMainAttributes();

attributes.put( Attributes.Name.MANIFEST_VERSION, MANIFEST_VERSION );
attributes.putValue( CREATED_BY, Constants.BUILD_DESCRIPTION );

appendExtraAttributes( attributes );

if( null != m_extension )
{
Extension.addExtension( m_extension, attributes );
}

//Add all the dependency data to manifest for dependencies
final ArrayList depends = toExtensions( m_dependencies );
appendExtensionList( attributes,
Extension.EXTENSION_LIST,
"lib",
depends.size() );
appendLibraryList( attributes, "lib", depends );

//Add all the dependency data to manifest for "optional"
//dependencies
final ArrayList option = toExtensions( m_optionals );
appendExtensionList( attributes,
Extension.OPTIONAL_EXTENSION_LIST,
"opt",
option.size() );
appendLibraryList( attributes, "opt", option );

try
{
final String message =
REZ.getString( "manifest.file.notice",
m_destfile.getAbsoluteFile() );
getContext().info( message );
writeManifest( manifest );
}
catch( final IOException ioe )
{
throw new TaskException( ioe.getMessage(), ioe );
}
}

/**
* Validate the tasks parameters.
*
* @throws TaskException if invalid parameters found
*/
private void validate()
throws TaskException
{
if( null == m_destfile )
{
final String message =
REZ.getString( "manifest.missing-file.error" );
throw new TaskException( message );
}
if( m_destfile.exists() && !m_destfile.isFile() )
{
final String message =
REZ.getString( "manifest.bad-file.error", m_destfile );
throw new TaskException( message );
}
}

/**
* 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.
*
* @param manifest the manifest
* @throws IOException if error writing file
*/
private void writeManifest( final Manifest manifest )
throws IOException
{
FileOutputStream output = null;
try
{
output = new FileOutputStream( m_destfile );
manifest.write( output );
output.flush();
}
finally
{
IOUtil.shutdownStream( output );
}
}

/**
* Append specified extensions to specified attributes.
* Use the extensionKey to list the extensions, usually "Extension-List:"
* for required dependencies and "Optional-Extension-List:" for optional
* dependencies. NOTE: "Optional" dependencies are not part of the
* specification.
*
* @param attributes the attributes to add extensions to
* @param extensions the list of extensions
* @throws TaskException if an error occurs
*/
private void appendLibraryList( final Attributes attributes,
final String listPrefix,
final ArrayList extensions )
throws TaskException
{
final int size = extensions.size();
for( int i = 0; i < size; i++ )
{
final Extension extension = (Extension)extensions.get( i );
final String prefix = listPrefix + i + "-";
Extension.addExtension( extension, prefix, attributes );
}
}

/**
* Append an attribute such as "Extension-List: lib0 lib1 lib2"
* using specified prefix and counting up to specified size.
* Also use specified extensionKey so that can generate list of
* optional dependencies aswell.
*
* @param size the number of librarys to list
* @param listPrefix the prefix for all librarys
* @param attributes the attributes to add key-value to
* @param extensionKey the key to use
*/
private void appendExtensionList( final Attributes attributes,
final Attributes.Name extensionKey,
final String listPrefix,
final int size )
{
final StringBuffer sb = new StringBuffer();
for( int i = 0; i < size; i++ )
{
sb.append( listPrefix + i );
sb.append( ' ' );
}

//add in something like
//"Extension-List: javahelp java3d"
attributes.put( extensionKey, sb.toString() );
}

/**
* Convert a list of ExtensionSet objects to extensions.
*
* @param extensionSets the list of ExtensionSets to add to list
* @throws TaskException if an error occurs
*/
private static ArrayList toExtensions( final ArrayList extensionSets )
throws TaskException
{
final ArrayList results = new ArrayList();

final int size = extensionSets.size();
for( int i = 0; i < size; i++ )
{
final ExtensionSet set = (ExtensionSet)extensionSets.get( i );
final Extension[] extensions = set.toExtensions();
for( int j = 0; j < extensions.length; j++ )
{
results.add( extensions[ j ] );
}
}

return results;
}
}

+ 0
- 119
proposal/myrmidon/src/java/org/apache/antlib/extensions/LibFileSet.java View File

@@ -1,119 +0,0 @@
/*
* 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.myrmidon.framework.FileSet;

/**
* LibFileSet represents a fileset containing libraries.
* Asociated with the libraries is data pertaining to
* how they are to be handled when building manifests.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
public class LibFileSet
extends FileSet
{
/**
* Flag indicating whether should include the
* "Implementation-URL" attribute in manifest.
* Defaults to false.
*/
private boolean m_includeURL;

/**
* Flag indicating whether should include the
* "Implementation-*" attributes in manifest.
* Defaults to false.
*/
private boolean m_includeImpl;

/**
* String that is the base URL for the librarys
* when constructing the "Implementation-URL"
* attribute. For instance setting the base to
* "http://jakarta.apache.org/avalon/libs/" and then
* including the library "excalibur-cli-1.0.jar" in the
* fileset will result in the "Implementation-URL" attribute
* being set to "http://jakarta.apache.org/avalon/libs/excalibur-cli-1.0.jar"
*
* Note this is only used if the library does not define
* "Implementation-URL" itself.
*
* Note that this also implies includeURL=true
*/
private String m_urlBase;

/**
* Flag indicating whether should include the
* "Implementation-URL" attribute in manifest.
* Defaults to false.
*
* @param includeURL the flag
* @see #m_includeURL
*/
public void setIncludeURL( boolean includeURL )
{
m_includeURL = includeURL;
}

/**
* Flag indicating whether should include the
* "Implementation-*" attributes in manifest.
* Defaults to false.
*
* @param includeImpl the flag
* @see #m_includeImpl
*/
public void setIncludeImpl( boolean includeImpl )
{
m_includeImpl = includeImpl;
}

/**
* Set the url base for fileset.
*
* @param urlBase the base url
* @see #m_urlBase
*/
public void setUrlBase( String urlBase )
{
m_urlBase = urlBase;
}

/**
* Get the includeURL flag.
*
* @return the includeURL flag.
*/
boolean isIncludeURL()
{
return m_includeURL;
}

/**
* Get the includeImpl flag.
*
* @return the includeImpl flag.
*/
boolean isIncludeImpl()
{
return m_includeImpl;
}

/**
* Get the urlbase.
*
* @return the urlbase.
*/
String getUrlBase()
{
return m_urlBase;
}
}

+ 0
- 190
proposal/myrmidon/src/java/org/apache/antlib/extensions/LibraryDisplayer.java View File

@@ -1,190 +0,0 @@
/*
* 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 java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import org.apache.avalon.excalibur.extension.Extension;
import org.apache.avalon.excalibur.extension.Specification;
import org.apache.myrmidon.api.TaskException;

/**
* Utility class to output the information in a jar relating
* to "Optional Packages" (formely known as "Extensions")
* and Package Specifications.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision$ $Date$
*/
class LibraryDisplayer
{
/**
* Display the extensions and specifications contained
* within specified file.
*
* @param file the file
* @throws TaskException if fail to read file
*/
void displayLibrary( final File file )
throws TaskException
{
final Manifest manifest = getManifest( file );
displayLibrary( file, manifest );
}

/**
* Display the extensions and specifications contained
* within specified file.
*
* @param file the file to use while reporting
* @param manifest the manifest of file
* @throws TaskException if fail to read file
*/
void displayLibrary( final File file,
final Manifest manifest )
throws TaskException
{
final Extension[] available = Extension.getAvailable( manifest );
final Extension[] required = Extension.getRequired( manifest );
final Extension[] options = Extension.getOptions( manifest );
final Specification[] specifications = getSpecifications( manifest );

if( 0 == available.length &&
0 == required.length &&
0 == options.length &&
0 == specifications.length )
{
return;
}

final String message = "File: " + file;
final int size = message.length();
printLine( size );
System.out.println( message );
printLine( size );
if( 0 != available.length )
{
System.out.println( "Extensions Supported By Library:" );
for( int i = 0; i < available.length; i++ )
{
final Extension extension = available[ i ];
System.out.println( extension.toString() );
}
}

if( 0 != required.length )
{
System.out.println( "Extensions Required By Library:" );
for( int i = 0; i < required.length; i++ )
{
final Extension extension = required[ i ];
System.out.println( extension.toString() );
}
}

if( 0 != options.length )
{
System.out.println( "Extensions that will be used by Library if present:" );
for( int i = 0; i < options.length; i++ )
{
final Extension extension = options[ i ];
System.out.println( extension.toString() );
}
}

if( 0 != specifications.length )
{
System.out.println( "Specifications Supported By Library:" );
for( int i = 0; i < specifications.length; i++ )
{
final Specification specification = specifications[ i ];
displaySpecification( specification );
}
}
}

/**
* Print out a line of '-'s equal to specified size.
*
* @param size the number of dashes to printout
*/
private void printLine( final int size )
{
for( int i = 0; i < size; i++ )
{
System.out.print( "-" );
}
System.out.println();
}

/**
* Get specifications from manifest.
*
* @param manifest the manifest
* @return the specifications or null if none
* @throws TaskException if malformed specification sections
*/
private Specification[] getSpecifications( final Manifest manifest )
throws TaskException
{
try
{
return Specification.getSpecifications( manifest );
}
catch( final ParseException pe )
{
throw new TaskException( pe.getMessage(), pe );
}
}

/**
* Print out specification details.
*
* @param specification the specification
*/
private void displaySpecification( final Specification specification )
{
final String[] sections = specification.getSections();
if( null != sections )
{
final StringBuffer sb = new StringBuffer( "Sections: " );
for( int i = 0; i < sections.length; i++ )
{
sb.append( " " );
sb.append( sections[ i ] );
}
System.out.println( sb );
}
System.out.println( specification.toString() );
}

/**
* retrieve manifest for specified file.
*
* @param file the file
* @return the manifest
* @throws org.apache.myrmidon.api.TaskException if errror occurs (file not exist,
* file not a jar, manifest not exist in file)
*/
private Manifest getManifest( final File file )
throws TaskException
{
try
{
final JarFile jarFile = new JarFile( file );
return jarFile.getManifest();
}
catch( final IOException ioe )
{
throw new TaskException( ioe.getMessage(), ioe );
}
}
}

+ 0
- 13
proposal/myrmidon/src/java/org/apache/antlib/extensions/Resources.properties View File

@@ -1,13 +0,0 @@
extension.missing-file.error=File attribute not specified.
extension.file-noexist.error=File "{0}" does not exist.
extension.bad-file.error="{0}" is not a file.

manifest.missing-file.error=Destfile attribute not specified.
manifest.bad-file.error="{0}" is not a file.
manifest.file.notice=Generating manifest {0}.
manifest.multi-extension.error=Can not have multiple extensions defined in one library.

param.noname.error=Missing name from parameter.
param.novalue.error=Missing value from parameter "{0}".

extension.noname.error=Extension is missing name.

Loading…
Cancel
Save