| version 1.3.8 |
| o Works with Java 1.2 |
| |
| version 1.3.7 |
| o NetComponents.jar file is now compressed and includes an |
| auto-generated manifest so that it may be used with the HotJava |
| web browser. |
| |
| o Fixed a date parsing bug in DefaultFTPFileListeParser. Months |
| would not always be properly converted (e.g., April would turn |
| up as August). We must have inadvertently introduced this bug with |
| release 1.3, when we rewrote DefaultFTPFileListParser. We're really |
| sorry for goofing that up. |
| |
| o Added isConversionRequired() static final method to |
| com.oroinc.io.FromNetASCIIInputStream. |
| |
| o Fixed a bug whereby the InputStream returned by |
| TelnetClient.getInputStream might return an incorrect available() |
| value. Also added documentation to the FromNetASCIIInputStream |
| available() method indicating that its return value is unreliable. |
| In other words, you can rely on the available() value returned by |
| the TelnetClient InputStream, but you can't rely on the |
| FromNetASCIIInputStream available() value. |
| |
| version 1.3.6 |
| o added SocketFactory and DatagramSocketFactory interfaces as well |
| as DefaultSocketFactory and DefaultDatagramSocketFactory classes to |
| the com.oroinc.net package. Also added setSocketFactory and |
| setDatagramSocketFactory methods to SocketClient and |
| DatagramSocketClient respectively. This new functionality allows |
| you to use your own SSL sockets with any of the NetComponents |
| classes, request browser capabilities in an applet before creating |
| a socket, and other customizations dependent on the ability to |
| control the Socket creation process. |
| |
| o added setRemoteVerificationEnabled(boolean) and |
| isRemoteVerificationEnabled()methods to FTPClient and RExecClient |
| so that you may disable the host-based incoming connection security |
| check when behind a proxy or firewall. |
| |
| o Fixed a bug in com.oroinc.net.tftp.TFTPRequestPacket whereby the |
| TFTPRequestPacket(int, DatagramPacket) constructor would not |
| properly parse out the transfer mode. This was only an issue |
| for people writing TFTP servers using the TFTP package. |
| |
| o Implemented setting of FTPFile raw listing so that getRawListing() |
| will no longer just return null. At some point after changing |
| DefaultFTPListPaser, the raw listing of FTPFile was no longer being |
| set. This error is now corrected. |
| |
| o Removed the final keyword from the declaration of FTPClient, |
| NNTPClient, SMTPClient, POP3Client, and TFTPClient so that |
| programmers may derive subclasses rather than use aggregation |
| to extend functionality. |
| |
| version 1.3.5 |
| o Added ProtocolCommandEvent, ProtocolCommandListener, and |
| ProtocolCommandSupport classes to com.oroinc.net to facilitate |
| the interception of command/reply traffic from protocols that rely |
| on text commands, including FTP, SMTP, NNTP, and POP3. Some of the |
| example programs, including ftp.java and mail.java demonstrate how |
| to register a ProtocolCommandListener, using the example |
| PrintCommandListener class. |
| |
| o Modified reply parsing code in SMTP, FTP, and NNTP classes to |
| handle server replies consisting of only a 3 digit reply code. |
| The various RFC's are ambiguous as to whether these kinds of replies |
| are legal, but since some servers produce them, NetComponents will |
| handle them. |
| |
| o Made com.oroinc.net.ftp.FTPFile implement the Serializable |
| interface so that the NetComponents Pro FTP bean may be properly |
| serialized. |
| |
| version 1.3 |
| o Added com.oroinc.net.bsd package which includes new RExecClient, |
| RCommandClient, and RLoginClient classes which implement |
| BSD Unix rexec(), rcmd() (rshell), and rlogin functionality. |
| |
| o Added rexec.java, rshell.java, and rlogin.java example programs |
| |
| o Common reader/writer thread behavior shared by weatherTelnet, |
| rexec, rshell, and rlogin examples moved into IOUtil class in |
| examples directory. |
| |
| o Added verifyRemote() convenience method to SocketClient for making |
| it easier to verify that the remote end of a socket is the same |
| as the host the SocketClient is connected to. This is used for |
| verifying things like rexec() error stream connections and FTP |
| data connections. |
| |
| o Enhanced performance of DefaultFTPFileListParser and also made |
| it better able to handle unusual variations of the "default" |
| listing format. This was prompted by not being able to list an |
| ftp site that had the following entry: |
| drwxrwsr-x1170 18280 25051 34304 Jan 31 22:36 faq |
| |
| There was no whitespace between the permissions field and the |
| hard link count. The new parser can deal with this situation. |
| |
| version 1.2.6 |
| Fixed bug in SimpleSMTPHeader which would add an extra blank line |
| between headers added with addHeaderField() and the default headers |
| from the constructor. |
| |
| version 1.2.5 |
| o Due to developer requests, changed the behavior of FTPClient |
| enterLocalPassiveMode(). Up to now, enterLocalPassiveMode() |
| would issue a PASV command to the server immediately, and you would |
| have to call enterLocalPassiveMode manually before every |
| file transfer or other operation requiring a data connection. |
| Now enterLocalPassiveMode() has been changed to not issue a PASV |
| command to the server immediately. If you wish to do this, you |
| should use the pasv() command in the FTP class. Now you only have |
| to call enterLocalPassiveMode() once, and from then on FTPClient |
| will automatically issue PASV commands to the server before opening |
| a data connection. To return to normal mode, you only have to call |
| enterLocalActiveMode(). Because of this change, |
| enterLocalPassiveMode() now is of type void and doesn't throw any |
| exceptions. You may have to make some changes to existing code. |
| Additionally, getPassiveHost() and getPassivePort() now only return |
| valid data AFTER the first data connection has been established in |
| passive mode since enterLocalPassiveMode() no longer issues a |
| PASV command immediately, but rather causes PASV commands to be |
| automatically sent before the opening of all future data connections. |
| |
| o Added CopyStreamEvent, CopyStreamListener, and CopyStreamAdapter |
| support classes that are required by NetComponents Pro to track the |
| progress of file transfer operations using the Util copyStream() |
| methods. |
| |
| o Changed com.oroinc.io.Util copyStream and copyReader methods to |
| return a long value instead of int for number of bytes copied. This |
| was previously reported to have been done for version 1.2.3, but the |
| change really hadn't been made. |
| |
| o Added com.oroinc.io.CopyStreamException and changed |
| changed com.oroinc.io.Util copyStream and copyReader methods to throw |
| CopyStreamException. CopyStreamException stores the number of bytes |
| confirmed to have been transferred before the throwing of an |
| IOException. It also stores the original IOException responsible for |
| the failure of a complete copy. |
| |
| o storeFile, retrieveFile, appendFile, and storeUniqueFile in |
| FTPClient now can also throw a CopyStreamException. No changes |
| in existing code are necessary since CopyStreamException is a |
| subclass of IOException. The only point in doing this is so that |
| you may retrieve the number of bytes transferred before failure. |
| |
| o Relaxed the multi-line reply parsing code in the FTP class to |
| handle non-conformant FTP servers. For example, the FTP server |
| running on ftp.funet.fi ends a 426 multi-line reply with a line |
| starting with 226 rather than 426. Previously this would cause |
| the FTP and FTPClient classes to block indefinitely waiting for |
| the correctly formatted multi-line reply ending. This was further |
| complicated by the fact that the multi-line reply ending |
| detection was already relaxed to handle other non-conformant |
| FTP servers. Right now all deviations from RFC 959 that we have |
| encountered are handled. |
| |
| o Changed write(byte b[], int offset, int length) in |
| SocketOutputStream and FromNetASCIIOutputStream to bypass the |
| equivalent method in FilterOutputStream because the |
| FilterOutputStream method is very inefficient. The change was |
| made after noticing that FTP file uploads were noticeably slower |
| than downloads and tracing the bottleneck to FilterOutputStream. |
| |
| o Adjusted DefaultFTPFileLister to handle block and character |
| device listings which include major and minor device numbers. |
| |
| version 1.2.4 |
| o Included class files in a jar file called NetComponents.jar so |
| that Macintosh developers may use the classes without problems |
| resulting from the MacOS 32 character filename limit. |
| |
| o Adjusted ftp.java example to be more correct. Added a call to |
| ftp.quit() in case of login failure rather than disconnecting |
| outright. It is more polite to send the FTP QUIT command to |
| the server before disconnecting. |
| |
| o Fixed bug in a support class for TelnetClient that could cause |
| deadlock in unusual cases. For example, if FTPClient tried to |
| call disconnect() without calling quit() first, deadlock could |
| have happened in the past because the TelnetClient input stream |
| reader thread would be blocked holding a lock on the stream when |
| trying to read while the thread calling disconnect() would be |
| trying to close the stream, blocking while trying to acquire the |
| lock. The correct solution was to not make the close synchronized. |
| |
| version 1.2.3 |
| o Reimplemented workaround for Linux JDK bug. It turns out that |
| users of Solaris x86, FreeBSD, and other x86 Unix implementations |
| using a port of the Sun JDK may be experiencing the same bug. We |
| finally got to the root of the problem and provided a new workaround |
| which doesn't break anything, unlike our previous workaround. You |
| should remove the old workaround if installed and use the new one. |
| |
| o TelnetClient spawns a thread to handle asynchronous events. Fixed |
| a bug where the priority assigned to that thread might be invalid |
| in some cases. |
| |
| o Changed FTPFile getSize() and setSize() methods to return and |
| accept a long value respectively instead of an int to accomodate |
| very large file sizes. |
| |
| o Slightly improved performance of DefaultFTPListParser so very |
| large directory listings will be parsed more quickly. |
| |
| version 1.2.2 |
| o Fixed small bug in DefaultFTPListParser which would truncate the |
| last letter of a filename that contained spaces and also the last |
| letter of the value stored for FTPFile getSymbolicLink() |
| |
| o Corrected the comment of server2serverFTP.java example to reflect |
| that the second host argument should be the host running the program |
| in most cases. |
| |
| o Made an additional fix to InetAddress for BlackDown Linux JDK |
| users. Our workaround fix for the Linux bug had caused an additional |
| problem when InetAddress.getByName() was used, which would break |
| some of the example programs on Linux. |
| |
| version 1.2.1 |
| o Fixed small bug in DefaultFTPListParser which would set the |
| year in the date of FTPFile to a year earlier for some files |
| depending on the FTP server. The year should always be correct |
| now. |
| |
| version 1.2 |
| o Added the SMTP package and mail.java example |
| |
| o Minor performance improvements in FTP, NNTP, and POP3 packages |
| |
| version 1.1.1 |
| o Added some robustness features to FTP, NNTP, and POP3 classes. |
| Specifically, added more lenient handling of malformed server |
| replies and worked around a bug/limitation of the BufferedReader |
| readLine() method. There are enough RFC non-compliant servers out |
| there that it was necessary to try to accommodate them as best |
| as possible. |
| |
| version 1.1 |
| o Added com.oroinc.net.nntp NNTP package. See the new |
| newsgroup.java and post.java examples as well as API documentation. |
| |
| o Added com.oroinc.net.MalformedServerReplyException which most |
| of the IETF protocol client classes will throw when receiving |
| uninterpretable replies from the server. The exception is a |
| subclass of IOException, and therefore does not require you to |
| change existing code. However, if you are trying to develop a |
| robust fault-tolerant application, you will want to test for |
| this exception so your program can recover from the error. |
| |
| o Removed com.oroinc.net.pop3.POP3MessageReader and replaced with |
| the more general com.oroinc.io.DotTerminatedMessageReader. Code |
| written using version 1.0 that specifically refers to |
| POP3MessageReader must be changed. |
| |
| o Added com.oroinc.io.DotTerminatedMessageWriter which is used by |
| the NNTP and SMTP packages |
| |
| o Restructured telnet package. TelnetClient is no longer usable |
| as an active object. You interact with it solely through its |
| input and output streams. The inner classes that caused problems |
| on the Microsoft Java SDK have been removed. See new weatherTelnet |
| example to see how to use the telnet functionality. |
| |
| o Added setting of timeouts to example programs |
| |
| o Added setDataTimeout method to FTPClient so that the timeout |
| on a data connection can be set. |
| |
| o Added com.oroinc.ftp.FTPConnectionClosedException which is now |
| thrown by FTP command methods if an FTP 421 reply (service not |
| available, connection closed) is received in a reply. This exception |
| is a subclass of IOException and consequently will not break any |
| existing code. However, you may now specifically catch |
| FTPConnectionClosedException to detect a server disconnect caused by |
| client idle activity or some other reason. |
| |
| o Added pluggable FTP file listing parser. You can now subclass |
| FTPFile and provide your own implementation of the FTPFileListParser |
| interface to parse unique file listing formats. The new class |
| DefaultFTPFileListParser provides a default implementation compatible |
| with most FTP server listing formats. Also changed the default list |
| parser to handle the common "total xx" listing prefix in non-English |
| servers (essentially, any single-line listing prefix is now accepted). |
| |
| o Significantly changed FingerClient and WhoisClient. FingerClient |
| now subclasses SocketClient and WhoisClient subclasses |
| FingerClient. This makes the classes more flexible and consistent |
| with the rest of the package. It will break old code, but the |
| necessary code changes are very easy to make. See finger.java and |
| fwhois.java examples and compare to old. |
| |
| o Removed _getInputStream_() and _getOutputStream_() protected |
| methods from SocketClient. They are superfluous. Instead, |
| customization of connection streams should be peformed in |
| _connectAction_(). |
| |
| version 1.0.1 |
| o retrieveFileStream was inadvertently left out of |
| com.oroinc.net.ftp.FTPClient and its javadoc comments were |
| listed for storeFile in version 1.0. This has been fixed. |
| retrieveFileStream is back in version 1.0.1 and the comments |
| are correct. |
| |
| o The documentation for listFiles and listNames was in error in |
| version 1.0. These methods return null if no files are found. |
| The original documentation erroneously stated that a zero length |
| array would be returned for an empty directory. The documentation |
| has been changed in 1.0.1 to reflect the actual behavior, which is |
| to return null. |
| |