1
2
3
4 package fr.paris.lutece.plugins.document.modules.rest.service.writers;
5
6 import fr.paris.lutece.plugins.document.business.publication.DocumentPublication;
7 import fr.paris.lutece.plugins.rest.service.writers.AbstractWriter;
8
9 import java.lang.annotation.Annotation;
10 import java.lang.reflect.ParameterizedType;
11 import java.lang.reflect.Type;
12
13 import java.util.List;
14
15 import javax.ws.rs.Produces;
16 import javax.ws.rs.core.MediaType;
17 import javax.ws.rs.ext.Provider;
18
19
20
21
22
23 @Provider
24 @Produces( {
25 MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON
26 } )
27 public class DocumentPublicationWriter extends AbstractWriter<DocumentPublication>
28 {
29
30
31
32 public boolean isWriteable( Class<?> type, Type genericType, Annotation [ ] annotations, MediaType mediaType )
33 {
34
35 boolean isWritable = false;
36
37 if ( DocumentPublication.class.equals( genericType ) )
38 {
39 isWritable = true;
40 }
41
42 if ( List.class.isAssignableFrom( type ) && genericType instanceof ParameterizedType )
43 {
44 ParameterizedType parameterizedType = (ParameterizedType) genericType;
45 Type [ ] actualTypeArgs = ( parameterizedType.getActualTypeArguments( ) );
46 isWritable = ( ( actualTypeArgs.length == 1 ) && actualTypeArgs [0].equals( DocumentPublication.class ) );
47 }
48
49 return isWritable;
50 }
51 }