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
