[ https://issues.apache.org/activemq/browse/AMQCPP-34?page=all ]
Timothy Bish reassigned AMQCPP-34:
----------------------------------
Assignee: Timothy Bish (was: Nathan Mittler)
> Use covariant return type for clone()
> -------------------------------------
>
> Key: AMQCPP-34
> URL: https://issues.apache.org/activemq/browse/AMQCPP-34
> Project: ActiveMQ C++ Client
> Issue Type: Improvement
> Components: CMS Impl
> Affects Versions: 1.1
> Reporter: Albert Strasheim
> Assigned To: Timothy Bish
> Attachments: covariant-clones-cms.diff, covariant-clones.diff
>
>
> The cms::Message type has a pure virtual clone() method that returns a
> cms::Message*. cms::BytesMessage doesn't have a clone method. So it continues
> down the inheritance chain until we get to classes like
> activemq::connector::stomp::commands::TextMessageCommand which implement
> clone() and define it to return cms::Message*.
> This means that in my message listener I have to cast the result of a
> BytesMessage->clone() (which I already know is a BytesMessage) to
> BytesMessage before I can use it as such.
> Instead, BytesMessage should override clone() with another pure virtual that
> returns cms::BytesMessage. I think this is called a covariant return type.
> After that, TextMessageCommand's clone should probably be modified to return
> TextMessageCommand*. I don't know if there's anything in between that
> warrants a clone with a covariant return type.
> Fixing this will make the library slightly easier to use.
> Basic patch attached. There's probably more places to fix. Patch also has a
> few typo fixes.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira