2
* Copyright 2005-2012 Restlet S.A.S.
4
* The contents of this file are subject to the terms of one of the following
5
* open source licenses: Apache 2.0 or LGPL 3.0 or LGPL 2.1 or CDDL 1.0 or EPL
6
* 1.0 (the "Licenses"). You can select the license that you prefer but you may
7
* not use this file except in compliance with one of these Licenses.
9
* You can obtain a copy of the Apache 2.0 license at
10
* http://www.opensource.org/licenses/apache-2.0
12
* You can obtain a copy of the LGPL 3.0 license at
13
* http://www.opensource.org/licenses/lgpl-3.0
15
* You can obtain a copy of the LGPL 2.1 license at
16
* http://www.opensource.org/licenses/lgpl-2.1
18
* You can obtain a copy of the CDDL 1.0 license at
19
* http://www.opensource.org/licenses/cddl1
21
* You can obtain a copy of the EPL 1.0 license at
22
* http://www.opensource.org/licenses/eclipse-1.0
24
* See the Licenses for the specific language governing permissions and
25
* limitations under the Licenses.
27
* Alternatively, you can obtain a royalty free commercial license with less
28
* limitations, transferable or non-transferable, directly at
29
* http://www.restlet.com/products/restlet-framework
31
* Restlet is a registered trademark of Restlet S.A.S.
34
package org.restlet.test.jaxrs.services.providers;
36
import java.io.IOException;
37
import java.io.OutputStream;
38
import java.lang.annotation.Annotation;
39
import java.lang.reflect.Type;
41
import javax.ws.rs.Produces;
42
import javax.ws.rs.core.Context;
43
import javax.ws.rs.core.MediaType;
44
import javax.ws.rs.core.MultivaluedMap;
45
import javax.ws.rs.ext.MessageBodyWriter;
46
import javax.ws.rs.ext.Provider;
47
import javax.ws.rs.ext.Providers;
49
import org.restlet.test.jaxrs.services.others.Person;
52
* This provider writes a Persons as XML (by JAXB) and with the
53
* {@link TextCrazyPersonProvider}.<br>
54
* (I've got no better idea for Providers)
56
* @author Stephan Koops
58
@Produces("application/crazy-person")
60
public class AppCrazyPersonProvider implements MessageBodyWriter<Person> {
66
* @see javax.ws.rs.ext.MessageBodyWriter#getSize(java.lang.Object)
68
public long getSize(Person t, Class<?> type, Type genericType,
69
Annotation[] annotations, MediaType mediaType) {
74
* @see MessageBodyWriter#isWriteable(Class, Type, Annotation[])
76
public boolean isWriteable(Class<?> type, Type genericType,
77
Annotation[] annotations, MediaType mediaType) {
78
return Person.class.isAssignableFrom(type);
82
* @see MessageBodyWriter#writeTo(Object, Class, Type, Annotation[],
83
* MediaType, MultivaluedMap, OutputStream)
85
public void writeTo(Person t, Class<?> type, Type genericType,
86
Annotation[] annotations, MediaType mediaType,
87
MultivaluedMap<String, Object> httpHeaders,
88
OutputStream entityStream) throws IOException {
89
MessageBodyWriter<Person> mbw;
90
mbw = this.providers.getMessageBodyWriter(Person.class, Person.class,
91
annotations, MediaType.APPLICATION_XML_TYPE);
92
mbw.writeTo(t, Person.class, Person.class, annotations,
93
MediaType.APPLICATION_XML_TYPE, httpHeaders, entityStream);
95
final MediaType mediaType2 = new MediaType("text", "crazy-person");
96
mbw = this.providers.getMessageBodyWriter(Person.class, Person.class,
97
annotations, mediaType2);
98
mbw.writeTo(t, Person.class, Person.class, annotations, mediaType2,
99
httpHeaders, entityStream);