Hi Justin, Thanks for sharing your experience. I think I prefer your approach which is more flexible.
I'm close to conclude that the ConverterService should be deprecated in 1.1. Anyone has strong opinion about such a move? Best regards, Jerome > -----Message d'origine----- > De : Justin Makeig [mailto:[EMAIL PROTECTED] > Envoyé : lundi 24 septembre 2007 19:28 > À : [email protected] > Objet : Re: ConverterService > > I think, what Jerome is talking about is moving the logic from > Resource#getRepresentation(Variant) into the ConverterService and > doing the same type of branching, just at a higher level. I like the > fact that I can declare my ConverterService as a Singleton and thus > instantiate it and all of its collaborators once (e.g. XStream or > Freemarker converters). However, the voluminous if blocks and the > lack of access to the Request and Response turned me off. What I've > done is create an application-specific base AbstractResource class. > It handles generic conversion to JSON and XML, while the concrete > Resource does the HTML (because HTML requires metadata that can't be > handled generically). In the abstract class, I've got a > template method, > > Representation getCustomRepresentation(Variant) > > that, by default, returns null. AbstractResource#getRepresentation > (Variant) checks if the implementing class has handled the selected > variant (i.e. when getCustomRepresentation returns a non-null > Representation) and passes it along. Otherwise, it tries to create > the Representation itself: > > @Override > public final Representation getRepresentation(Variant variant) { > Representation r = getCustomRepresentation(variant); > if (null != r) { > return r; > } > if (MediaType.TEXT_XML.equals(variant.getMediaType())) { > return new XStreamRepresentation(variant.getMediaType(), ); > } > > return null; > } > > I'm not sure this is the most elegant way to handle things, though. > Any comments would be appreciated. > > Justin > > On Sep 24, 2007, at 10:16 AM, Sumit Lohia wrote: > > > Jerome Louvel <contact <at> noelios.com> writes: > > > >> It seems indeed like this service would help you to centralize your > >> conversion logic. But nothing is done automatically, you still > >> need to > >> manually call getEntityAsObject() or setEntity(Object) methods in > >> order to > >> trigger the converter service. > >> > > > > But if I need to support both XML and JSON representations, > I would > > need two > > converter services, right? Or do you see the toRepresentation() > > method on > > ConverterService accepting a MediaType/Variant parameter? > > > > Thanks. > > > > Sumit

