Re: Multiple content types

2009-07-06 Thread Thierry Boileau
Hello Sherif,

I've tried with your sample code, and it works for me.
I've just changed this piece of code, in the represent method:

MediaType mediaType = variant.getMediaType();
if (MediaType.APPLICATION_JSON.equals(mediaType))

I send you my sample code, that, I've tested it with Restlet 1.1 and 
Restlet 1.2 (current trunk in both cases) .

Best regards,
Thierry Boileau
 Okay..
 I had to add an XLS Representation for a resource and I wan to support a 
 suffix of .json for JSON and .XLS for Excel , but using the code below (and 
 rest of the code in the previous thread).

 no matter what extension I use (even other than XLS OR JSON). the 
 Variant.Representation in my represent(Variant variant) method in the 
 resource class always picks up JSON as the type..

 Thanks

 public HelloWorldResource(Context context, Request request, Response 
 response) {

  super(context, request, response);
   getVariants().add(new Variant(MediaType.APPLICATION_EXCEL));
   getVariants().add(new Variant(MediaType.APPLICATION_JSON));

 }


   
 Hi Sherif,

 .js is javascript
 .json is json :0)

 There is no need to add js or json to the MetadataService as it comes 
 with a bunch of common ones already.
 Remove that line, and try

 http://localhost:8080/firstStepsServlet/Hello.json (Notice the JSON)


 Jon

 Sherif wrote:
 
 Thanks Jonathan..

 1. Here’s what I did to support lets say “.js� as an extension to 
 indicate JSON as the content type

 *public* *class* FirstStepsApplication *extends* Application {

 /**

 * Creates a root Restlet that will receive all incoming calls.

 */

 @Override

 *public* Restlet createRoot() {

 // Create a router Restlet that routes each call to a

 // new instance of HelloWorldResource.

 Router router = *new* Router(getContext());

 // Defines only one route

 router.attachDefault(HelloWorldResource.*class*);

 *this*.getTunnelService().setExtensionsTunnel(*true*);

 *this*.getTunnelService().setEncodingParameter(output);

 *this*.getMetadataService().addExtension(js, *new* 
 Metadata(MediaType./APPLICATION_JSON/.getName(), 
 MediaType./APPLICATION_JSON/.getDescription()), *true* );

 *return* router;

 }

 }

 *public* *class* HelloWorldResource *extends* Resource {

 *public* HelloWorldResource(Context context, Request request, Response 
 response) {

 *super*(context, request, response);

 // This representation has only one type of representation.

 getVariants().add(*new* Variant(MediaType./TEXT_PLAIN/));

 getVariants().add(*new* Variant(MediaType./APPLICATION_JSON/));

 }

 /**

 * Returns a full representation for a given variant.

 */

 @Override

 *public* Representation represent(Variant variant) *throws* 
 ResourceException {

 Representation representation = *null*;

 *if*(variant.getMediaType() == MediaType./APPLICATION_JSON/){

 representation = *new* JsonRepresentation(Hello World);

 }*else* *if* ( variant.getMediaType() == MediaType./TEXT_PLAIN/){

 representation = *new* StringRepresentation(

 hello, world, MediaType./TEXT_PLAIN/);

 }

 *return* representation;

 }

 }

 However when I call the service using the following URL 
 http://localhost:8080/firstStepsServlet/Hello.js the Variant type in 
 the HelloWorldResource is of MediaType.TEXT_PLAIN

 Thanks for Your help

 *From:* Jonathan Hall (via Nabble) 
 [mailto:ml-user+125526-1692215...@... 
 http://n2.nabble.com/user/SendEmail.jtp?type=nodenode=3043073i=0]
 *Sent:* Friday, June 05, 2009 1:29 PM
 *To:* Sherif
 *Subject:* Re: Multiple content types

 Have a look at
 http://www.restlet.org/documentation/2.0/api/org/restlet/service/TunnelService.html

 getTunnelService().setExtensionsTunnel(true);

 Jon

 Sherif wrote:
   
 I realize RESTLet supports multiple encodings based on the Accept 
 
 Encoding
   
 headers. Does Restlet also have a way to allow encodings based on 
 
 URI patter
   
 e.g. http://mystores/items/1000.json or something like that ?

 
 --
 http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775
  
 http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775

 

 This email is a reply to your post @ 
 http://n2.nabble.com/Multiple-content-types-tp3031817p3031841.html
 You can reply by email or by visting the link above.


 
 View this message in context: RE: Multiple content types 
 http://n2.nabble.com/Multiple-content-types-tp3031817p3043073.html
 Sent from the Restlet Discuss mailing list archive 
 http://n2.nabble.com/Restlet-Discuss-f1400322.html at Nabble.com.
   

 --
 http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2367141



--
http://restlet.tigris.org/ds

RE: Re: Multiple content types

2009-07-05 Thread Jerome Louvel
Hi Sherif,

Could you send us the trace of your HTTP request/response exchange including 
HTTP headers? I suscept that you Accept header might not be correct.

Best regards,
Jerome Louvel
--
Restlet ~ Founder and Lead developer ~ http://www.restlet.org
Noelios Technologies ~ Co-founder ~ http://www.noelios.com




-Message d'origine-
De : Sherif Ahmed [mailto:sherifah...@hotmail.com] 
Envoyé : mercredi 1 juillet 2009 20:00
À : discuss@restlet.tigris.org
Objet : RE: Re: Multiple content types

Okay..
I had to add an XLS Representation for a resource and I wan to support a suffix 
of .json for JSON and .XLS for Excel , but using the code below (and rest of 
the code in the previous thread).

no matter what extension I use (even other than XLS OR JSON). the 
Variant.Representation in my represent(Variant variant) method in the resource 
class always picks up JSON as the type..

Thanks

public HelloWorldResource(Context context, Request request, Response response) {

 super(context, request, response);
getVariants().add(new Variant(MediaType.APPLICATION_EXCEL));
getVariants().add(new Variant(MediaType.APPLICATION_JSON));

}


 Hi Sherif,
 
 .js is javascript
 .json is json :0)
 
 There is no need to add js or json to the MetadataService as it comes 
 with a bunch of common ones already.
 Remove that line, and try
 
 http://localhost:8080/firstStepsServlet/Hello.json (Notice the JSON)
 
 
 Jon
 
 Sherif wrote:
 
  Thanks Jonathan..
 
  1. Here’s what I did to support lets say “.js” as an extension to 
  indicate JSON as the content type
 
  *public* *class* FirstStepsApplication *extends* Application {
 
  /**
 
  * Creates a root Restlet that will receive all incoming calls.
 
  */
 
  @Override
 
  *public* Restlet createRoot() {
 
  // Create a router Restlet that routes each call to a
 
  // new instance of HelloWorldResource.
 
  Router router = *new* Router(getContext());
 
  // Defines only one route
 
  router.attachDefault(HelloWorldResource.*class*);
 
  *this*.getTunnelService().setExtensionsTunnel(*true*);
 
  *this*.getTunnelService().setEncodingParameter(output);
 
  *this*.getMetadataService().addExtension(js, *new* 
  Metadata(MediaType./APPLICATION_JSON/.getName(), 
  MediaType./APPLICATION_JSON/.getDescription()), *true* );
 
  *return* router;
 
  }
 
  }
 
  *public* *class* HelloWorldResource *extends* Resource {
 
  *public* HelloWorldResource(Context context, Request request, Response 
  response) {
 
  *super*(context, request, response);
 
  // This representation has only one type of representation.
 
  getVariants().add(*new* Variant(MediaType./TEXT_PLAIN/));
 
  getVariants().add(*new* Variant(MediaType./APPLICATION_JSON/));
 
  }
 
  /**
 
  * Returns a full representation for a given variant.
 
  */
 
  @Override
 
  *public* Representation represent(Variant variant) *throws* 
  ResourceException {
 
  Representation representation = *null*;
 
  *if*(variant.getMediaType() == MediaType./APPLICATION_JSON/){
 
  representation = *new* JsonRepresentation(Hello World);
 
  }*else* *if* ( variant.getMediaType() == MediaType./TEXT_PLAIN/){
 
  representation = *new* StringRepresentation(
 
  hello, world, MediaType./TEXT_PLAIN/);
 
  }
 
  *return* representation;
 
  }
 
  }
 
  However when I call the service using the following URL 
  http://localhost:8080/firstStepsServlet/Hello.js the Variant type in 
  the HelloWorldResource is of MediaType.TEXT_PLAIN
 
  Thanks for Your help
 
  *From:* Jonathan Hall (via Nabble) 
  [mailto:ml-user+125526-1692215...@... 
  http://n2.nabble.com/user/SendEmail.jtp?type=nodenode=3043073i=0]
  *Sent:* Friday, June 05, 2009 1:29 PM
  *To:* Sherif
  *Subject:* Re: Multiple content types
 
  Have a look at
  http://www.restlet.org/documentation/2.0/api/org/restlet/service/TunnelService.html
 
  getTunnelService().setExtensionsTunnel(true);
 
  Jon
 
  Sherif wrote:
   I realize RESTLet supports multiple encodings based on the Accept 
  Encoding
   headers. Does Restlet also have a way to allow encodings based on 
  URI patter
   e.g. http://mystores/items/1000.json or something like that ?
  
 
  --
  http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775
   
  http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775
 
  
 
  This email is a reply to your post @ 
  http://n2.nabble.com/Multiple-content-types-tp3031817p3031841.html
  You can reply by email or by visting the link above.
 
 
  
  View this message in context: RE: Multiple content types 
  http://n2.nabble.com/Multiple-content-types-tp3031817p3043073.html
  Sent from the Restlet Discuss mailing list archive 
  http://n2.nabble.com/Restlet-Discuss-f1400322.html at Nabble.com

RE: Re: Multiple content types

2009-07-01 Thread Sherif Ahmed
Okay..
I had to add an XLS Representation for a resource and I wan to support a suffix 
of .json for JSON and .XLS for Excel , but using the code below (and rest of 
the code in the previous thread).

no matter what extension I use (even other than XLS OR JSON). the 
Variant.Representation in my represent(Variant variant) method in the resource 
class always picks up JSON as the type..

Thanks

public HelloWorldResource(Context context, Request request, Response response) {

 super(context, request, response);
getVariants().add(new Variant(MediaType.APPLICATION_EXCEL));
getVariants().add(new Variant(MediaType.APPLICATION_JSON));

}


 Hi Sherif,
 
 .js is javascript
 .json is json :0)
 
 There is no need to add js or json to the MetadataService as it comes 
 with a bunch of common ones already.
 Remove that line, and try
 
 http://localhost:8080/firstStepsServlet/Hello.json (Notice the JSON)
 
 
 Jon
 
 Sherif wrote:
 
  Thanks Jonathan..
 
  1. Here’s what I did to support lets say “.js” as an extension to 
  indicate JSON as the content type
 
  *public* *class* FirstStepsApplication *extends* Application {
 
  /**
 
  * Creates a root Restlet that will receive all incoming calls.
 
  */
 
  @Override
 
  *public* Restlet createRoot() {
 
  // Create a router Restlet that routes each call to a
 
  // new instance of HelloWorldResource.
 
  Router router = *new* Router(getContext());
 
  // Defines only one route
 
  router.attachDefault(HelloWorldResource.*class*);
 
  *this*.getTunnelService().setExtensionsTunnel(*true*);
 
  *this*.getTunnelService().setEncodingParameter(output);
 
  *this*.getMetadataService().addExtension(js, *new* 
  Metadata(MediaType./APPLICATION_JSON/.getName(), 
  MediaType./APPLICATION_JSON/.getDescription()), *true* );
 
  *return* router;
 
  }
 
  }
 
  *public* *class* HelloWorldResource *extends* Resource {
 
  *public* HelloWorldResource(Context context, Request request, Response 
  response) {
 
  *super*(context, request, response);
 
  // This representation has only one type of representation.
 
  getVariants().add(*new* Variant(MediaType./TEXT_PLAIN/));
 
  getVariants().add(*new* Variant(MediaType./APPLICATION_JSON/));
 
  }
 
  /**
 
  * Returns a full representation for a given variant.
 
  */
 
  @Override
 
  *public* Representation represent(Variant variant) *throws* 
  ResourceException {
 
  Representation representation = *null*;
 
  *if*(variant.getMediaType() == MediaType./APPLICATION_JSON/){
 
  representation = *new* JsonRepresentation(Hello World);
 
  }*else* *if* ( variant.getMediaType() == MediaType./TEXT_PLAIN/){
 
  representation = *new* StringRepresentation(
 
  hello, world, MediaType./TEXT_PLAIN/);
 
  }
 
  *return* representation;
 
  }
 
  }
 
  However when I call the service using the following URL 
  http://localhost:8080/firstStepsServlet/Hello.js the Variant type in 
  the HelloWorldResource is of MediaType.TEXT_PLAIN
 
  Thanks for Your help
 
  *From:* Jonathan Hall (via Nabble) 
  [mailto:ml-user+125526-1692215...@... 
  http://n2.nabble.com/user/SendEmail.jtp?type=nodenode=3043073i=0]
  *Sent:* Friday, June 05, 2009 1:29 PM
  *To:* Sherif
  *Subject:* Re: Multiple content types
 
  Have a look at
  http://www.restlet.org/documentation/2.0/api/org/restlet/service/TunnelService.html
 
  getTunnelService().setExtensionsTunnel(true);
 
  Jon
 
  Sherif wrote:
   I realize RESTLet supports multiple encodings based on the Accept 
  Encoding
   headers. Does Restlet also have a way to allow encodings based on 
  URI patter
   e.g. http://mystores/items/1000.json or something like that ?
  
 
  --
  http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775
   
  http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775
 
  
 
  This email is a reply to your post @ 
  http://n2.nabble.com/Multiple-content-types-tp3031817p3031841.html
  You can reply by email or by visting the link above.
 
 
  
  View this message in context: RE: Multiple content types 
  http://n2.nabble.com/Multiple-content-types-tp3031817p3043073.html
  Sent from the Restlet Discuss mailing list archive 
  http://n2.nabble.com/Restlet-Discuss-f1400322.html at Nabble.com.

--
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2367141


RE: Multiple content types

2009-06-08 Thread Sherif
Thanks Jonathan..

 

1.   Here's what I did to support lets say .js as an extension to
indicate JSON as the content type

 

public class FirstStepsApplication extends Application {

   /**

* Creates a root Restlet that will receive all incoming calls.

*/

   @Override

   public Restlet createRoot() {

 // Create a router Restlet that routes each call to a

 // new instance of HelloWorldResource.

 Router router = new Router(getContext());

 // Defines only one route

 router.attachDefault(HelloWorldResource.class);

 this.getTunnelService().setExtensionsTunnel(true);

 this.getTunnelService().setEncodingParameter(output);

 this.getMetadataService().addExtension(js, new
Metadata(MediaType.APPLICATION_JSON.getName(),
MediaType.APPLICATION_JSON.getDescription()), true );

 return router;

   }

}

 

public class HelloWorldResource extends Resource {

  public HelloWorldResource(Context context, Request request, Response
response) {

super(context, request, response);

// This representation has only one type of representation.

getVariants().add(new Variant(MediaType.TEXT_PLAIN));

getVariants().add(new Variant(MediaType.APPLICATION_JSON));



  }

 

  /**

   * Returns a full representation for a given variant.

   */

  @Override

  public Representation represent(Variant variant) throws
ResourceException {

Representation representation = null;

if(variant.getMediaType() == MediaType.APPLICATION_JSON){

  representation = new JsonRepresentation(Hello World);

}else if ( variant.getMediaType() == MediaType.TEXT_PLAIN){

  representation = new StringRepresentation(

  hello, world, MediaType.TEXT_PLAIN);

}

return representation;

  }

}

 

However when I call the service using the following URL
http://localhost:8080/firstStepsServlet/Hello.js the Variant type in the
HelloWorldResource is of MediaType.TEXT_PLAIN

 

Thanks for Your help

 

From: Jonathan Hall (via Nabble)
[mailto:ml-user+125526-1692215...@n2.nabble.com] 
Sent: Friday, June 05, 2009 1:29 PM
To: Sherif
Subject: Re: Multiple content types

 

Have a look at 
http://www.restlet.org/documentation/2.0/api/org/restlet/service/TunnelServi
ce.html

getTunnelService().setExtensionsTunnel(true); 

Jon 

Sherif wrote: 
 I realize RESTLet supports multiple encodings based on the Accept Encoding

 headers. Does Restlet also have a way to allow encodings based on URI
patter 
 e.g. http://mystores/items/1000.json or something like that ? 
 

-- 
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359
775 dsMessageId=2359775



  _  

This email is a reply to your post @
http://n2.nabble.com/Multiple-content-types-tp3031817p3031841.html
You can reply by email or by visting the link above.

 


-- 
View this message in context: 
http://n2.nabble.com/Multiple-content-types-tp3031817p3043073.html
Sent from the Restlet Discuss mailing list archive at Nabble.com.

--
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2360290

Re: Multiple content types

2009-06-08 Thread Jonathan Hall
Hi Sherif,

.js is javascript
.json is json :0)

