All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.changelog.html Maven / Gradle / Ivy

There is a newer version: 1.1.6
Show newest version


  
    Change Log of the Remote Tea Package
    
    
    
  
  

Change Log Remote Tea

Remote Tea Project Home Page on SourceForge.

Version 1.1.2:

This is a minor maintance release

Changed packaging of the ONC/RPC runtime package

The Maven packaging of the ONC/RPC runtime package has been changed to bundle, adding OSGi bundle information to the manifest.

Version 1.1.1:

This is a minor maintenance release.

Reorganization of the project

The project has been converted into a Maven project. It has become a multi-module project, containing the modules oncrpc, jrpcgen, jportmap, maven-plugin and information. The transition into a Maven project intends on:

  • separating the project into its modules.
  • deploying it to Maven central.
  • introducing a Maven plugin for generating Java sources out of an x-file within the Maven life cycle phase generate-sources.

However, the Ant-Build of Remote Tea is still supported and will at least get in charge to create the release zip files, which will be continued to be uploaded to SourceForge.

Version 1.1.0:

This is a minor feature/maintenance release.

New features

Client-side

  • The ONC/RPC client stub implementation has been extended by the method nullproc() as a convenient way to launch null procedure calls.
  • The instance of an ONC/RPC client stub implementation can now be bound to other ONC/RPC client instances during its lifetime via the method setClient(). Besides, a previously used ONC/RPC client instance will be closed by this method.

Server-side

  • With this release custom authentication schemes can be defined and registered to an ONC/RPC server stub.

jrpcgen

  • jrpcgen considers and realizes the following new command line options on invocation:
    -t create TCP server only
    -u create UDP server only
    -noxdr do not create XDR datatype classes

Maintenance

Server-side

  • Authentication failures such as bad credentials and bad verifier within ONC/RPC authentication handling have not been reported back to clients, properly. Such authentication failures lead now to an appropriate authentication failure reply to clients.

jrpcgen

  • Consider the following quite legal definitions in an .x-file:
    struct MyStructure {
      int x;
      int y;
    };
    
    typedef struct MyStructure MyStructure;
    
    The typedef caused an error recognizing a duplicate identifier. Such a typedef is now recognized and silently ignored.
    Keep in mind that a typedef such as
    typedef struct MyStructure TMyStructure;
    
    still leads to the generation of the java class:
    class TMyStructure {
    	
    	public MyStructure value;
    	
    ...
    }
    

Version 1.0.7:

You already guessed it: minor update/maintenance release.

  • Fixed inheriting character encoding from TCP-based listening server transport to the child TCP-based server connection transports.
  • Fixed/corrected behavior when registering server transports: an ONC/RPC exception with the reason OncRpcException.RPC_CANNOTREGISTER will now be thrown if the local portmapper denies port registration.

Version 1.0.6:

This is again a minor update/maintenance release.

  • Fixed encapsulation of properties when generating beans.
  • Fixed miscalculation of remaining timeout, which could case infinite timeouts.

Version 1.0.5:

This is a minor update/maintenance release.

  • Fixed a code generation error in jrpcgen which cause the protocol compiler to emit ONC/RPC server code that did not properly returned errors for unsupported programs.
  • Added new jrpcgen-test target to Ant build file so that the jrpcgen protocol compiler can be more easily tested on the example files.
  • Fixed build.xml Ant script to include also exactly this build file in the source code zip which gets uploaded to Source Forge.

Version 1.0.4:

It has been a long time since the previous release ... but yes, I finally managed to pick up the patches sent and rolled them into the new release. Many things changed in the meantime so I'm glad I got this release out of the door at all. My new employer throws all kind of really interesting tasks at me, so RemoteTea is now a really low profile project to me. If volunteers will step forward to maintain RemoteTea I would be glad to welcome them aboard the RemoteTea project.

  • Added a new option -bean to jrpcgen for generating accessors (setters and getters) for all elements in a structure. Option -bean also implies -ser. This feature bases on a patch from Ralph Neff.
  • jrpcgen now also accepts .x files without a program section. In this case no stub classes are generated, but Java source code files for all structures, enums, et cetera are still generated. This feature bases on a patch from Bialas Krzysztof.
  • Updated to new CPU runtime, see also the CUP LALR Parser Generator in Java Version 11 at TU Munich.
  • Incorporated patches for: compile target in Ant build file, include Ant task in jrpcgen.jar.
  • Thank you all who sent in patches!

