finj - News of the past
[ L A S T U P D A T E : 2022-03-03 ]
> 2009-07-15 : Release 1.1.5
Dear Finjes,
- Recently fixed :
method org.finj.FTClient.getFileDescriptors(String) :
bug with command result parsing.
Enjoy!
-- javier
> 2008-01-18 : Release 1.1.4
Dear Finjes,
- Recently fixed :
method org.finj.FTClient.getFileDescriptors(String) :
bug with year parsing.
- Recently added :
- Italian translation of FTP response messages :
many thanks to Guido Pes for this contribution.
Enjoy!
-- javier
> 2007-10-12 : Release 1.1.3
Dear Finjes,
- Recently fixed :
method org.finj.FTClient.getFileDescriptors(String, boolean) :
Truncated remote filenames with spaces.
Enjoy!
-- javier
> 2007-05-16 : Release 1.1.2
Dear Finjes,
- Recently fixed :
method org.finj.filter.ASCIIDataFilterInputStream.read() :
java.lang.StackOverflowError .
Enjoy!
-- javier
> 2006-11-13 : maven and subversion
Dear Finjes,
Please note that from now on, the finj source code
is directly available from the SourceForge subversion servers:
https://sourceforge.net/svn/?group_id=9737
The project is now managed / compiled / tested / packaged /... under
Apache Maven 2
- Recently implemented :
method org.finj.FTPClient.getFileDescriptors() :
Initial implementation
based on a contribution of Hector Mauricio Gonzalez.
Enjoy!
-- javier
> 2003-10-22 : some new stuff
Here are a few updates to the finj project!
The most important new feature is the new "profiles" that embody
the differences between a specific FTP server implementation and
the strict definition of the FTP protocol. This is important as some
well known servers require some twists in finj to work properly.
The idea behind this would be to build a collection of profiles
for the most common servers used out there, and a way to automatically
detect the right profile to use for connections, to ensure both
interoperability and that finj will be able to keep on
reporting all problems in the communication through org.finj.FTPException .
There is still work to do in this matter, specially in the field of
automatic profile determination!
- Recently implemented :
class org.finj.FTPServerProfile :
A solution for handling FTP servers that don't strictly
stick to the RFC-959.
It also helped to significantly clean org.finj.FTPClient
package org.finj.profile :
Where the different profiles will be stored.
class org.finj.profile.StrictFTPServerProfile :
All the validation code that once was in org.finj.FTPClient
has now been moved in this class that can be extended to
define differences with the RFC.
- Documentation :
Updated API documentation. The documentation about profiles is not ready yet, so please
refer to the API.
If someone wants to contribute to this task, let me know!
It might be the time to find a logo for finj . Any suggestions?
-- javier
> 2002-11-24 : update of the web site
I really have problems to find time for finj , not because
of the lack of interest from me or other people, not because the project
is useless, but simply because the problems that are left to implement
are tricky :
- treat file details in a FTP server independent way ;
- handle FTP servers that do not carefully implement RFC-959 ;
- implement encrypted transfers ;
- thread-safe data transfers ;
- ...
There is still room for dedicated programers :)
It is interresting to note that I usually receive 2-4 mails per week
coming from people interested in including finj into their
projects, but only few of them contribute to it. Damn !
Well... nevertheless, I spent some time refactoring this web site,
and I'll spend some time on the source code the next days, trying to
solve some known bugs. More news about that subject in the next weeks.
-- javier
> 2001-11-24 : still beta source code, changes to API (v1.0.2)
After a long time without any (visible) activity, here are some news
from finj :
- Documentation :
Some new documents have been added to this web site :
- mini-howto :
Simple example class to show how to use finj in a really basic way.
- test :
Info on the way JUnit is
used for unit testing.
- alternatives :
Don't like finj but need FTP in your Java App ? Here are some
pointers on other projects available out there.
- Recently implemented :
- ASCII data transfer,
- EBCDIC data transfer,
- append to a file,
See Project-o-meter for details !
finj API : MODIFIED
I finally learned how to use javadoc properly :)
org.finj.FTPReply.startsMultilineAnswer(String) :
deprecated, replaced by opensMultilineAnswer(String) .
org.finj.FTPClient.dataReceived(int) :
protected (was public for some weird, forgotten reason).
org.finj.FTPClient.doPASSCommand(String)
deprecated, replaced by FTPClient.doPASSCommand(char[]) , see below.
org.finj.FTPClient.getFileInPassiveMode(OutputStream,String)
deprecated, replaced by getFile(OutputStream,String,boolean) , see below.
org.finj.FTPClient.getFileNamesInPassiveMode(String)
(brand new and already) deprecated, replaced by getFileNames(String,boolean) , see below.
org.finj.FTPClient.login(String,String)
deprecated, replaced by FTPClient.login(String,char[]) , see below.
org.finj.FTPClient.putFileInPassiveMode(InputStream,String)
deprecated, replaced by putFile(InputStream,String,boolean) , see below.
org.finj.FTPClient(String,String,String)
deprecated, replaced by FTPClient(String,String,char[]) , see below.
org.finj.FTPClient(String,String,String,Locale)
deprecated, replaced by FTPClient(String,String,char[],Locale) , see below.
org.finj.FTPClient(String,int,String,String)
deprecated, replaced by FTPClient(String,int,String,char[]) , see below.
org.finj.FTPClient(String,int,String,String,Locale)
deprecated, replaced by FTPClient(String,int,String,char[],Locale) , see below.
- package
org.finj.test : CREATED
Contains several classes that use JUnit
framework to test finj while developing.
org.finj.test.AllTest Executes all the other tests,
org.finj.test.BrowsingTest Tests browsing related functionalities,
org.finj.test.ConnectionTest Tests connection realated functionalities,
org.finj.test.DataTest Tests data transfer related functionalties,
org.finj.test.InformationTest Tests server information collection functionalities,
org.finj.test.MiscellaneousTest Tests functionalities that do not enter in the other categories,
org.finj.test.ObserverTest Tests org.finj.FTPClientObserver functionalities.
Those classes use org.finj.test.FTPClientTest , a "modified" version of
org.finj.FTPClient that get configuration details from a configuration
file : FTPClientTestConfiguration.properties .
More details on testing are collected on testing page.
- package
org.finj.filter : CREATED
Contains java.io.FilterInputStream s and java.io.FilterOutputStream s
that are placed on the data streams when up/downloading data to/from a FTP server.
org.finj.filter.ASCIIDataFilterInputStream
org.finj.filter.EBCDICDataFilterInputStream
org.finj.filter.ImageDataFilterInputStream
org.finj.filter.LocalASCIIDataFilterInputStream
At the moment, it offers ASCII, EBCDIC and binary data transfers implementations, but the
principle could be used for "on the fly" cryptography, data compression, or whatever
feature that could be imagined.
Any suggestions ?
- public class
org.finj.FTPClient : MODIFIED
Better (?) support for passive transfers was added, visible through several methods :
org.finj.FTPClient.usePassiveDataTransfer(boolean) :
to switch it on and off ,
org.finj.FTPClient.usePassiveDataTransfer() :
to know if it is on or off (off by default),
org.finj.FTPClient.getFile(OutputStream,String,boolean) :
added, third argument overriding usePassiveDataTransfer()
org.finj.FTPClient.putFile(InputStream,String,boolean) :
added, third argument overriding usePassiveDataTransfer()
org.finj.FTPClient.putUniqueFile(InputStream,boolean) :
added, second argument overriding usePassiveDataTransfer() ,
org.finj.FTPClient.getFileNames(String,boolean) :
added, second argument overriding usePassiveDataTransfer() ,
org.finj.FTPClient.getFileNames(boolean) :
added, argument overriding usePassiveDataTransfer() ,
Stronger security in the way password is handled, through a char[] rather than a
java.lang.String .
It is recommended that the character array be cleared after use by setting each character to zero.
Methods added to the API :
org.finj.FTPClient(String,String,char[])
added.
org.finj.FTPClient(String,String,char[],Locale)
added.
org.finj.FTPClient(String,int,String,char[])
added.
org.finj.FTPClient(String,int,String,char[],Locale)
added.
org.finj.FTPClient.login(String,char[])
added.
org.finj.FTPClient.doPASSCommand(char[])
added.
Bugfixes :
open(String,int) modified to take into account multiple IP addresses
bug #451577,
thanks to Gerritt Cap,
readFTPReply() modified for better end of multiline reply detection
and readLineFromControlConnection() modified to discard empty lines
This bug was REALLY annoying, because it was difficult or impossible to connect to IIS FTP servers !
bug #451582,
thanks to Gerritt Cap.
- public class
org.finj.FTPReply : MODIFIED
org.finj.FTPReply.opensMultilineAnswer(String) :
added.
org.finj.FTPReply.closesMultilineAnswer(String) :
added.
- public class
org.finj.FTPSocket : CREATED
Allows to handle java.net.Socket and java.net.ServerSocket
instances in a transparent and elegant way, even if they have no common ancestor,
through wrapping in an interface that mimics their common parts.
-- javier
> 2001-04-16 : beta version of source code, small changes to API (v1.0.1)
Well...
I finally got some time for finj :
- public class
org.finj.FTPClient : MODIFIED
setPassive() was public, set to private (it didn't make no sense),
setDataPort(*) were public, set to private (it didn't make no sense),
getDataPort() was removed (it didn't make no sense),
putFileInPassiveMode(InputStream,String) was implemented by Syed Meerkasim,
getFileInPassiveMode(OutputStream,String) was added,
readMultilineReply(FTPReply) ,
getServerStatus() and
getServerStatus(java.lang.String)
now return String[] instead of String .
getWorkingDirectory() now returns the correct (?) parsed value,
getFileNames() was implemented,
a brand new verbose mode has been added for debugging purposes.
- public class
org.finj.FTPConstants : CREATED
gathers the project-wide constants.
- public class
org.finj.FTPReply : MODIFIED
parseServerPassivePort() was implemented by Syed Meerkasim,
parseWorkingDirectory() was added.
- public class
org.finj.RemoteFile : MODIFIED
was an interface... because of a previous implementation of this system that is
now out of date,
canWrite() was added.
-- javier
> 2001-04-05 : Current status of project finj
Hi all,
Thank you ! I recieved a lot of feedback... even debugged code,
and enhancements propositions.
Two developers joined the crew (Syed Meerkasim and Otto Mok).
Expect to have an alpha version - current is draft - of the source code
available soon (if they leave me alone for a while at work :)
Well : this tiny project is taking some altitude !
Maybe a CVS server would be nice...
And of course : this project is *not* dead !
-- javier
> 2000-11-24 : API v1.0 !!
Changes in this version :
- public class
org.finj.FTPClient : MODIFIED
supports org.finj.FTPReply 's internationalization,
setPassive() now returns byte[] ,
getFile(String) changed to getFile(OutputStream,String)
- public interface
org.finj.FTPServerParser : MODIFIED
was an abstract class that collided with the 'factory' pattern.
- public class
org.finj.FTPServerParserFactory : CREATED
see above.
- public interface
org.finj.FTPClientObserver : MODIFIED
dataReceived(int) and dataSent(int) where 'un-deprecated'...
they finally might make sense.
- public class
org.finj.FTPException : MODIFIED
now extends java.lang.RuntimeException instead of java.lang.Exception .
Sorry for the delay, I changed work position... and took some days off.
Many thanks to people that downloaded draft versions of API... I'm the
first one surprised that it has been of any interest to anyone but me
;)
Implementation of org.finj.FTPClient is going on. I added
a small tool to this site, the PROJECT-O-METER
that gives you a precise idea of the status of the work undertaken.
-- javier
> 2000-10-19 : finj-i18n_001019.zip released
I already mentioned (00-09-04) that finj was going to be internationalizable.
Well, right now, only one file (org.finj.FTPMessage.properties ) is internationalizable,
but it would be nice that people started translating those messages in their languages.
Get this zipped file : there are only 40 sentences to translate !! and
send translation back to me.
Many thanks in advance.
-- javier
> 2000-10-19 : finj-api_draft3.tar.gz is useless
Many thanks to Magnus Rosenquist
who sent me an email commenting that he could not gunzip finj-api_draft3.tar.gz
after downloading it. Yep... something happened while preparing that file.
A working version of this api is available online under the name of
finj-api_draft3b.tar.gz
Sorry for people who downloaded the useless file.
-- javier
> 2000-10-19 : IMPORTANT NOTE
Hi all,
First of all : many thanks to people that sent comments/requests and downloaded draft versions
of API... it's good to know that this project has some echo out there :)
Then : sorry to be that late on releases. Really. But now I'm afraid to admit that
I'M UNABLE TO MAKE THIS PROJECT LIVE DECENTLY BY MY OWN
ok. I wrote it. I'm running out of time... so I released today (2000-11-24) the first very,
very draft version of the java source code I was working on. It's pretty ugly, with lot of
debugging stuff everywhere.
Have a look at :
-> project-o-meter
to see what's already implemented/works.
Now, send your feedback !! are you still interested in this project ? if it's the case,
you're welcome. There's not too much work to do, but I can't find enough time in a straight
to work well enough on it.
I hope we'll find a solution, all together !
-- javier
> 2000-09-23 : Draft-3 version of API
Changes in this version :
- public class
org.finj.FTPClient : MODIFIED
more support for observer.
- public class
org.finj.FTPClientObserver : MODIFIED
more things might be observed, dataSent(int) and dataReceived(int)
are deprecated (makes no sens, as org.finj.FTPClient doesn't
take care of reading and writing to the data connection).
- public class
org.finj.FTPClientAdapter implements org.finj.FTPClientObserver : CREATED
an implementation of org.finj.FTPClientObserver that does strictly nothing,
but that can easily be extend ed.
I started implementing org.finj.FTPClient ... works well. Almost
all methods working on control connection are implemented. Soon data connections
will be available. Nevertheless, I don't think it's time to release code yet.
Do you think I'm wrong ?
-- javier
> 2000-09-04 : Draft-2 version of API
Sorry : I've been off some days. That's why nothing happened since 2 weeks.
Many thanks to people that commented the previous (draft-1) version of API.
Changes in this version are :
- public interface
org.finj.FTPReplyListener : REMOVED
replaced by org.finj.FTPClientObserver .
- public interface
org.finj.FTPClientObserver : CREATED
replaces org.finj.FTPReplyListener and adds methods
to monitor data transfer.
- public class
org.finj.FTPRemoteFile : CREATED
implements org.finj.RemoteFile .
- public abstract class
org.finj.FTPServerParser : CREATED
added to support different kind of FTP server plateform-specific syntaxes.
Note that the interface is not defined yet, but support for different plateforms
will be required e.g., to parse the dir command results.
Developers using finj will not have to deal directly with
this class and it's descendent anyway...
- public class
org.finj.DOSFTPServerParser : CREATED
implements org.finj.FTPServerParser for FTP servers running on DOS plateform.
- public class
org.finj.UnixFTPServerParser : CREATED
implements org.finj.FTPServerParser for FTP servers running on Unix plateform.
- public class
org.finj.VMSFTPServerParser : CREATED
implements org.finj.FTPServerParser for FTP servers running on VMS plateform.
- public class
org.finj.FTPClient : MODIFIED
methods to handle ONE org.finj.FTPClientObserver per instance (see API).
- public class
org.finj.FTPReply : MODIFIED
supports internationalization of FTP error message details through use of
java.util.ResourceBundle
org.finj.FTPMessage[_$LOCAL$].properties files.
Default locale is US , but I could prepare FR and
ES .
Does anyone want to contribute to internationalization effort (ca. 40 sentences) ?
Some of those changes result from comments, others where just
predicted, but not yet written down.
-- javier
> 2000-08-21 : Draft version of API
This is the first public version of the API. Of course : it is open to
comments !
Let say that these document is the most important part of the project : we are
going to sign a pact between us, and the 'users' of the package. Take time to read it
carefully and please :
suggest, criticize, comment,
complain, yell out... whatever, but REACT !
Note that deprecated versions of the
sun.net.ftp.FtpClient methods are present. This way, interrested developers
have a fast and easy way to test finj : replacing new sun.net.ftp.FtpClient
constructor with a new org.finj.FTPClient , the rest should work the same.
BUT, finj is aimed at replacing sun's FtpClient , in order to
take advantage of it's pluses.
-- javier
> 2000-08-14 : Welcome !
Well... here we go.
This is the finj project home page, where we are going to develop a better, open-source
replacement for the sun.net.ftp.FtpClient programmatically controllable
FTP client from sun microsystems.
The FTP protocol, as defined in the RFC959
(October 1985), is a rich protocol that allows to transfer and, in a smaller extend,
manage a remote file system through a client-server architecture.
Sun's sun.net.ftp.FtpClient is a FTP client partial implementation that is
provided in the standard developers' kit and runtime environnements in order to manage
ftp:// URLs. The most important commands are there, but interesting ones are
missing. Over all, the actual answers coming from the server are invisible from the
developers classes.
Finally, as sun's FtpClient is not part of the java.* packages,
it's source code is not available.
Those are the reasons why we decided to start this project !
Currently, I have a home-made Java FTP client running, that was developed for the
purpose of the neuroheuristic.org
project in which I'm involved. It will provide the base ideas for the finj implementation.
-- javier
forged on |
|
written with |
|
tested using |
|
|
|
|
|
project admin
|