There is no need to add js or json to the MetadataService as it comes 
with a bunch of common ones already.
Remove that line, and try

http://localhost:8080/firstStepsServlet/Hello.json (Notice the JSON)


Jon

Sherif wrote:

 Thanks Jonathan..

 1. Here’s what I did to support lets say “.js” as an extension to 
 indicate JSON as the content type

 *public* *class* FirstStepsApplication *extends* Application {

 /**

 * Creates a root Restlet that will receive all incoming calls.

 */

 @Override

 *public* Restlet createRoot() {

 // Create a router Restlet that routes each call to a

 // new instance of HelloWorldResource.

 Router router = *new* Router(getContext());

 // Defines only one route

 router.attachDefault(HelloWorldResource.*class*);

 *this*.getTunnelService().setExtensionsTunnel(*true*);

 *this*.getTunnelService().setEncodingParameter(output);

 *this*.getMetadataService().addExtension(js, *new* 
 Metadata(MediaType./APPLICATION_JSON/.getName(), 
 MediaType./APPLICATION_JSON/.getDescription()), *true* );

 *return* router;

 }

 }

 *public* *class* HelloWorldResource *extends* Resource {

 *public* HelloWorldResource(Context context, Request request, Response 
 response) {

 *super*(context, request, response);

 // This representation has only one type of representation.

 getVariants().add(*new* Variant(MediaType./TEXT_PLAIN/));

 getVariants().add(*new* Variant(MediaType./APPLICATION_JSON/));

 }

 /**

 * Returns a full representation for a given variant.

 */

 @Override

 *public* Representation represent(Variant variant) *throws* 
 ResourceException {

 Representation representation = *null*;

 *if*(variant.getMediaType() == MediaType./APPLICATION_JSON/){

 representation = *new* JsonRepresentation(Hello World);

 }*else* *if* ( variant.getMediaType() == MediaType./TEXT_PLAIN/){

 representation = *new* StringRepresentation(

 hello, world, MediaType./TEXT_PLAIN/);

 }

 *return* representation;

 }

 }

 However when I call the service using the following URL 
 http://localhost:8080/firstStepsServlet/Hello.js the Variant type in 
 the HelloWorldResource is of MediaType.TEXT_PLAIN

 Thanks for Your help

 *From:* Jonathan Hall (via Nabble) 
 [mailto:ml-user+125526-1692215...@... 
 http://n2.nabble.com/user/SendEmail.jtp?type=nodenode=3043073i=0]
 *Sent:* Friday, June 05, 2009 1:29 PM
 *To:* Sherif
 *Subject:* Re: Multiple content types

 Have a look at
 http://www.restlet.org/documentation/2.0/api/org/restlet/service/TunnelService.html

 getTunnelService().setExtensionsTunnel(true);

 Jon

 Sherif wrote:
  I realize RESTLet supports multiple encodings based on the Accept 
 Encoding
  headers. Does Restlet also have a way to allow encodings based on 
 URI patter
  e.g. http://mystores/items/1000.json or something like that ?
 

 --
 http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775
  
 http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2359775

 

 This email is a reply to your post @ 
 http://n2.nabble.com/Multiple-content-types-tp3031817p3031841.html
 You can reply by email or by visting the link above.


 
 View this message in context: RE: Multiple content types 
 http://n2.nabble.com/Multiple-content-types-tp3031817p3043073.html
 Sent from the Restlet Discuss mailing list archive 
 http://n2.nabble.com/Restlet-Discuss-f1400322.html at Nabble.com.

--
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447dsMessageId=2360443