Version 1.0.3:

This release marks my movement from the website of the good old Chair of Process Control Engineering to Sourceforge. Since Remote Tea has now quite some users, it was time to put the project on its own feet. Let's see where this will lead to.

  • With my transition from JBuilder to Eclipse a little bit of rearrangement of a few files was necessary. In particular, the old JBuilder project files are gone down the bit bucket, so say hello to the new Eclipse project files. With the switch to Eclipse we now have a free IDE for a free ONC/RPC package – and if you use ClassPath and an appropriate VM, then the whole thing is free.
  • Updated documentation – but you will probably already have noticed that from the new style of this and the other HTML files.
  • Yet another small correction to jrpcgen: it does not emit unnecessary import statements anymore. This silences especially the Eclipse IDE, but also other smart asses.
  • It is now possible to optionally control the character encoding used when (de-)serializing strings. The OncRpcClient class now has a pair of accessors setCharacterEncoding(encoding) and getCharacterEncoding(). Similiar, OncRpcServerStub gives control over character encoding on the server side.

Version 1.0.2:

  • Fixed a bug in jrpcgen, which caused the automatically generated constructor in server stubs, which accepts a port number, to ignore this port number.
  • Also squashed a bug which caused problems when definitions from enumerations where used as program numbers.
  • Small todo work done, so that jrpcgen now emits more useful information in the javadoc tags for remote procedure parameters and results.
  • Removed old and useless code from jrpcgen that has alread been commented out for quite some time.
  • Added new parameter -withcallinfo to jrpcgen. When specified on the command line, jrpcgen emits server method stubs which contain always as their first parameter an additional parameter holding information about the remote call itself. This can be used, for instance, for authentication purposes, et cetera. The parameter is always named call$ and of type OncRpcCallInformation.
  • Added new parameter -noclamp to jrpcgen. When -noclamp is specified on the command line, jrpcgen emits client method stubs which use the version number specified when creating the client object at runtime. When this option is not given, jrpcgen defaults to the current behavior and uses the version number as specified in the x-file.

Version 1.0.1:

  • Fixed a bug in jrpcgen, which emitted wrong stub code when a remote function contained more than one parameter: in this case, enumerations were not properly coerced to integers (thanks to Michael Smith for pointing this out and at the same time supplying the patch).
  • Fixed another bug in jrpcgen, which resulted in some (enumeration) constants not being dumped.

Version 1.0.0:

  • Tired of all the pre-1.0 releases in the past two years, I finally decided to go straight to the official 1.0 release. The past releases were primarily aiming at feature completeness to some degree, while the real basic parts were quite stable (with few improvements and bug fixes) over time. So, ... we have reached 1.0! ...and will probably soon get to 1.0.x, sigh.
  • For XDR structs with tail references to themselves, jrpcgen now emits serialization and deserialization code which uses an iteration loop instead of tail recursion. The benefit of this is that the call stack usage is considerably reduced. Of course, this optimization can only be applied if the reference to the same type is the last element of the structure.
  • Corrected a race condition, which sometimes caused the listening TCP thread in ONC/RPC servers to die with NullPointerExceptions. Many thanks to Michael Smith for hunting down this one. Classes concerned are OncRpcTcpConnectionServerTransport, OncRpcTcpServerTransport and OncRpcUdpServerTransport.
  • jrpcgen now exits the VM with a non-zero return code in case it was called through its static main and jrpcgen stumbled on an error. This allows jrpcgen to be used in classic make projects. The Apache Ant is not affected by this behavior.
  • Added an additional constructor to the classes OncRpcTcpServerTransport and OncRpcUdpServerTransport. It accepts now a local binding address. The server socket is then bound only to this/these local address(es). In addition, jrpcgen now emits source code for server stubs with an additional constructor which accepts the additional binding address.

