bloritsch 2003/07/07 09:50:43 Modified: compatibility/src/xdocs index.xml compatibility project.xml component/examples/instrument-manager/conf components.xml instrument.xml component/examples/instrument-manager project.properties component/src/xdocs index.xml component project.xml configuration project.properties datasource project.properties event project.properties extension/src/xdocs index.xml i18n/src/xdocs book.xml instrument/src/xdocs instrumentables.xml instruments.xml lifecycle/src/xdocs extension.xml logger/src/test/org/apache/avalon/excalibur/logger/test log4j.xml site/src/xdocs index.xml sourceresolve/src/java/org/apache/excalibur/source/impl FTPSource.java FTPSourceFactory.java sourceresolve/src/test/org/apache/excalibur/source/test SourceUtilTestCase.java sourceresolve build.xml fortress-meta.xml xmlutil/src/xdocs index.xml . build.xml depchecker.xml forrestbuild.xml maven-common-gump-build.xml maven.xml project.xml status.xml Added: . Avalon Excalibur.iml Log: Fix CRLF and fix inadvertant adding of intermediate files Revision Changes Path 1.2 +15 -15 avalon-excalibur/compatibility/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/compatibility/src/xdocs/index.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- index.xml 11 Mar 2003 14:08:27 -0000 1.1 +++ index.xml 7 Jul 2003 16:50:40 -0000 1.2 @@ -12,30 +12,30 @@ <section><title>Introduction</title> <p> Avalon is minimizing the number of projects and utilities it maintains - because we need to focus on our charter. However, we do have users - who have used some of the projects that were previously released. We - can't just ignore their needs. The compatibility project is the - graveyard for projects we are no longer supporting. It exists simply - to let our users (and in some cases, our users' users) continue to - use their legacy components until they migrate to better supported - libraries. + because we need to focus on our charter. However, we do have users + who have used some of the projects that were previously released. We + can't just ignore their needs. The compatibility project is the + graveyard for projects we are no longer supporting. It exists simply + to let our users (and in some cases, our users' users) continue to + use their legacy components until they migrate to better supported + libraries. </p> <p> Most of the packages in this project have replacement libraries, but - it is inevitable that some in here may not have a replacement yet-- - but the package falls outside our charter. If you would like to - volunteer to maintain those packages in your own library, please - contact the <link href="mailto:[EMAIL PROTECTED]">Avalon + it is inevitable that some in here may not have a replacement yet-- + but the package falls outside our charter. If you would like to + volunteer to maintain those packages in your own library, please + contact the <link href="mailto:[EMAIL PROTECTED]">Avalon Developer's List</link> and let them know of your availability. Packages with a definite and released replacement will be completely - deprecated and point to the new classes in the new library. + deprecated and point to the new classes in the new library. </p> </section> <section><title>Contents</title> <p> Currently the Compatibility has the packages in the following list. - If the package has a replacement, then the replacement will be listed - as well: + If the package has a replacement, then the replacement will be listed + as well: </p> <ul> <li>org.apache.avalon.excalibur.cli --> <link href="http://jakarta.apache.org/commons/cli/index.html">Jakarta Commons CLI</link></li> 1.5 +1 -1 avalon-excalibur/compatibility/project.xml Index: project.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/compatibility/project.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- project.xml 7 Jun 2003 15:12:19 -0000 1.4 +++ project.xml 7 Jul 2003 16:50:40 -0000 1.5 @@ -28,4 +28,4 @@ library. </description> -</project> \ No newline at end of file +</project> 1.3 +1 -1 avalon-excalibur/component/examples/instrument-manager/conf/components.xml Index: components.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/component/examples/instrument-manager/conf/components.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- components.xml 16 Aug 2002 03:44:14 -0000 1.2 +++ components.xml 7 Jul 2003 16:50:40 -0000 1.3 @@ -3,4 +3,4 @@ <!-- Application components. --> <!-- =============================================================== --> <example-instrumentable logger="example-instrumentable"/> -</components> \ No newline at end of file +</components> 1.3 +1 -1 avalon-excalibur/component/examples/instrument-manager/conf/instrument.xml Index: instrument.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/component/examples/instrument-manager/conf/instrument.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- instrument.xml 16 Aug 2002 03:44:14 -0000 1.2 +++ instrument.xml 7 Jul 2003 16:50:40 -0000 1.3 @@ -87,4 +87,4 @@ </instrument> </instrumentable> </instrumentables> -</instrument> \ No newline at end of file +</instrument> 1.2 +1 -1 avalon-excalibur/component/examples/instrument-manager/project.properties Index: project.properties =================================================================== RCS file: /home/cvs/avalon-excalibur/component/examples/instrument-manager/project.properties,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- project.properties 7 Jun 2003 19:19:15 -0000 1.1 +++ project.properties 7 Jul 2003 16:50:40 -0000 1.2 @@ -3,4 +3,4 @@ # P R O J E C T P R O P E R T I E S # ------------------------------------------------------------------- maven.repo.remote = http://lsd.student.utwente.nl/repository,http://www.apache.org/dist/avalon,http://www.ibiblio.org/maven - \ No newline at end of file + 1.10 +9 -9 avalon-excalibur/component/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/component/src/xdocs/index.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- index.xml 7 Jul 2003 16:31:13 -0000 1.9 +++ index.xml 7 Jul 2003 16:50:40 -0000 1.10 @@ -33,17 +33,17 @@ <section><title>Automated Component Management</title> <p> The <code>org.apache.avalon.excalibur.component</code> package - in Excalibur will allow you to manage components specified in - a configuration file. The beauty of this approach is that the - ComponentManagers and ComponentSelectors become the Container - and automagically maintain your Component's lifecycle. + in Excalibur will allow you to manage components specified in + a configuration file. The beauty of this approach is that the + ComponentManagers and ComponentSelectors become the Container + and automagically maintain your Component's lifecycle. </p> <p> The Excalibur Component Management infrastructure uses a - RoleManager to help your configuration files remain readable. - All classes are instantiated using the current thread's - ContextClassLoader--unless you pass a different one in the - constructor. + RoleManager to help your configuration files remain readable. + All classes are instantiated using the current thread's + ContextClassLoader--unless you pass a different one in the + constructor. </p> </section> <section><title>The Developing with Avalon paper</title> 1.2 +1 -1 avalon-excalibur/component/project.xml Index: project.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/component/project.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- project.xml 7 Jun 2003 16:30:24 -0000 1.1 +++ project.xml 7 Jul 2003 16:50:40 -0000 1.2 @@ -73,4 +73,4 @@ <properties> <use-forrest>true</use-forrest> </properties> -</project> \ No newline at end of file +</project> 1.2 +1 -1 avalon-excalibur/configuration/project.properties Index: project.properties =================================================================== RCS file: /home/cvs/avalon-excalibur/configuration/project.properties,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- project.properties 7 Jun 2003 16:43:52 -0000 1.1 +++ project.properties 7 Jul 2003 16:50:40 -0000 1.2 @@ -3,4 +3,4 @@ # P R O J E C T P R O P E R T I E S # ------------------------------------------------------------------- maven.repo.remote = http://lsd.student.utwente.nl/repository,http://www.apache.org/dist/avalon,http://www.ibiblio.org/maven - \ No newline at end of file + 1.4 +1 -1 avalon-excalibur/datasource/project.properties Index: project.properties =================================================================== RCS file: /home/cvs/avalon-excalibur/datasource/project.properties,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- project.properties 7 Jun 2003 19:21:06 -0000 1.3 +++ project.properties 7 Jul 2003 16:50:40 -0000 1.4 @@ -3,4 +3,4 @@ # P R O J E C T P R O P E R T I E S # ------------------------------------------------------------------- maven.repo.remote = http://lsd.student.utwente.nl/repository,http://www.apache.org/dist/avalon,http://www.ibiblio.org/maven - \ No newline at end of file + 1.7 +1 -1 avalon-excalibur/event/project.properties Index: project.properties =================================================================== RCS file: /home/cvs/avalon-excalibur/event/project.properties,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- project.properties 7 Jun 2003 19:26:23 -0000 1.6 +++ project.properties 7 Jul 2003 16:50:41 -0000 1.7 @@ -3,4 +3,4 @@ # P R O J E C T P R O P E R T I E S # ------------------------------------------------------------------- maven.repo.remote = http://lsd.student.utwente.nl/repository,http://www.apache.org/dist/avalon,http://www.ibiblio.org/maven - \ No newline at end of file + 1.7 +1 -1 avalon-excalibur/extension/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/extension/src/xdocs/index.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- index.xml 8 Aug 2002 05:11:23 -0000 1.6 +++ index.xml 7 Jul 2003 16:50:41 -0000 1.7 @@ -21,4 +21,4 @@ </p> </s1> </body> -</document> \ No newline at end of file +</document> 1.7 +1 -1 avalon-excalibur/i18n/src/xdocs/book.xml Index: book.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/i18n/src/xdocs/book.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- book.xml 27 Feb 2003 19:18:25 -0000 1.6 +++ book.xml 7 Jul 2003 16:50:41 -0000 1.7 @@ -2,7 +2,7 @@ <!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN" "book-cocoon-v10.dtd"> <book software="Excalibur Fortress" - title="Excalibur Fortress" + title="Excalibur Fortress" copyright="@year@ The Apache Software Foundation" xmlns:xlink="http://www.w3.org/1999/xlink"> 1.8 +7 -7 avalon-excalibur/instrument/src/xdocs/instrumentables.xml Index: instrumentables.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/instrument/src/xdocs/instrumentables.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- instrumentables.xml 26 Mar 2003 10:40:23 -0000 1.7 +++ instrumentables.xml 7 Jul 2003 16:50:41 -0000 1.8 @@ -34,13 +34,13 @@ The third and fourth methods, getInstruments and getChildInstrumentables, are each called once by an InstrumentManager to query the Instrumentable for a list of the Instruments and child Instrumentables that it is making available. - </p> - <!-- temporarily commented out until there is some content + </p> + <!-- temporarily commented out until there is some content <p> - Please see the <link href="instrumentable-howto.html">Instrumentable How-To</link> + Please see the <link href="instrumentable-howto.html">Instrumentable How-To</link> for an example. - </p> - --> + </p> + --> <p> Implementing the Instrumentable interface directly requires a little bit of work, but is necessary in cases where the parent class can not be controlled. In most @@ -54,9 +54,9 @@ classpath.) </p> <p> - <!-- Please see the + <!-- Please see the <link href="abstract-instrumentable-howto.html">AbstractInstrumentable How-To</link> - for an example. --> An example of the AbstractLogEnabledInstrumentable helper class is + for an example. --> An example of the AbstractLogEnabledInstrumentable helper class is not included as its usage is identical to AbstractInstrumentable. </p> </section> 1.4 +1 -1 avalon-excalibur/instrument/src/xdocs/instruments.xml Index: instruments.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/instrument/src/xdocs/instruments.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- instruments.xml 28 Feb 2003 16:26:04 -0000 1.3 +++ instruments.xml 7 Jul 2003 16:50:41 -0000 1.4 @@ -23,7 +23,7 @@ where an InstrumentManager is not present, or where it is present but output is not currently being collected, the Instrument effectively becomes a noop. </p> - <p> + <p> There are currently two types of Instruments available for use by components. So far they have proven to be enough to profile any type of quantitative information. 1.3 +13 -13 avalon-excalibur/lifecycle/src/xdocs/extension.xml Index: extension.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/lifecycle/src/xdocs/extension.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- extension.xml 11 Mar 2003 15:53:56 -0000 1.2 +++ extension.xml 7 Jul 2003 16:50:41 -0000 1.3 @@ -82,9 +82,9 @@ </p> <ol> - <li>Define the new component interface + <li>Define the new component interface - <br/><br/> + <br/><br/> Create the new interface defining the operations that should be called upon components that implement this interface. Using the previously mentioned examples, this would be your <code>SecurityManageable</code>, <code>Cacheable</code>, <code>Decryptable</code>, @@ -92,9 +92,9 @@ </li> <li>Define an extension object that calls upon the methods defined in the new interface, - during one or more of the pre-defined phases of component's lifecycle + during one or more of the pre-defined phases of component's lifecycle - <br/><br/> + <br/><br/> Create a class that implements the <code>Creator</code> and/or <code>Accessor</code> interfaces and implemets the interaction with target components supplied under the create, destroy, access and relase operations. @@ -102,7 +102,7 @@ <li>Register your extension object - <br/><br/> + <br/><br/> This depends on the container you are using. In Merlin you need to include the <extensions> tag in the component .xinfo file and Merlin will automatically recognize it. In Fortress you register the extension object @@ -110,8 +110,8 @@ </li> <li>Implement the new component interface on your component - <br/><br/> - + <br/><br/> + Add the new <code>implements</code> clause to your Component, or Component implementation, and write any methods defined in the implemented interface. <br/><br/> @@ -129,28 +129,28 @@ </p> <ol> - <li>Creation + <li>Creation - <br/><br/> + <br/><br/> When the component is instantiated. </li> <li>Access - <br/><br/> + <br/><br/> When the component is accessed via a ServiceManager/Selector (<code>lookup()/select()</code>). </li> <li>Release - <br/><br/> + <br/><br/> When the component is released via a ServiceManager/Selector (<code>release()</code>). </li> <li>Destruction - <br/><br/> + <br/><br/> When the component is decommissioned, ready for garbage collection. </li> 1.2 +1 -1 avalon-excalibur/logger/src/test/org/apache/avalon/excalibur/logger/test/log4j.xml Index: log4j.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/logger/src/test/org/apache/avalon/excalibur/logger/test/log4j.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- log4j.xml 28 Oct 2002 00:36:03 -0000 1.1 +++ log4j.xml 7 Jul 2003 16:50:41 -0000 1.2 @@ -14,4 +14,4 @@ <appender-ref ref="FILE"/> </root> -</log4j:configuration> \ No newline at end of file +</log4j:configuration> 1.11 +7 -7 avalon-excalibur/site/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/site/src/xdocs/index.xml,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- index.xml 2 Mar 2003 06:58:15 -0000 1.10 +++ index.xml 7 Jul 2003 16:50:41 -0000 1.11 @@ -17,15 +17,15 @@ </p> <p> Not all of the code in excalibur CVS nor all the packages - listed in the menu have been released; some are in an - alpha or planning stage. - Individual packages inside Excalibur that have been released - can be downloaded from - <a href="http://avalon.apache.org/bindownload.cgi">here</a>. + listed in the menu have been released; some are in an + alpha or planning stage. + Individual packages inside Excalibur that have been released + can be downloaded from + <a href="http://avalon.apache.org/bindownload.cgi">here</a>. </p> <warn> Packages that have not been officially released are of varying - quality and/or stability. They are <strong>NOT</strong> + quality and/or stability. They are <strong>NOT</strong> meant for production use. You have been warned. </warn> </section> 1.3 +295 -295 avalon-excalibur/sourceresolve/src/java/org/apache/excalibur/source/impl/FTPSource.java Index: FTPSource.java =================================================================== RCS file: /home/cvs/avalon-excalibur/sourceresolve/src/java/org/apache/excalibur/source/impl/FTPSource.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- FTPSource.java 4 Jul 2003 15:09:49 -0000 1.2 +++ FTPSource.java 7 Jul 2003 16:50:41 -0000 1.3 @@ -71,307 +71,307 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Unico Hommes</a> */ public class FTPSource extends URLSource implements ModifiableSource -{ - - public FTPSource() - { - super(); - } +{ + + public FTPSource() + { + super(); + } - /** - * Can the data sent to an <code>OutputStream</code> returned by - * [EMAIL PROTECTED] #getOutputStream()} be cancelled ? - * - * @return <code>true</code> if the stream can be cancelled - */ - public boolean canCancel( final OutputStream stream ) - { - if (stream instanceof FTPSourceOutputStream) - { - FTPSourceOutputStream fsos = (FTPSourceOutputStream) stream; - if ( fsos.getSource() == this ) - { - return fsos.canCancel(); - } - } + /** + * Can the data sent to an <code>OutputStream</code> returned by + * [EMAIL PROTECTED] #getOutputStream()} be cancelled ? + * + * @return <code>true</code> if the stream can be cancelled + */ + public boolean canCancel( final OutputStream stream ) + { + if (stream instanceof FTPSourceOutputStream) + { + FTPSourceOutputStream fsos = (FTPSourceOutputStream) stream; + if ( fsos.getSource() == this ) + { + return fsos.canCancel(); + } + } - throw new IllegalArgumentException( "The stream is not associated to this source" ); - } + throw new IllegalArgumentException( "The stream is not associated to this source" ); + } - /** - * Cancel the data sent to an <code>OutputStream</code> returned by - * [EMAIL PROTECTED] #getOutputStream()}. - * <p> - * After cancel, the stream should not be used. - */ - public void cancel( final OutputStream stream ) throws IOException - { - if (stream instanceof FTPSourceOutputStream) - { - FTPSourceOutputStream fsos = (FTPSourceOutputStream) stream; - if ( fsos.getSource() == this ) - { - try - { - fsos.cancel(); - } - catch ( Exception e ) - { - throw new SourceException( "Exception during cancel.", e ); - } - return; - } - } + /** + * Cancel the data sent to an <code>OutputStream</code> returned by + * [EMAIL PROTECTED] #getOutputStream()}. + * <p> + * After cancel, the stream should not be used. + */ + public void cancel( final OutputStream stream ) throws IOException + { + if (stream instanceof FTPSourceOutputStream) + { + FTPSourceOutputStream fsos = (FTPSourceOutputStream) stream; + if ( fsos.getSource() == this ) + { + try + { + fsos.cancel(); + } + catch ( Exception e ) + { + throw new SourceException( "Exception during cancel.", e ); + } + return; + } + } - throw new IllegalArgumentException( "The stream is not associated to this source" ); - } + throw new IllegalArgumentException( "The stream is not associated to this source" ); + } - /** - * Delete the source. - */ - public void delete() throws SourceException - { - EnhancedFtpClient ftpClient = null; - try - { - ftpClient = getFtpClient(); - final String relativePath = m_url.getPath().substring( 1 ); - ftpClient.delete( relativePath ); - } - catch ( IOException e ) - { - if ( e instanceof FileNotFoundException ) - { - throw new SourceNotFoundException( e.getMessage() ); - } - else - { - final String message = - "Failure during delete"; - throw new SourceException( message, e ); - } - } - finally - { - if ( ftpClient != null ) - { - try - { - ftpClient.closeServer(); - } - catch ( IOException e ) {} - } - } - } + /** + * Delete the source. + */ + public void delete() throws SourceException + { + EnhancedFtpClient ftpClient = null; + try + { + ftpClient = getFtpClient(); + final String relativePath = m_url.getPath().substring( 1 ); + ftpClient.delete( relativePath ); + } + catch ( IOException e ) + { + if ( e instanceof FileNotFoundException ) + { + throw new SourceNotFoundException( e.getMessage() ); + } + else + { + final String message = + "Failure during delete"; + throw new SourceException( message, e ); + } + } + finally + { + if ( ftpClient != null ) + { + try + { + ftpClient.closeServer(); + } + catch ( IOException e ) {} + } + } + } - /** - * Return an [EMAIL PROTECTED] OutputStream} to write to. - */ - public OutputStream getOutputStream() throws IOException - { - return new FTPSourceOutputStream( this ); - } - - /** - * Creates an FtpClient and logs in the current user. - */ - private final EnhancedFtpClient getFtpClient() - throws IOException - { - final EnhancedFtpClient ftpClient = - new EnhancedFtpClient( m_url.getHost() ); - ftpClient.login( getUser(), getPassword() ); - return ftpClient; - } - - /** - * @return the user part of the user info string, - * <code>null</code> if there is no user info. - */ - private final String getUser() - { - final String userInfo = m_url.getUserInfo(); - if ( userInfo != null ) - { - int index = userInfo.indexOf( ':' ); - if ( index != -1 ) - { - return userInfo.substring( 0, index ); - } - } - return null; - } - - /** - * @return the password part of the user info string, - * <code>null</code> if there is no user info. - */ - private final String getPassword() - { - final String userInfo = m_url.getUserInfo(); - if ( userInfo != null ) - { - int index = userInfo.indexOf( ':' ); - if ( index != -1 && userInfo.length() > index + 1 ) - { - return userInfo.substring( index + 1 ); - } - } - return null; - } - - /** - * Need to extend FtpClient in order to get to protected issueCommand - * and implement additional functionality. - */ - private static class EnhancedFtpClient extends FtpClient - { - - private EnhancedFtpClient( String host ) throws IOException - { - super( host ); - } - - void delete( final String path ) throws IOException - { - issueCommand( "DELE " + path ); - } - - /** - * Create a directory in the current working directory. - */ - void mkdir( final String directoryName ) throws IOException - { - issueCommand( "MKD " + directoryName ); - } - - /** - * Create all directories along a directory path if they - * do not already exist. - * - * The algorithm traverses the directory tree in reversed - * direction. cd'ing first to the deepest level - * and if that directory doesn't exist try cd'ing to its - * parent from where it can be created. - * - * NOTE: after completion the current working directory - * will be the directory identified by directoryPath. - */ - void mkdirs( final String directoryPath ) throws IOException - { - try - { - cd( directoryPath ); - } - catch ( FileNotFoundException e ) - { - // doesn't exist, create it - String directoryName = null; - final int index = directoryPath.lastIndexOf( '/' ); - if ( index != -1 ) - { - final String parentDirectoryPath = - directoryPath.substring( 0, index ); - directoryName = directoryPath.substring( index + 1 ); - mkdirs( parentDirectoryPath ); - } - else - { - directoryName = directoryPath; - } - mkdir( directoryName ); - cd( directoryName ); - } - } - - } - - /** - * Buffers the output in a byte array and only writes to the remote - * FTP location at closing time. - */ - private static class FTPSourceOutputStream extends ByteArrayOutputStream - { - private final FTPSource m_source; - private boolean m_isClosed = false; - - FTPSourceOutputStream( final FTPSource source ) - { - super( 8192 ); - m_source = source; - } - - public void close() throws IOException - { - if ( !m_isClosed ) - { - EnhancedFtpClient ftpClient = null; - OutputStream out = null; - try - { - ftpClient = m_source.getFtpClient(); - String parentPath = null; - String fileName = null; - final String relativePath = m_source.m_url.getPath().substring( 1 ); - final int index = relativePath.lastIndexOf( '/' ); - if ( index != -1 ) - { - parentPath = relativePath.substring( 0, index ); - fileName = relativePath.substring( index + 1 ); - ftpClient.mkdirs( parentPath ); - } - else - { - fileName = relativePath; - } - out = ftpClient.put( fileName ); - final byte[] bytes = toByteArray(); - out.write( bytes ); - } - finally - { - if ( out != null ) - { - try - { - out.close(); - } - catch ( IOException e ) {} - } - if ( ftpClient != null ) - { - try - { - ftpClient.closeServer(); - } - catch ( IOException e ) {} - } - m_isClosed = true; - } - } - } - - boolean canCancel() - { - return !m_isClosed; - } + /** + * Return an [EMAIL PROTECTED] OutputStream} to write to. + */ + public OutputStream getOutputStream() throws IOException + { + return new FTPSourceOutputStream( this ); + } + + /** + * Creates an FtpClient and logs in the current user. + */ + private final EnhancedFtpClient getFtpClient() + throws IOException + { + final EnhancedFtpClient ftpClient = + new EnhancedFtpClient( m_url.getHost() ); + ftpClient.login( getUser(), getPassword() ); + return ftpClient; + } + + /** + * @return the user part of the user info string, + * <code>null</code> if there is no user info. + */ + private final String getUser() + { + final String userInfo = m_url.getUserInfo(); + if ( userInfo != null ) + { + int index = userInfo.indexOf( ':' ); + if ( index != -1 ) + { + return userInfo.substring( 0, index ); + } + } + return null; + } + + /** + * @return the password part of the user info string, + * <code>null</code> if there is no user info. + */ + private final String getPassword() + { + final String userInfo = m_url.getUserInfo(); + if ( userInfo != null ) + { + int index = userInfo.indexOf( ':' ); + if ( index != -1 && userInfo.length() > index + 1 ) + { + return userInfo.substring( index + 1 ); + } + } + return null; + } + + /** + * Need to extend FtpClient in order to get to protected issueCommand + * and implement additional functionality. + */ + private static class EnhancedFtpClient extends FtpClient + { + + private EnhancedFtpClient( String host ) throws IOException + { + super( host ); + } + + void delete( final String path ) throws IOException + { + issueCommand( "DELE " + path ); + } + + /** + * Create a directory in the current working directory. + */ + void mkdir( final String directoryName ) throws IOException + { + issueCommand( "MKD " + directoryName ); + } + + /** + * Create all directories along a directory path if they + * do not already exist. + * + * The algorithm traverses the directory tree in reversed + * direction. cd'ing first to the deepest level + * and if that directory doesn't exist try cd'ing to its + * parent from where it can be created. + * + * NOTE: after completion the current working directory + * will be the directory identified by directoryPath. + */ + void mkdirs( final String directoryPath ) throws IOException + { + try + { + cd( directoryPath ); + } + catch ( FileNotFoundException e ) + { + // doesn't exist, create it + String directoryName = null; + final int index = directoryPath.lastIndexOf( '/' ); + if ( index != -1 ) + { + final String parentDirectoryPath = + directoryPath.substring( 0, index ); + directoryName = directoryPath.substring( index + 1 ); + mkdirs( parentDirectoryPath ); + } + else + { + directoryName = directoryPath; + } + mkdir( directoryName ); + cd( directoryName ); + } + } + + } + + /** + * Buffers the output in a byte array and only writes to the remote + * FTP location at closing time. + */ + private static class FTPSourceOutputStream extends ByteArrayOutputStream + { + private final FTPSource m_source; + private boolean m_isClosed = false; + + FTPSourceOutputStream( final FTPSource source ) + { + super( 8192 ); + m_source = source; + } + + public void close() throws IOException + { + if ( !m_isClosed ) + { + EnhancedFtpClient ftpClient = null; + OutputStream out = null; + try + { + ftpClient = m_source.getFtpClient(); + String parentPath = null; + String fileName = null; + final String relativePath = m_source.m_url.getPath().substring( 1 ); + final int index = relativePath.lastIndexOf( '/' ); + if ( index != -1 ) + { + parentPath = relativePath.substring( 0, index ); + fileName = relativePath.substring( index + 1 ); + ftpClient.mkdirs( parentPath ); + } + else + { + fileName = relativePath; + } + out = ftpClient.put( fileName ); + final byte[] bytes = toByteArray(); + out.write( bytes ); + } + finally + { + if ( out != null ) + { + try + { + out.close(); + } + catch ( IOException e ) {} + } + if ( ftpClient != null ) + { + try + { + ftpClient.closeServer(); + } + catch ( IOException e ) {} + } + m_isClosed = true; + } + } + } + + boolean canCancel() + { + return !m_isClosed; + } - void cancel() throws Exception - { - if ( m_isClosed ) - { - final String message = - "Cannot cancel: outputstrem is already closed"; - throw new IllegalStateException( message ); - } - m_isClosed = true; - } - - FTPSource getSource() - { - return m_source; - } - - } + void cancel() throws Exception + { + if ( m_isClosed ) + { + final String message = + "Cannot cancel: outputstrem is already closed"; + throw new IllegalStateException( message ); + } + m_isClosed = true; + } + + FTPSource getSource() + { + return m_source; + } + + } } 1.2 +15 -15 avalon-excalibur/sourceresolve/src/java/org/apache/excalibur/source/impl/FTPSourceFactory.java Index: FTPSourceFactory.java =================================================================== RCS file: /home/cvs/avalon-excalibur/sourceresolve/src/java/org/apache/excalibur/source/impl/FTPSourceFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FTPSourceFactory.java 24 Jun 2003 12:39:41 -0000 1.1 +++ FTPSourceFactory.java 7 Jul 2003 16:50:41 -0000 1.2 @@ -76,20 +76,20 @@ public final class FTPSourceFactory extends URLSourceFactory implements SourceFactory, ThreadSafe { - public FTPSourceFactory() - { - super(); - } + public FTPSourceFactory() + { + super(); + } - /** - * Creates an FTPSource. - */ - protected Source createURLSource( final URL url, final Map parameters ) - throws MalformedURLException, IOException - { - URLSource result = new FTPSource(); - result.init(url, parameters); - return result; - } - + /** + * Creates an FTPSource. + */ + protected Source createURLSource( final URL url, final Map parameters ) + throws MalformedURLException, IOException + { + URLSource result = new FTPSource(); + result.init(url, parameters); + return result; + } + } 1.5 +2 -2 avalon-excalibur/sourceresolve/src/test/org/apache/excalibur/source/test/SourceUtilTestCase.java Index: SourceUtilTestCase.java =================================================================== RCS file: /home/cvs/avalon-excalibur/sourceresolve/src/test/org/apache/excalibur/source/test/SourceUtilTestCase.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- SourceUtilTestCase.java 10 Jun 2003 14:40:28 -0000 1.4 +++ SourceUtilTestCase.java 7 Jul 2003 16:50:41 -0000 1.5 @@ -126,7 +126,7 @@ assertEquals(-1, SourceUtil.indexOfSchemeColon("h~ttp:foo")); assertEquals(-1, SourceUtil.indexOfSchemeColon("~http:foo")); assertEquals(-1, SourceUtil.indexOfSchemeColon("http~:foo")); - } + } public void testAbsolutize() { 1.45 +7 -7 avalon-excalibur/sourceresolve/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/sourceresolve/build.xml,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- build.xml 2 Jul 2003 13:23:45 -0000 1.44 +++ build.xml 7 Jul 2003 16:50:42 -0000 1.45 @@ -29,7 +29,7 @@ <path id="test.class.path"> <pathelement location="${build.testclasses}"/> <pathelement location="${junit.jar}"/> - <pathelement location="${commons-logging.jar}"/> + <pathelement location="${commons-logging.jar}"/> <path refid="project.class.path"/> </path> <property name="cp" refid="test.class.path"/> @@ -74,8 +74,8 @@ target="1.2"> <classpath refid="project.class.path" /> <include name="**/*.java"/> - <exclude name="**/HTTPClient*" - unless="commons-httpclient.present"/> + <exclude name="**/HTTPClient*" + unless="commons-httpclient.present"/> </javac> <!-- copy resources to same location as .class files --> @@ -110,8 +110,8 @@ target="1.2"> <classpath refid="test.class.path" /> <include name="**/*.java"/> - <exclude name="**/HTTPClient*" - unless="commons-httpclient.present"/> + <exclude name="**/HTTPClient*" + unless="commons-httpclient.present"/> </javac> <copy todir="${build.testclasses}"> @@ -204,8 +204,8 @@ <fileset dir="${build.testclasses}"> <include name="**/test/*TestCase.class"/> <exclude name="**/Abstract*"/> - <exclude name="**/test/HTTPClient*" - unless="commons-httpclient.present"/> + <exclude name="**/test/HTTPClient*" + unless="commons-httpclient.present"/> </fileset> </batchtest> 1.2 +1 -1 avalon-excalibur/sourceresolve/fortress-meta.xml Index: fortress-meta.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/sourceresolve/fortress-meta.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- fortress-meta.xml 23 May 2003 16:13:40 -0000 1.1 +++ fortress-meta.xml 7 Jul 2003 16:50:42 -0000 1.2 @@ -174,4 +174,4 @@ property="fortress.meta.generated"/> </target> -</project> \ No newline at end of file +</project> 1.4 +1 -1 avalon-excalibur/xmlutil/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/xmlutil/src/xdocs/index.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- index.xml 7 Jul 2002 08:00:57 -0000 1.3 +++ index.xml 7 Jul 2003 16:50:42 -0000 1.4 @@ -15,4 +15,4 @@ </p> </section> </body> -</document> \ No newline at end of file +</document> 1.209 +6 -6 avalon-excalibur/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/build.xml,v retrieving revision 1.208 retrieving revision 1.209 diff -u -r1.208 -r1.209 --- build.xml 4 Jun 2003 13:24:15 -0000 1.208 +++ build.xml 7 Jul 2003 16:50:42 -0000 1.209 @@ -87,7 +87,7 @@ </target> <target name="prj-lifecycle"> - <ant dir="lifecycle" target="${subproject-target}"/> + <ant dir="lifecycle" target="${subproject-target}"/> </target> <!-- Logger --> @@ -127,7 +127,7 @@ <!-- Ant to decide on the correct build order. --> <target name="build-all-subprojects" depends="prj-compatibility, - prj-i18n, prj-extension, + prj-i18n, prj-extension, prj-configuration, prj-event, prj-thread, prj-monitor, prj-fortress, prj-datasource, prj-instrument, prj-store, prj-logger, @@ -165,14 +165,14 @@ <pathelement location="instrument/src/client"/> <pathelement location="instrument/src/manager"/> <pathelement location="instrument/src/test"/> - <pathelement location="compatibility/src/java"/> - <pathelement location="compatibility/src/test"/> + <pathelement location="compatibility/src/java"/> + <pathelement location="compatibility/src/test"/> <pathelement location="extension/src/java"/> <pathelement location="extension/src/test"/> <pathelement location="i18n/src/java"/> <pathelement location="i18n/src/test"/> - <pathelement location="lifecycle/src/java"/> - <pathelement location="lifecycle/src/test"/> + <pathelement location="lifecycle/src/java"/> + <pathelement location="lifecycle/src/test"/> <pathelement location="monitor/src/java"/> <pathelement location="monitor/src/test"/> <pathelement location="naming/src/java"/> 1.55 +4 -4 avalon-excalibur/depchecker.xml Index: depchecker.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/depchecker.xml,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- depchecker.xml 15 Jun 2003 16:08:53 -0000 1.54 +++ depchecker.xml 7 Jul 2003 16:50:43 -0000 1.55 @@ -375,8 +375,8 @@ <target name="checkCompatibility"> <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkRequiredFile"> <property name="proj.jar.name" value="excalibur-compatibility-1.0.jar"/> - <property name="path" value="${excalibur-compatibility.jar}"/> - <property name="proj.home" value="${basedir}/../compatibility"/> + <property name="path" value="${excalibur-compatibility.jar}"/> + <property name="proj.home" value="${basedir}/../compatibility"/> </ant> </target> <target name="checkInstrument"> @@ -420,7 +420,7 @@ <target name="checkLifecycle"> <ant antfile="${depchecker.prefix}/depchecker.xml" target="checkRequiredFile"> <property name="proj.jar.name" value="excalibur-lifecycle.jar"/> - <property name="path" value="${excalibur-lifecycle.jar}"/> + <property name="path" value="${excalibur-lifecycle.jar}"/> <property name="proj.home" value="${basedir}/../lifecycle"/> </ant> </target> 1.3 +2 -2 avalon-excalibur/forrestbuild.xml Index: forrestbuild.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/forrestbuild.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- forrestbuild.xml 5 Mar 2003 04:01:41 -0000 1.2 +++ forrestbuild.xml 7 Jul 2003 16:50:43 -0000 1.3 @@ -11,8 +11,8 @@ --> <target name="site" depends="forrest.init" description="Generates static HTML documentation"> - <property name="project.home" value="../"/> - <delete dir="${project.home}/build"/> + <property name="project.home" value="../"/> + <delete dir="${project.home}/build"/> <ant antfile="${forrest.home}/forrest.antproxy.xml" target="site"/> </target> 1.3 +1 -1 avalon-excalibur/maven-common-gump-build.xml Index: maven-common-gump-build.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/maven-common-gump-build.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- maven-common-gump-build.xml 8 Jun 2003 13:51:22 -0000 1.2 +++ maven-common-gump-build.xml 7 Jul 2003 16:50:43 -0000 1.3 @@ -186,4 +186,4 @@ </javadoc> </target> -</project> \ No newline at end of file +</project> 1.5 +1 -1 avalon-excalibur/maven.xml Index: maven.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/maven.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- maven.xml 8 Jun 2003 14:13:37 -0000 1.4 +++ maven.xml 7 Jul 2003 16:50:43 -0000 1.5 @@ -608,4 +608,4 @@ <attainGoal name="excalibur:write-gump-module.xml"/> </goal> -</project> \ No newline at end of file +</project> 1.3 +1 -1 avalon-excalibur/project.xml Index: project.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/project.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- project.xml 7 Jun 2003 15:12:19 -0000 1.2 +++ project.xml 7 Jul 2003 16:50:43 -0000 1.3 @@ -27,4 +27,4 @@ <unitTestSourceDirectory></unitTestSourceDirectory> </build> -</project> \ No newline at end of file +</project> 1.3 +357 -357 avalon-excalibur/status.xml Index: status.xml =================================================================== RCS file: /home/cvs/avalon-excalibur/status.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- status.xml 8 Apr 2003 18:35:29 -0000 1.2 +++ status.xml 7 Jul 2003 16:50:43 -0000 1.3 @@ -1,357 +1,357 @@ -<?xml version="1.0"?> -<!DOCTYPE changes PUBLIC "-//APACHE//DTD Changes V1.1//EN" "changes-v11.dtd"> - -<changes title="Avalon Excalibur History of Changes"> - <devs> - <person name="Berin Loritsch" email="[EMAIL PROTECTED]" id="BL"/> - <person name="Leo Simons" email="[EMAIL PROTECTED]" id="LS"/> - <person name="Peter Donald" email="peter at apache.org" id="PD"/> - <person name="Jeff Turner" email="[EMAIL PROTECTED]" id="JT"/> - <person name="Neeme Praks" email="[EMAIL PROTECTED]" id="NP"/> - <person name="Giacomo Pati" email="[EMAIL PROTECTED]" id="GP"/> - <person name="Paul Hammant" email="[EMAIL PROTECTED]" id="PH"/> - <person name="Leif Mortenson" email="[EMAIL PROTECTED]" id="LM"/> - <person name="Eung-ju Park" email="[EMAIL PROTECTED]" id="EP"/> - <person name="Carston Ziegler" email="[EMAIL PROTECTED]" id="CZ"/> - <person name="Peter Royal" email="[EMAIL PROTECTED]" id="PR"/> - </devs> - <release version="@version@" date="@date@"> - <action dev="PR" type="fix"> - Fixing proxy-based datasource code. - </action> - <action dev="PR" type="fix"> - PriorityFilterTargetFactory throws a ConfigurationException - upon invalid targets - </action> - <action dev="CZ" type="add"> - The ExcaliburComponentSelector does not instantiate a Component - for the hasComponent() test anymore. - </action> - <action dev="CZ" type="add"> - Adding XMLizer to the xmlbundle subproject for converting different - data (identitied by a mime-type) to XML. - </action> - <action dev="CZ" type="add"> - Finished port of Cocoon's source resolver as the new sourceresolve - subproject. - </action> - <action dev="CZ" type="add"> - Added XML Parser role and implementation, EntityResolver role and - some misc. XML support (from Cocoon). - </action> - <action dev="Whole Team" type="add"> - Broken Excalibur from single jar into multiple smaller jars. - </action> - - </release> - <release version="4.1" date="January 30, 2002"> - <action dev="CZ" type="add"> - Initial port of Cocoon's Source resolvers and XML parsers - </action> - <action dev="NP" type="update"> - Added many fixes to the XML Resource Bundles and Resource Bundle - access code. - </action> - <action dev="PD" type="update"> - Update the extension management code and make it more robust. - </action> - <action dev="BL" type="add"> - Add new Container abstraction to separate ComponentManager from - Container code (i.e. ExcaliburComponentManager violates this). - The new ContainerManager and Container abstraction make the system - much easier to manage. - </action> - <action dev="BL" type="add"> - Add new CommandManager architecture to manage all asynchronous - commands and the ThreadManager architecture to manage the thread - allocation policy for the CommandManager. - </action> - <action dev="DP" type="add"> - New component to handle automatic XML Catalog resolution. - </action> - <action dev="EP" type="update"> - Many improvements to the cache component. Extended cache validation - support, multiple store backends, and more. - </action> - <action dev="JT" type="add"> - Add an XPathProcessor abstraction Component with ThreadSafe - implementations for Jaxen and Xalan backed XPath processors. - </action> - <action dev="PD" type="update"> - Made automatic proxy code even more robust. - </action> - <action dev="PD" type="update"> - Add support for recursive property resolution. Added appropriate - unit test to accompany feature. - </action> - <action dev="BL" type="update"> - Optimized pool implementations, and provided a new abstraction for - managed pools (in scratchpad). - </action> - <action dev="GP" type="add"> - Add many new LogTargetFactories to LogKitManager. - </action> - <action dev="BL" type="add"> - Add new LoggerManager abstraction that works with the new framework - Logger abstractions. - </action> - <action dev="PD" type="fix"> - Fixed some classloader issues in the i18n package for loading resources. - Also fixed some i18n related issues in FileUtil and IOUtil. - </action> - <action dev="LM" type="update"> - Applied many optimizations and logic fixes to DataSourceComponent - code. - </action> - <action dev="BL" type="fix"> - Applied fixes to ReadWriteLock from Avi Drissman ([EMAIL PROTECTED]) - </action> - <action dev="BL" type="update"> - Officially deprecate Lock in favor of Mutex. They have the same - purpose, and Mutex is more correct. - </action> - <action dev="BL" type="update"> - Optimize logging calls throughout components. Also, make the log - messages more informative. - </action> - <action dev="PD" type="update"> - ListUtils now checks for duplicates when merging Lists. - </action> - <action dev="PD" type="update"> - Make BinaryHeap and PriorityQueue use Objects instead of Comparables. - Optimize BinaryHeap code. - </action> - <action dev="BL" type="add"> - Add new Buffer classes to the collections package. These are amazingly - performant. It is based on CircularBuffer, which is now deprecated. - </action> - <action dev="BL" type="update"> - Shake out some more performance of CLI Util, as well as better support - for DUPLICATES_ALLOWED. - </action> - <action dev="LM" type="update"> - Added some build improvements. - </action> - <action dev="BL" type="add"> - Add new profiler instrumentation interfaces inspired by Matt Welsh's - SEDA architecture. - </action> - <action dev="BL" type="add"> - Add new asynchronous event queue system inspired by Matt Welsh's - SEDA architecture. - </action> - <action dev="BL" type="update"> - Update all the components to the new LogEnabled interface. - </action> - </release> - <release version="4.0" date="September 11, 2001"> - <action dev="BL" type="update"> - Update user docs. - </action> - <action dev="PD" type="remove"> - Remove dead code in scratchpad. - </action> - <action dev="PD" type="update"> - Rework thread pooling package to a new design. This provides a mechanism - to run a cleanup thread when the JVM is killed. - </action> - <action dev="PD" type="add"> - Add classloader extension framework into the extension package. - </action> - <action dev="PD" type="add"> - Add Container mechanism from Avalon Phoenix. - </action> - <action dev="PD" type="update"> - Add support for recursive property resolution. Added appropriate unit test - to accompany feature. (Property utils). - </action> - <action dev="PD" type="fix"> - Problem Fixed: I've encountered a problem with the SingleThreadedPool in - that it alternatley returns valid and null pooled objects until you've got - the "initial" constructor argument + 1 and then it starts returning - (Poolable)m_factory.newInstance(). Submitted by: "Corey O'Donovan". - </action> - <action dev="BL" type="fix"> - Fix some bugs found by Pool Profiling tests. - </action> - <action dev="BL" type="add"> - Add new resource monitoring facility. This allows you to actively - monitor resources and be notified if they are changed by outside - forces. - </action> - <action dev="DP" type="update"> - Set hierarchy via constructor to allow LogKit to work in sub classloaders. - Submitted By: Sylvain Wallez. - </action> - <action dev="DP" type="update"> - Update FileUtils with methods to count size of a directory, - input argument check, fix javadoc, and method to convert an array of - Files into URLs. - </action> - <action dev="PH" type="add"> - ClassLoaderObjectInputStream moves from Cornerstone to Excalibur. - </action> - <action dev="DP" type="update"> - Promote the i18n ResourceManager code to Excalibur production. - </action> - <action dev="BL" type="update"> - Updated log messages for JdbcConnection--as well as added runtime - detection if no connections could be created. This provides better - reporting if the connection has configuration errors or other mitigating - errors. - </action> - <action dev="BL" type="add"> - Add direct support for Informix connection pooling. Requires the most - recent JDBC drivers from Informix to use this feature. - </action> - <action dev="BL" type="update"> - Deprecated the oradb attribute in JdbcDataSourceComponent, and added a - keepalive element.This way we can test the line with valid SQL statements - no matter what the DB is. Informix had trouble with the "select 1" and I - am sure there are others. - </action> - <action dev="BL" type="fix"> - Fix bugs found by ReadWriteLock Test Case in the concurrent package. - </action> - <action dev="DP" type="update"> - Update component package with support for Paremeterizable components - (patch from Mircea Toma) - </action> - <action dev="BL" type="update"> - Add support to display if an option is required. Patch was from - Tom Jordahl (from xml-axis project). - </action> - <action dev="PD" type="fix" fixes-bug="3255"> - Fixed bug "CLArgsParser loops infinitely on OPTIONAL options" like - "-Fa -B" where F optionally has an argument. Added unit tests to verify - that it has been fixed. - </action> - <action dev="JT" type="update"> - Update javadocs with '@since' tags so that we know when components - have been introduced. - </action> - <action dev="BL" type="update"> - Update JDBC datasource component so that you can specify your keep-alive - query. This is for databases that don't like "SELECT 1;" as a query. - </action> - <action dev="GP" type="add"> - Add new JUnit TestCase for automatically setting up Avalon Components - and running tests. - </action> - <action dev="BL" type="fix"> - Fix a number of tests, and provided a couple new tests. - </action> - <action dev="PD" type="fix"> - Fix build process for tests and fix some of the tests. - </action> - <action dev="GP" type="add"> - Add new LogKit Management framework to allow each component to have unique - logger implementations and provide fine grained control over logging. - </action> - <action dev="PD" type="add"> - Add new JNDI package to Excalibur with Memmory and RMI providers. - </action> - <action dev="BL" type="update"> - Updated Announcement.xml to not refer to Testlet anymore. - </action> - </release> - <release version="4.0b4" date="August 10, 2001"> - <action dev="BL" type="fix"> - Fixed race condition brought to my attention by Tom Klaasen. His excellent - analysis of the problem enabled me to not only fix the race condition but - also increase the efficiency of the pool in some cases by 200% - </action> - <action dev="BL" type="add"> - Added new InformixDataSource that uses the Informix JDBC 2.2 driver - and Cadastre to provide pooled connections from Informix. Unfortunately - the drivers do not yet support transactions. I need to look further - into this, as it might be a server configuration issue as opposed to - a driver issue. - </action> - <action dev="BL" type="fix"> - Fixed errors in utilities discovered by the tests. - </action> - <action dev="BL" type="change"> - Converted tests from Testlet to JUnit. - </action> - <action dev="BL" type="fix"> - Fixed the build structure so that everything builds correctly. - </action> - <action dev="BL" type="add"> - Added extra convenience methods to discover if a component exists. - </action> - <action dev="BL" type="add"> - Added stylesheet to convert Stylebook markup to DocBook markup. - </action> - <action dev="BL" type="change"> - Changed the documentation build process to use Cocoon to build - the site. - </action> - <action dev="BL" type="add"> - Add new configuration element "driver" to JdbcDataSource so that - the class is loaded in the current context classloader when the - component is first set up. - </action> - <action dev="BL" type="update"> - Optimize all logging functions to make it easier for JVMs to decide - whether or not to concatenate strings for log messages. - </action> - <action dev="NP" type="update"> - Extensive reworking of the excalibur.i18n package (XML Resource bundles). - </action> - <action dev="JT" type="update"> - Extensive additions to IOUtils so that it accepts numerous different - stream/writer types. Also will convert streams to strings using a - specific encoder or else by using default platform encoder. - </action> - <action dev="PD" type="add"> - Added EndianUtil to excalibur.io to help when need to work with little endian data. - </action> - <action dev="BL" type="add"> - Added "ROLE" attribute to DataSource--to comply with practices - outlined in whitepaper. - </action> - </release> - <release version="4.0b3" date="June 6, 2001"> - <action dev="BL" type="update"> - Release 4.0b3 - </action> - <action dev="BL" type="fix"> - Repair major showstopper in Excalibur Component Manager. This - showstopper manifests itself as a NullPointerException with - ExcaliburComponentSelectors. Because of the reflective code - in the ComponentFactory, this was originally missed in the - Beta 2 release. - </action> - </release> -<release version="4.0b2" date="June 4, 2001"> - <action dev="BL" type="update"> - Release 4.0b2 - </action> - <action dev="BL" type="update"> - Updated Component Package to be Initializable, so that all components - can be initialized once it is ready. - </action> - <action dev="BL" type="add"> - Added initial documentation for Excalibur. - </action> - <action dev="BL" type="fix"> - Fixed issues introduced with removing "throws Exception" from - Disposable. - </action> - <action dev="BL" type="fix"> - Made connections expire after 15 uses. This avoids problems with - buggy client code or buggy drivers from causing serious issues - in the long run. - </action> - <action dev="BL" type="fix"> - Made Component Manager fixes to use the Thread's context classloader. - </action> -</release> -<release version="4.0b1" date="May 11, 2001"> - <action dev="BL" type="change"> - Initial beta release. - </action> -</release> - -</changes> +<?xml version="1.0"?> +<!DOCTYPE changes PUBLIC "-//APACHE//DTD Changes V1.1//EN" "changes-v11.dtd"> + +<changes title="Avalon Excalibur History of Changes"> + <devs> + <person name="Berin Loritsch" email="[EMAIL PROTECTED]" id="BL"/> + <person name="Leo Simons" email="[EMAIL PROTECTED]" id="LS"/> + <person name="Peter Donald" email="peter at apache.org" id="PD"/> + <person name="Jeff Turner" email="[EMAIL PROTECTED]" id="JT"/> + <person name="Neeme Praks" email="[EMAIL PROTECTED]" id="NP"/> + <person name="Giacomo Pati" email="[EMAIL PROTECTED]" id="GP"/> + <person name="Paul Hammant" email="[EMAIL PROTECTED]" id="PH"/> + <person name="Leif Mortenson" email="[EMAIL PROTECTED]" id="LM"/> + <person name="Eung-ju Park" email="[EMAIL PROTECTED]" id="EP"/> + <person name="Carston Ziegler" email="[EMAIL PROTECTED]" id="CZ"/> + <person name="Peter Royal" email="[EMAIL PROTECTED]" id="PR"/> + </devs> + <release version="@version@" date="@date@"> + <action dev="PR" type="fix"> + Fixing proxy-based datasource code. + </action> + <action dev="PR" type="fix"> + PriorityFilterTargetFactory throws a ConfigurationException + upon invalid targets + </action> + <action dev="CZ" type="add"> + The ExcaliburComponentSelector does not instantiate a Component + for the hasComponent() test anymore. + </action> + <action dev="CZ" type="add"> + Adding XMLizer to the xmlbundle subproject for converting different + data (identitied by a mime-type) to XML. + </action> + <action dev="CZ" type="add"> + Finished port of Cocoon's source resolver as the new sourceresolve + subproject. + </action> + <action dev="CZ" type="add"> + Added XML Parser role and implementation, EntityResolver role and + some misc. XML support (from Cocoon). + </action> + <action dev="Whole Team" type="add"> + Broken Excalibur from single jar into multiple smaller jars. + </action> + + </release> + <release version="4.1" date="January 30, 2002"> + <action dev="CZ" type="add"> + Initial port of Cocoon's Source resolvers and XML parsers + </action> + <action dev="NP" type="update"> + Added many fixes to the XML Resource Bundles and Resource Bundle + access code. + </action> + <action dev="PD" type="update"> + Update the extension management code and make it more robust. + </action> + <action dev="BL" type="add"> + Add new Container abstraction to separate ComponentManager from + Container code (i.e. ExcaliburComponentManager violates this). + The new ContainerManager and Container abstraction make the system + much easier to manage. + </action> + <action dev="BL" type="add"> + Add new CommandManager architecture to manage all asynchronous + commands and the ThreadManager architecture to manage the thread + allocation policy for the CommandManager. + </action> + <action dev="DP" type="add"> + New component to handle automatic XML Catalog resolution. + </action> + <action dev="EP" type="update"> + Many improvements to the cache component. Extended cache validation + support, multiple store backends, and more. + </action> + <action dev="JT" type="add"> + Add an XPathProcessor abstraction Component with ThreadSafe + implementations for Jaxen and Xalan backed XPath processors. + </action> + <action dev="PD" type="update"> + Made automatic proxy code even more robust. + </action> + <action dev="PD" type="update"> + Add support for recursive property resolution. Added appropriate + unit test to accompany feature. + </action> + <action dev="BL" type="update"> + Optimized pool implementations, and provided a new abstraction for + managed pools (in scratchpad). + </action> + <action dev="GP" type="add"> + Add many new LogTargetFactories to LogKitManager. + </action> + <action dev="BL" type="add"> + Add new LoggerManager abstraction that works with the new framework + Logger abstractions. + </action> + <action dev="PD" type="fix"> + Fixed some classloader issues in the i18n package for loading resources. + Also fixed some i18n related issues in FileUtil and IOUtil. + </action> + <action dev="LM" type="update"> + Applied many optimizations and logic fixes to DataSourceComponent + code. + </action> + <action dev="BL" type="fix"> + Applied fixes to ReadWriteLock from Avi Drissman ([EMAIL PROTECTED]) + </action> + <action dev="BL" type="update"> + Officially deprecate Lock in favor of Mutex. They have the same + purpose, and Mutex is more correct. + </action> + <action dev="BL" type="update"> + Optimize logging calls throughout components. Also, make the log + messages more informative. + </action> + <action dev="PD" type="update"> + ListUtils now checks for duplicates when merging Lists. + </action> + <action dev="PD" type="update"> + Make BinaryHeap and PriorityQueue use Objects instead of Comparables. + Optimize BinaryHeap code. + </action> + <action dev="BL" type="add"> + Add new Buffer classes to the collections package. These are amazingly + performant. It is based on CircularBuffer, which is now deprecated. + </action> + <action dev="BL" type="update"> + Shake out some more performance of CLI Util, as well as better support + for DUPLICATES_ALLOWED. + </action> + <action dev="LM" type="update"> + Added some build improvements. + </action> + <action dev="BL" type="add"> + Add new profiler instrumentation interfaces inspired by Matt Welsh's + SEDA architecture. + </action> + <action dev="BL" type="add"> + Add new asynchronous event queue system inspired by Matt Welsh's + SEDA architecture. + </action> + <action dev="BL" type="update"> + Update all the components to the new LogEnabled interface. + </action> + </release> + <release version="4.0" date="September 11, 2001"> + <action dev="BL" type="update"> + Update user docs. + </action> + <action dev="PD" type="remove"> + Remove dead code in scratchpad. + </action> + <action dev="PD" type="update"> + Rework thread pooling package to a new design. This provides a mechanism + to run a cleanup thread when the JVM is killed. + </action> + <action dev="PD" type="add"> + Add classloader extension framework into the extension package. + </action> + <action dev="PD" type="add"> + Add Container mechanism from Avalon Phoenix. + </action> + <action dev="PD" type="update"> + Add support for recursive property resolution. Added appropriate unit test + to accompany feature. (Property utils). + </action> + <action dev="PD" type="fix"> + Problem Fixed: I've encountered a problem with the SingleThreadedPool in + that it alternatley returns valid and null pooled objects until you've got + the "initial" constructor argument + 1 and then it starts returning + (Poolable)m_factory.newInstance(). Submitted by: "Corey O'Donovan". + </action> + <action dev="BL" type="fix"> + Fix some bugs found by Pool Profiling tests. + </action> + <action dev="BL" type="add"> + Add new resource monitoring facility. This allows you to actively + monitor resources and be notified if they are changed by outside + forces. + </action> + <action dev="DP" type="update"> + Set hierarchy via constructor to allow LogKit to work in sub classloaders. + Submitted By: Sylvain Wallez. + </action> + <action dev="DP" type="update"> + Update FileUtils with methods to count size of a directory, + input argument check, fix javadoc, and method to convert an array of + Files into URLs. + </action> + <action dev="PH" type="add"> + ClassLoaderObjectInputStream moves from Cornerstone to Excalibur. + </action> + <action dev="DP" type="update"> + Promote the i18n ResourceManager code to Excalibur production. + </action> + <action dev="BL" type="update"> + Updated log messages for JdbcConnection--as well as added runtime + detection if no connections could be created. This provides better + reporting if the connection has configuration errors or other mitigating + errors. + </action> + <action dev="BL" type="add"> + Add direct support for Informix connection pooling. Requires the most + recent JDBC drivers from Informix to use this feature. + </action> + <action dev="BL" type="update"> + Deprecated the oradb attribute in JdbcDataSourceComponent, and added a + keepalive element.This way we can test the line with valid SQL statements + no matter what the DB is. Informix had trouble with the "select 1" and I + am sure there are others. + </action> + <action dev="BL" type="fix"> + Fix bugs found by ReadWriteLock Test Case in the concurrent package. + </action> + <action dev="DP" type="update"> + Update component package with support for Paremeterizable components + (patch from Mircea Toma) + </action> + <action dev="BL" type="update"> + Add support to display if an option is required. Patch was from + Tom Jordahl (from xml-axis project). + </action> + <action dev="PD" type="fix" fixes-bug="3255"> + Fixed bug "CLArgsParser loops infinitely on OPTIONAL options" like + "-Fa -B" where F optionally has an argument. Added unit tests to verify + that it has been fixed. + </action> + <action dev="JT" type="update"> + Update javadocs with '@since' tags so that we know when components + have been introduced. + </action> + <action dev="BL" type="update"> + Update JDBC datasource component so that you can specify your keep-alive + query. This is for databases that don't like "SELECT 1;" as a query. + </action> + <action dev="GP" type="add"> + Add new JUnit TestCase for automatically setting up Avalon Components + and running tests. + </action> + <action dev="BL" type="fix"> + Fix a number of tests, and provided a couple new tests. + </action> + <action dev="PD" type="fix"> + Fix build process for tests and fix some of the tests. + </action> + <action dev="GP" type="add"> + Add new LogKit Management framework to allow each component to have unique + logger implementations and provide fine grained control over logging. + </action> + <action dev="PD" type="add"> + Add new JNDI package to Excalibur with Memmory and RMI providers. + </action> + <action dev="BL" type="update"> + Updated Announcement.xml to not refer to Testlet anymore. + </action> + </release> + <release version="4.0b4" date="August 10, 2001"> + <action dev="BL" type="fix"> + Fixed race condition brought to my attention by Tom Klaasen. His excellent + analysis of the problem enabled me to not only fix the race condition but + also increase the efficiency of the pool in some cases by 200% + </action> + <action dev="BL" type="add"> + Added new InformixDataSource that uses the Informix JDBC 2.2 driver + and Cadastre to provide pooled connections from Informix. Unfortunately + the drivers do not yet support transactions. I need to look further + into this, as it might be a server configuration issue as opposed to + a driver issue. + </action> + <action dev="BL" type="fix"> + Fixed errors in utilities discovered by the tests. + </action> + <action dev="BL" type="change"> + Converted tests from Testlet to JUnit. + </action> + <action dev="BL" type="fix"> + Fixed the build structure so that everything builds correctly. + </action> + <action dev="BL" type="add"> + Added extra convenience methods to discover if a component exists. + </action> + <action dev="BL" type="add"> + Added stylesheet to convert Stylebook markup to DocBook markup. + </action> + <action dev="BL" type="change"> + Changed the documentation build process to use Cocoon to build + the site. + </action> + <action dev="BL" type="add"> + Add new configuration element "driver" to JdbcDataSource so that + the class is loaded in the current context classloader when the + component is first set up. + </action> + <action dev="BL" type="update"> + Optimize all logging functions to make it easier for JVMs to decide + whether or not to concatenate strings for log messages. + </action> + <action dev="NP" type="update"> + Extensive reworking of the excalibur.i18n package (XML Resource bundles). + </action> + <action dev="JT" type="update"> + Extensive additions to IOUtils so that it accepts numerous different + stream/writer types. Also will convert streams to strings using a + specific encoder or else by using default platform encoder. + </action> + <action dev="PD" type="add"> + Added EndianUtil to excalibur.io to help when need to work with little endian data. + </action> + <action dev="BL" type="add"> + Added "ROLE" attribute to DataSource--to comply with practices + outlined in whitepaper. + </action> + </release> + <release version="4.0b3" date="June 6, 2001"> + <action dev="BL" type="update"> + Release 4.0b3 + </action> + <action dev="BL" type="fix"> + Repair major showstopper in Excalibur Component Manager. This + showstopper manifests itself as a NullPointerException with + ExcaliburComponentSelectors. Because of the reflective code + in the ComponentFactory, this was originally missed in the + Beta 2 release. + </action> + </release> +<release version="4.0b2" date="June 4, 2001"> + <action dev="BL" type="update"> + Release 4.0b2 + </action> + <action dev="BL" type="update"> + Updated Component Package to be Initializable, so that all components + can be initialized once it is ready. + </action> + <action dev="BL" type="add"> + Added initial documentation for Excalibur. + </action> + <action dev="BL" type="fix"> + Fixed issues introduced with removing "throws Exception" from + Disposable. + </action> + <action dev="BL" type="fix"> + Made connections expire after 15 uses. This avoids problems with + buggy client code or buggy drivers from causing serious issues + in the long run. + </action> + <action dev="BL" type="fix"> + Made Component Manager fixes to use the Thread's context classloader. + </action> +</release> +<release version="4.0b1" date="May 11, 2001"> + <action dev="BL" type="change"> + Initial beta release. + </action> +</release> + +</changes> No revision No revision
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]