+1 for deprecating ConverterService :-) 

----- Original Message ----- 
From: "Jerome Louvel" <[EMAIL PROTECTED]> 
To: [email protected] 
Sent: Monday, September 24, 2007 1:55:25 PM (GMT-0500) America/New_York 
Subject: RE: ConverterService 


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 

Reply via email to