Version 0.95.2:

  • Small change in OncRpcTcpSocketHelper.connect() to accept a negative timeout that signals to use the particular implementation-specific timeout value.
  • Added new constructor to OncRpcTcpClient, which accepts a timeout parameter (in milliseconds) as its last argument. This constructor can be used to limit the connection attempt period and finally makes the timeout functionality available which has been implemented in the 0.95.1 release. It is important to note that the timeout specified as the parameter to the constructor does not apply to later ONC/RPC calls. These are controlled as usual through the existing timeout-related accessors.
  • Made OncRpcPortmapClient a stand-alone class, which is not derived from OncRpcUdpClient any more. This now allows applications to contact the portmapper either using UDP/IP or TCP/IP (HTTP not yet supported).
  • Bumped up the versioning information in OncRpcConstants (I had forgotten to do so for the previous releases...).

Version 0.95.1:

After a long time (and a Ph.D. thesis on metamodelling for communication in operational process control engineering now written and on its way) I've finally managed to get a new RemoteTea release out of the door.

  • Implemented timeout-controlled connects for TCP-based ONC/RPC clients. The whole thing is a little bit tricky in view of pre-1.4 JREs. However, I definitely want to support JDK 1.2 and 1.3 (so much for write once, forget everywhere).

    The socket helper object features a connect method which can execute timeout-controlled connection establishment. In case the current VM Remote Tea is running on does not provide a proper implementation, Remote Tea resorts to the following algorithm:

    • The connect method creates a new thread which in turn tries to connect to the given port at the given host (an instance of the local class Connectiator is responsible for this).
    • The original thread initiating the Connectiator thread now waits for it to finish, but no longer than the timeout specified in the call to the connect method. In case the Connectiator does not succeed within the timeout period, an IOException is thrown by the connect method.
    • The Connectiator object will signal itself in case it succeeded, but also if it failed. Its getIOException method then either returns null or an IOException.
  • Fixed deserializing bug in XdrDecodingStream.xdrDecodeLong(), where unwanted sign extension messed up 64 bit wide integers (XDR hypers).
  • Fixed a long-standing feature in XdrTcpDecodingStream.fill(), which caused invalid header decoding if the fragment length was larger than 227.
  • Fixed sanity checks for those ONC/RPC partners sending empty XDR fragments as last fragments of XDR records – a trailing last XDR fragment that carries no data is now accepted. The fix concerns the class XdrTcpDecodingStream semantics of the fill method were slightly changed to return also in case of empty trailing record (lastFragment attribute must be true). All methods directly calling fill have been adapted (at least I hope so).
  • Improved handling of wrong or mismatching ONC/RPC messages for UDP-based ONC/RPC clients. They do not emit new calls any more when receiving replies from wrong sources and keep quiet instead until the timeout expires (as per current timeout strategy).
  • Fixed some buffer offset bugs (forgot to take care of CRLF at one place) in XdrHttpDecodingStream, for which patches were kindly offered by the austrian internet chamoises.
  • Added Ant task for jrpcgen as org.acplt.oncrpc.ant.JrpcgenTask, kindly provided by Jean-Francois Daune. This also involved some small changes to jrpcgen in order to make it available as a task.

Version 0.94.2:

  • Fixed bug in jrpcgen, which caused a crash when hashing a union's structure (needed to create serial version UIDs) and the union contained a non-empty default arm. Also added appropriate test case to demo.x.

Version 0.94.1:

  • Added two new code generation options to jrpcgen:
    • -ser: tag classes generated for XDR structs, XDR unions and XDR typedefs as serializable. Also automatically generates serialVersionUID using the SHA-1 algorithm. (My thanks to the GNU classpath project for providing the SHA-1 algorithm, please see Jrpcgen.SHA.java for license details).
    • -initstrings: automatically initialize all Strings as empty strings (""). Note that this may lead to lazy programming; better make explicitly sure that every member of a struct gets initialized properly before encoding the struct.

