On Saturday 27 September 2008 8:03:25 am Quilleash, Michael (IT) wrote:
> Hi all,
>
> Is there any reason there are two different, but similar in functionality,
> methods on the Message API?
>
> getContent( Class<T> clazz ) and get( Class<T> clazz ) both seem to do
> pretty much the same thing.  Just a bit confusing when I accidently use
> them interchangably.

The content is really the "content" that was transferred.   The "get" is 
basically a map of properties (litterally, Map<String, Object>) that can be 
associated with the message/exchange.   Basically, a place for interceptors 
to store extra information as the message flows.

The get(Class<T>) and put(Class<T>,..) methods are just wrappers that do:
this.get(cls.getName())
type of thing as a convenience. 

Dan



> I also noticed that setContent doesn't enforce the generic type properly.
>
>     <T> void setContent(Class<T> format, Object content);
>     <T> T getContent(Class<T> format);
> Would allow class and object types to be incompatible and then a subsequent
> call to getContent() would ClassCastException.
>
> e.g.
>
> // compiles ok
> setContent( XMLStreamReader.class, new Integer( 0 ) );
>
> // fails at runtime despite generic "safety"
> XMLStreamReader xmlStreamReader = getContent( XMLStreamReader.class );
>
> The get/put pairing enforces this correctly.
>
> Cheers.
>
> Michael Quilleash
> Morgan Stanley | Technology
> 20 Cabot Square | Canary Wharf | Floor 01
> London, E14 4QW
> Phone: +44 20 7677-4543
> [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]
>com> --------------------------------------------------------
>
> NOTICE: If received in error, please destroy and notify sender. Sender does
> not intend to waive confidentiality or privilege. Use of this email is
> prohibited when received in error.



-- 
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog

Reply via email to