qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robbie Gemmell (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (QPID-3156) Java client implementation of the Address syntax for Destinations throws a ClassCastException when used with the documented 'True' or 'False' values for node durability
Date Tue, 12 Jul 2011 14:47:00 GMT

     [ https://issues.apache.org/jira/browse/QPID-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Robbie Gemmell resolved QPID-3156.
----------------------------------

    Resolution: Fixed

Closing out, changes were committed long ago to address this.

> Java client implementation of the Address syntax for Destinations throws a ClassCastException
when used with the documented 'True' or 'False' values for node durability
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-3156
>                 URL: https://issues.apache.org/jira/browse/QPID-3156
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.6, 0.7, 0.8, 0.9, 0.10
>            Reporter: Robbie Gemmell
>             Fix For: 0.11
>
>         Attachments: 0001-QPID-3156-Use-MapAccessor-to-retrieve-Boolean-proper.patch
>
>
> The Java client implementation of the Address syntax for destinations throws a ClassCastException
when used with the documented (http://qpid.apache.org/books/0.8/Programming-In-Apache-Qpid/html/ch02s04.html#section-address-string-bnf)
'True' or 'False' values for node durability, instead requiring that users specify 'true'
or 'false' as the value to achieve the desired effect. The former is parsed as a boolean value
by the AddressParser whereas the later is parsed as a String, but the AddressHelper implementation
expects the durable property to be defined as a String and casts the value as such without
doing an instanceof check after retrieving it from an untyped Map, thus leading to the ClassCastException
observed.
> Ideally I would suggest the parser/helper should accept both variations going forward,
thus preserving compatibility for anyone with already functional code and also making it possible
for users to use whichever variant they prefer because e.g. it is best suited to a particular
implementation language idiom.
> Reported by a user via the dev list:
> I tried to create a durable queue like this
> queue = queueSession.createQueue("myQueue;{create:always, node:{durable:
> True}}");
>         QueueSender queueSender = queueSession.createSender(queue);
>         queueSender.send(textMessage);
> and getting this exception.
> Caused by: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
>     at
> org.apache.qpid.client.messaging.address.AddressHelper.getDurability(AddressHelper.java:237)
>     at
> org.apache.qpid.client.messaging.address.AddressHelper.fillInCommonNodeArgs(AddressHelper.java:222)
>     at
> org.apache.qpid.client.messaging.address.AddressHelper.createQueueNode(AddressHelper.java:215)
>     at
> org.apache.qpid.client.messaging.address.AddressHelper.getSourceNode(AddressHelper.java:254)
>     at
> org.apache.qpid.client.AMQDestination.rebuildTargetAndSourceNodes(AMQDestination.java:888)
>     at
> org.apache.qpid.client.AMQSession_0_10.resolveAddressType(AMQSession_0_10.java:1272)
> thanks,
> Amila.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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


Mime
View raw message