I have a problem, in that I'm currently trying to make a build of this for an internal client. As I haven't really looked at this code in great depth I had to take it on faith that it works and will interop with the Java (note that I'm not blaming you for this, quite the opposite as you are doing a lot to fix and improve it, I mean that I'm relying on the code left behind by Steve Shaw being in working order - with no docs and little tests and with the Java code having evolved substantially since he stopped working on the .Net this doesn't seem likely...). No interop tests means that I had to write some on friday and then find out that it doesn't work.
An 'experimental patch' at the last moment before putting out a build seems a bit hairy! But I'm also looking at the existing code and begining to realise that there are a lot of things needed to get this working and that it just isn't in a fit state for giving out a build other than for experimental purposes. I think I may as well take your patch and go from there, as I'm going to have to fix those things anyway. I have an implementation of the topic listener and publisher (which are the current interop tests capable of talking to the c++ and java clients) so I can try those with your patch. I'll get the tests and patch submitted too, so we have a common code base to work from. Suggest you attach your patch to the most appropriate Jira or create a new one for it. On 2/26/07, Tomas Restrepo <[EMAIL PROTECTED]> wrote:
Hi Rupert, > Problem 1: Qpid.Client.Message.QpidHeaders is equivalent to > org.apache.qpid.client.message.JMSHeaderAdapter in the Java code. It > prepends the header field types onto the property names which the Java > code no longer does. Sending a message with a field table from .Net to > Java confuses the Java because it gets the property names wrong. I'm > bringing QpidHeaders inline with the Java code at the moment so I'll > patch that one soon enough. Yep, noticed that one. But there's much more wrong there. > > Problem 2: Sending a header field from Java to .Net causes > NotImplementedException at Qpid.Buffer.FixedByteBuffer, line 178 > (slice method). Not sure of the cause of this yet but will be > investigating soon. I know it. Implementing it with the code as is, is a lot of work. > Yes, I see what you mean about lack of tests and dependencies. I'll > follow your approach of changing as little as possible, and > documenting as I go for the moment. Rupert, if you want, I spent some time working this weekend on this and made a lot of progress here. If you're interested, I can send you my code. Basically, I've got an experimental patch that: - Reimplements Qpid.Buffer almost from scratch with only what we need for now. It's got a new set of unit tests giving close to 80% coverage for now. It probably has bugs, but it works pretty well so far. It also implements the necessary Slice(), fixes the coding convention names (i.e gets rid of the java naming) - Fixed several bugs I ran into in FieldTable while testing - Alreary rewrites the QpidHeaders class to get rid of the type code issue and fixes a couple more things there - Fixes some issues in the EncodingUtils class I ran into - Fixes some issues in how the message expiration header was getting parsed (it was handled incorrectly which sometimes caused a NullReferenceException to get thrown, plus, the field was of the wrong type). With this changes, I've been able to successfully send a message from a Java client to a .NET client and back through the Java broker and back, including having a custom int header property. So that much works on my current implementation. If you're interested in it, it might be a place to start. Tomas Restrepo [EMAIL PROTECTED] http://www.winterdom.com/weblog/
