You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Robbie Gemmell <ro...@gmail.com> on 2011/06/10 18:06:47 UTC

Re: Java QMF console classes in org.apache.qpid.console seem very broken!!

These classes were recently removed from the code base due to the
apparent issues with them and lack of anyone maintaining them. They
were never updated alongside changes made to the QMF implementation in
the C++ broker (mainly the addition of QMF2, which I understand is
quite different to QMF1) and appear to have had no active maintenance
since their addition, and so have simply been removed.

Robbie

On 10 June 2011 16:20, Ilyushonak Barys <Ba...@troika.ru> wrote:
> Hi, fadams
>
> Have you any update?
>
> -----Original Message-----
> From: fadams [mailto:fraser.adams@blueyonder.co.uk]
> Sent: Sunday, March 13, 2011 3:18 PM
> To: users@qpid.apache.org
> Subject: Java QMF console classes in org.apache.qpid.console seem very broken!!
>
> I'm using qpid v0.8 and I'm running the c++ broker.
>
> For a bit of fun I thought that it would be interesting to see if I could write something like qpid-config in Java. I noticed that there are a bunch of Java classes in org.apache.qpid.console that mirror the Python classes used in qpid-config so it seemed pretty plausible....
>
> my rather hacky test class starts out as follows......
>
> import org.apache.qpid.console.ClassKey; import org.apache.qpid.console.ObjectID; import org.apache.qpid.console.QMFObject;
> import org.apache.qpid.console.Session;
>
> import java.util.*;
> import java.io.*;
>
> public class Config
> {
>        private Session qmf;
>
>        public Config() {
>                qmf = new Session();
>
> qmf.addBroker("amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'");
>        }
>
>        public void listExchanges(String filter) {
>                HashMap&lt;String, Object&gt; args = new HashMap&lt;String, Object&gt;();
>
>                args.put("_class", "queue");
>                ArrayList queues = qmf.getObjects(args);
>
> System.out.println("queues size " + queues.size());
>                for (QMFObject queue : queues) {
>                        String queueID = queue.getObjectID().toString(); System.out.println("queueID " + queueID);
>
>                        String qname = (String)queue.getProperty("name");
> System.out.println("qname " + qname);
>                }
>         }
>
>
> Now things started to go wrong right from the start in addBroker() as org.apache.qpid.console.Broker has a bunch of old BURL style destinations hard-coded.
>
> I hacked those slightly to use new style address syntax but addBroker() hung a lot eventually giving "Timeout waiting for Broker to Sync" exceptions.
>
> After some digging I realised that handleSchemaResponse in Session wasn't returning and traced that to problems with SchemaArgument.java, SchemaMethod.java, SchemaProperty.java, SchemaVariable.java and SchemaStatistic.java
>
> These all seemed to have problems with casting String types e.g. in SchemaVariable populateData there's a line:
>
> setName((String) map.get("name"));
>
> that hangs (there's similar for the other classes)
>
> It looks like map.get("name") doesn't return a string, rather it returns byte[] so replacing the above line with:
>
> String name = new String((byte[])map.get("name")); setName(name);
>
> And the equivalent in the other classes got handleSchemaResponse working.
>
> So with all my hacky fixes I got a lot further but unfortunately with my Config class
>
> HashMap&lt;String, Object&gt; args = new HashMap&lt;String, Object&gt;(); args.put("_class", "queue"); ArrayList queues = qmf.getObjects(args);
>
> only ever seems to get populated with a single queue.
>
> When I try looking up the exchange and binding classes these seem to return what I'd expect (comparing with qpid-config), but the queue class stubbornly refuses to return more than one temporary queue.
>
> I added some System.out.println and I'm only getting a single handleContentIndicator response from the queues = qmf.getObjects(args); call
> - though when I tweak to look at binding & exchange that seems more sensible
>
> handleContentIndicator ClassKey name = org.apache.qpid.broker.queue queues size 1 queueID 0-58-1-0-452 qname TempQueue33822ecd-dbe7-4f5e-9cfc-fdf74b29df26
>
>
> It feels like I'm on a losing battle.
>
> Does anyone have any thoughts - my "bit of fun" over the weekend has turned out anything but....
>
> MTIA
> fadams
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Java-QMF-console-classes-in-org-apache-qpid-console-seem-very-broken-tp6166131p6166131.html
> Sent from the Apache Qpid users mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>
> _______________________________________________________
>
> The information contained in this message may be privileged and conf idential and protected from disclosure. If you are not the original intended recipient, you are hereby notified that any review, retransmission, dissemination, or other use of, or taking of any action in reliance upon, this information is prohibited. If you have received this communication in error, please notify the sender immediately by replying to this message and delete it from your computer. Thank you for your cooperation. Troika Dialog, Russia.
> If you need assistance please contact our Contact Center  (+7495) 258 0500 or go to www.troika.ru/eng/Contacts/system.wbp
>
>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Re: Java QMF console classes in org.apache.qpid.console seem very broken!!

Posted by Ted Ross <tr...@redhat.com>.
One of the main differences in QMFv2 is that the messages use the 
map/list encodings which make the contents much more user friendly.  As 
such, the functionality of qpid-config could readily be implemented 
using just the JMS messaging interface (or any other language interface) 
without need for special libraries.  I'll see if I can dig up the 
documentation for the message formats for the broker.

-Ted

On 06/10/2011 12:06 PM, Robbie Gemmell wrote:
> These classes were recently removed from the code base due to the
> apparent issues with them and lack of anyone maintaining them. They
> were never updated alongside changes made to the QMF implementation in
> the C++ broker (mainly the addition of QMF2, which I understand is
> quite different to QMF1) and appear to have had no active maintenance
> since their addition, and so have simply been removed.
>
> Robbie
>
> On 10 June 2011 16:20, Ilyushonak Barys<Ba...@troika.ru>  wrote:
>> Hi, fadams
>>
>> Have you any update?
>>
>> -----Original Message-----
>> From: fadams [mailto:fraser.adams@blueyonder.co.uk]
>> Sent: Sunday, March 13, 2011 3:18 PM
>> To: users@qpid.apache.org
>> Subject: Java QMF console classes in org.apache.qpid.console seem very broken!!
>>
>> I'm using qpid v0.8 and I'm running the c++ broker.
>>
>> For a bit of fun I thought that it would be interesting to see if I could write something like qpid-config in Java. I noticed that there are a bunch of Java classes in org.apache.qpid.console that mirror the Python classes used in qpid-config so it seemed pretty plausible....
>>
>> my rather hacky test class starts out as follows......
>>
>> import org.apache.qpid.console.ClassKey; import org.apache.qpid.console.ObjectID; import org.apache.qpid.console.QMFObject;
>> import org.apache.qpid.console.Session;
>>
>> import java.util.*;
>> import java.io.*;
>>
>> public class Config
>> {
>>         private Session qmf;
>>
>>         public Config() {
>>                 qmf = new Session();
>>
>> qmf.addBroker("amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'");
>>         }
>>
>>         public void listExchanges(String filter) {
>>                 HashMap&lt;String, Object&gt; args = new HashMap&lt;String, Object&gt;();
>>
>>                 args.put("_class", "queue");
>>                 ArrayList queues = qmf.getObjects(args);
>>
>> System.out.println("queues size " + queues.size());
>>                 for (QMFObject queue : queues) {
>>                         String queueID = queue.getObjectID().toString(); System.out.println("queueID " + queueID);
>>
>>                         String qname = (String)queue.getProperty("name");
>> System.out.println("qname " + qname);
>>                 }
>>          }
>>
>>
>> Now things started to go wrong right from the start in addBroker() as org.apache.qpid.console.Broker has a bunch of old BURL style destinations hard-coded.
>>
>> I hacked those slightly to use new style address syntax but addBroker() hung a lot eventually giving "Timeout waiting for Broker to Sync" exceptions.
>>
>> After some digging I realised that handleSchemaResponse in Session wasn't returning and traced that to problems with SchemaArgument.java, SchemaMethod.java, SchemaProperty.java, SchemaVariable.java and SchemaStatistic.java
>>
>> These all seemed to have problems with casting String types e.g. in SchemaVariable populateData there's a line:
>>
>> setName((String) map.get("name"));
>>
>> that hangs (there's similar for the other classes)
>>
>> It looks like map.get("name") doesn't return a string, rather it returns byte[] so replacing the above line with:
>>
>> String name = new String((byte[])map.get("name")); setName(name);
>>
>> And the equivalent in the other classes got handleSchemaResponse working.
>>
>> So with all my hacky fixes I got a lot further but unfortunately with my Config class
>>
>> HashMap&lt;String, Object&gt; args = new HashMap&lt;String, Object&gt;(); args.put("_class", "queue"); ArrayList queues = qmf.getObjects(args);
>>
>> only ever seems to get populated with a single queue.
>>
>> When I try looking up the exchange and binding classes these seem to return what I'd expect (comparing with qpid-config), but the queue class stubbornly refuses to return more than one temporary queue.
>>
>> I added some System.out.println and I'm only getting a single handleContentIndicator response from the queues = qmf.getObjects(args); call
>> - though when I tweak to look at binding&  exchange that seems more sensible
>>
>> handleContentIndicator ClassKey name = org.apache.qpid.broker.queue queues size 1 queueID 0-58-1-0-452 qname TempQueue33822ecd-dbe7-4f5e-9cfc-fdf74b29df26
>>
>>
>> It feels like I'm on a losing battle.
>>
>> Does anyone have any thoughts - my "bit of fun" over the weekend has turned out anything but....
>>
>> MTIA
>> fadams
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Java-QMF-console-classes-in-org-apache-qpid-console-seem-very-broken-tp6166131p6166131.html
>> Sent from the Apache Qpid users mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>
>>
>> _______________________________________________________
>>
>> The information contained in this message may be privileged and conf idential and protected from disclosure. If you are not the original intended recipient, you are hereby notified that any review, retransmission, dissemination, or other use of, or taking of any action in reliance upon, this information is prohibited. If you have received this communication in error, please notify the sender immediately by replying to this message and delete it from your computer. Thank you for your cooperation. Troika Dialog, Russia.
>> If you need assistance please contact our Contact Center  (+7495) 258 0500 or go to www.troika.ru/eng/Contacts/system.wbp
>>
>>
>>
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>
>>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:dev-subscribe@qpid.apache.org
>


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org