Version 0.93.1:

  • Once more fixed support for JDK 1.1 for Java-based ONC/RPC servers: the old code still used a LinkedList, which is only available since JDK 1.2. So I added a minimalist double linked list local class (it's in OncRpcTcpServerTransport.TransportList).
  • Worked around some broken JDKs 1.1 (especially on AIX, but I have also heard of problems on Linux), which have broken InetAddress.getLocalHost. The code now uses InetAdress.getByName("127.0.0.1"). Yeah, write once, does not work anywhere.
  • Added overloaded client.call method which expects an additional (procedure/protocol) version number as its second argument. This method is necessary so several versions can coexists peacefully in one client and can be called simultaneously. As before, if you do not specify a version in the call to client.call the default version is used as specified in the constructor. Please note that OncRpcClient-derived classes must now implement the overloaded call method expecting four parameters: procedure number, version number, parameters, and result (this only applies to those who want to implement their own ONC/RPC clients for different transports than those already provided).
  • Added support for multiple parameters in procedure declarations within x-files, to be more in sync with newer rpcgen releases. In addition, jrpcgen now also accept named parameters in remote procedure declarations. Both enhancements caused quite some changes in the code emitting parts of jrpcgen: local wrapper classes are used to serialize and deserialize multiple parameters.

Version 0.92.1:

  • Support for batched ONC/RPC calls when using TCP-based transports: see OncRpcTcpClient.batchCall() for more information.
  • Added support for handling multiple ONC/RPC programs and/or versions through the same server transport.
  • jrpcgen now emits a second constructor expecting the port number to bind transports to as its solely parameter. This allows server writers to bind their servers to well-known ports.
  • Added a jportmap and an embedded portmap service class. It can be used by standalone applications which should also be useable if the user has not installed a portmap service. I must have been bored or insane. Or both.
  • Made several OncRpcServerStub methods public (instead of protected), to give derived server classes more control over the way they spin up and down.

Version 0.91.2:

  • Ashes on my head for releasing 0.91.1 with a really dumb bug related to JDK 1.1 backwards compatibility which broke JDK2 compatibility completely. When using reflection one can not call the superclass' methods for obvious reasons, so an endless recursion occured in OncRpcTcpSocket. So much for almost not testing the release. To fix this stupid design bug the classes OncRpcTcpSocket and OncRpcUdpSocket were moved to OncRpcTcpSocketHelper and OncRpcUdpSocketHelper. They now merely support Socket and DatagramSocket instead of inheriting from them. This avoids the endless reflection method invocation loop, but is still cheaper in terms of method invocation performance than a wrapper class.
  • Fixed missing JDK 1.1 compatibility for the server classes.

Version 0.91.1:

  • Fixed a deserialization bug with AUTH_NONE on the server side in OncRpcServerAuth.xdrNew when recycling the AUTH_NONE handler singleton.
  • Removed automatic startup from the constructor of jrpcgen generated server stubs. The constructor of a server stub class now only creates the transport objects and sets the public transports field within class OncRpcServerStub. Registering with the portmapper as well as dispatching calls is now done within the run() method (note: without any parameters). You need to change your code accordingly by inserting a call to run(), otherwise the server will not start.
        MyServer myserver = new MyServer();
        myserver.run();
      
  • Preparations for cvs check-in: in order to handle individual Java projects in form of cvs submodules within the toplevel cvs module java, some files were moved. The JBuilder project files have been moved to the projects/ subdirectory.
  • Fixed problem with jrpcgen emitting constants which depend on other constants in wrong order. Constants which are needed by other constant definitions are now emitted first. In case an enumeration element depends on a global constant (or for some reason on another enumeration element), then the enclosure is taken into account too. The demo.x example now tests some pathological cases.
  • Added backward support for JDK 1.1. While I'm not very proud of it, many people requested this as quite some companies use the bug-ridden MS InternetExploder with its very own JVM. Changes include using addElement instead of add when adding objects to a Vector.
  • Moved the readme documentation into its own directory readme-first/ which should be more obvious to first-time users of the RemoteTea source code and does not clobber the projects/ directory any more.
  • Fixed NullPointerException in OncRpcTcpClient and OncRpcUdpClient when checking for rejected credentials – and I thought Java had no pointers.
  • jrpcgen: support for short form unsigned in addition to unsigned int (compatibility with rpcgen). Handling of octal numbers added (okay, it is still a valid number format). Fixed bug in the code generation of desciminated unions using booleans. Support for more than one program definition within the same x-file. In this case the source code files generated for the client and server stubs are named <x-filename><program-id>Client.java and <x-filename><program-id>Server.java, respectively.
  • First rough cut for tunneling ONC/RPC client calls through HTTP connections. On the other end, you will need the Tea Tunnel Apache DSO module, which untunnels calls and forwards them to the appropriate ONC/RPC server using direct TCP/IP or UDP/IP connections (or non-connections in the case of UDP/IP).
  • Added new package org.acplt.oncrpc.web containing helper classes for HTTP client connections (HttpClientConnection), and base64 encoding and decoding (Base64), as well as some other stuff.
  • Added new class OncRpcHttpClient, which stands in the tradition of OncRpcClient and implements sending ONC/RPC calls through HTTP tunnels. Also added XdrHttpDecodingStream, which can pull base64 encoded data from a web server and provide the decoded data through the usual decoding XDR stream interface.

Version 0.90.1:

  • Fixed XdrEncodingStream.xdrEncodeByteFixedVector() which falsely encoded length information about the following array of characters. I should take more care when doing Italian code recycling using copy & pasta...
  • Fixed bug in OncRpcTcpClient.call() which caused XDR buffer underflows when receiving the next reply after the previous reply has been rejected by an ONC/RPC server.
  • Updated package.html for package org.acplt.oncrpc to put it in sync with (de-) serializing fixed-size vectors and dynamic and fixed vectors of characters.
  • Added AUTH_UNIX authentication. For this to achieve quite some additions and changes were necessary – luckily, old applications will not be broken, as the changes are deep within the RemoteTea package:
    • See OncRpcClient for a description about how to use authentication with ONC/RPC clients.
    • For handling of client-side authentication issues, the classes OncRpcClientAuth, OncRpcClientAuthNone and OncRpcClientAuthUnix were added.
    • The ONC/RPC call and reply message classes OncRpcReplyMessage and OncRpcCallMessage are now both abstract. This was necessary because ONC/RPC protocol issues make it necessary to handle authentication through so-called authentication protocol handling objects different on the client side than on the server side. Additional classes now handle sending calls and receiving replies on the client side (OncRpcClientCallMessage and OncRpcClientReplyMessage respectively), as well as on the server side (OncRpcServerCallMessage and OncRpcServerReplyMessage). According to their needs, these new classes only declare those encoding and decoding methods which are really needed. In consequence, the base class OncRpcCallMessage has lost its XdrAble interface completely.
    • Added authentication handling and credential refreshing to OncRpcUdpClient and OncRpcTcpClient, as well as to the base class OncRpcClient.
    • Added authentication protocol handling to ONC/RPC transports. If servers want to take advantage of authentication, they need to look at the callMessage.auth attribute of the OncRpcCallInformation delivered with each incomming ONC/RPC call. See tests.org.acplt.oncrpc.ServerTest.java for an example.
    Please note that AUTH_DES is still not supported, as this needs quite some things to be done and I don't have full information about the AUTH_DES protocol.
  • Added new classes XdrBufferEncodingStream and XdrBufferDecodingStream for encoding and decoding XDR data from and to a fixed-size buffer. These classes comes in handy when dealing with shorthand credentials.
  • Added class XdrDynamicOpaque to handle variable-sized vectors of bytes.
  • Moved the jrpcgen package to org.acplt.oncrpc.apps.jrpcgen, because it's an application belonging very tight to ONC/RPC.
  • Added new OncRpcConstants.REMOTETEA_VERSION_PREVERSION, which indicates preversions if not zero.

Version 0.86.1:

  • As Sun's rpcgen encodes char<> as a series of characters, each one sitting happily in its very own XDR int (that is, four bytes), the two methods XdrDecodingStream.xdrDecodeBytes() and XdrEncodingStream.xdrEncodeBytes() were renamed to XdrDecodingStream.xdrDecodeByteVector() and XdrEncodingStream.xdrEncodeByteVector() as well as their semantics changed accordingly.
  • Added methods XdrDecodingStream.xdrDecodeDynamicOpaque(), XdrEncodingStream.xdrEncodeDynamicOpaque(), XdrDecodingStream.xdrDecodeByteFixedVector() and XdrEncodingStream.xdrEncodeByteFixedVector().
  • Fixed jrpcgen accordingly, so it generates proper code for arrays of bytes and opaque data types accordingly.
  • Made all non-abstract encoding and decoding methods in XdrDecodingStream and XdrEncodingStream finally final. Maybe this helps Java compilers improve code speed. Maybe.
  • Fixed jrpcgen code generation error when the size of an array was specified using a constant identifier. Now jrpcgen properly references the constant from the x-file's main class.
  • Fixed some documentation errors for XdrDecodingStream and XdrEncodingStream.

Version 0.85.1:

  • Added new method readBuffer() to class XdrTcpDecodingStream. This fixes problems when reading from a TCP/IP stream and not all bytes wanted are immediately available, thus stream.read() returning not all bytes at once (shame on me for not reading the java.io documentation attentive enough).

Version 0.84.1:

  • Added control over the retransmission strategy used by UDP/IP-based ONC/RPC clients. The default strategy is now not to resend lost ONC/RPC calls (retransmission timeout is set to the overall timeout). Either a fixed retransmission timeout can be choosen, where lost calls are resend every <retransmission timeout> milliseconds, or an exponential back-off alogorithm. The exponential scheme starts with the retransmission timeout and doubles it every time a call is lost, until the overall timeout is reached.
  • Added two more constructors to ONC/RPC clients generated by jrpcgen from x-files. These constructors now also accept the remote program number, so application writers gain full control.

Version 0.83.1:

  • Fixed support for indirection in decriminated unions. Also cleaned up some minor things related to constants and enumerations. Thanks to Ulrik Sandberg for throwing all kinds of vicious x-files at jrpcgen.

Version 0.82.1:

  • Added support for indirection in x-files, also called optional data in ONC/RPC babble. Also added a new test case to the demo.x file.

Version 0.81.1:

  • Added broadcasting of ONC/RPC calls to UDP/IP-based ONC/RPC clients through the new broadcastCall of method in class OncRpcUdpClient.
  • Added helper methods for encoding and decoding fixed-size vectors for various base data types.
  • Added a description about mapping rpcgen (RFC 1832) data types to Java data type.
  • Added an RPC protocol compiler named jrpcgen. Sun's documentation on the rpcgen syntax and grammar is rather thin and sometimes inaccurate. As always, I had to resort to RTSL (Read The Source, Luke!) to find out what syntax and grammar rpcgen does in fact use. Please give it a try and report problems. Note that there is no preprocessor step.

Version 0.80.2:

  • Fixed a buffer underflow exception in XdrUdpDecodingStream in methods xdrDecodeOpaque(int) and xdrDecodeOpaque(byte[],int,int). This cures the bug where a XDR string being the last piece of information in a RPC call or reply could not be read successfully.
  • Added org.acplt.oncrpc.OncRpcConstants, which contains versioning information.

Version 0.80.1:

  • Separated the ONC/RPC package under the name Remote Tea from the ACPLTea package. As the ONC/RPC implementation is pretty functional the version number was changed to reflect this.
  • Added XDR primitive and serializable data types for strings, floats, etc.

Version 0.35.1 and before:

  • Graciously hidden in the mist of history (probably also in the midst of history). The Remote Tea package was then only available together with the ACPLTea package, but not separate.




© 2015 - 2024 Weber Informatics LLC | Privacy Policy