View Javadoc
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   * DocumentPublicationWriter
21   *
22   */
23  @Provider
24  @Produces( {
25          MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON
26  } )
27  public class DocumentPublicationWriter extends AbstractWriter<DocumentPublication>
28  {
29      /**
30       * {@inheritDoc}
31       */
32      public boolean isWriteable( Class<?> type, Type genericType, Annotation [ ] annotations, MediaType mediaType )
33      {
34          // Ensure that we're handling only List<Directory> objects.
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  }