View Javadoc

1   package com.atlassian.plugins.rest.module.json;
2   
3   import static com.atlassian.plugins.rest.common.MediaTypes.*;
4   import com.sun.jersey.spi.container.ContainerResponse;
5   import com.sun.jersey.spi.container.ContainerResponseWriter;
6   import org.apache.commons.lang.Validate;
7   
8   import static javax.ws.rs.core.HttpHeaders.*;
9   import java.io.IOException;
10  import java.io.OutputStream;
11  
12  class JsonWithPaddingResponseAdapter implements ContainerResponseWriter
13  {
14      private final String callbackFunction;
15      private final ContainerResponseWriter containerResponseWriter;
16  
17      private OutputStream out;
18  
19      public JsonWithPaddingResponseAdapter(String callbackFunction, ContainerResponseWriter containerResponseWriter)
20      {
21          Validate.notNull(callbackFunction);
22          Validate.notNull(containerResponseWriter);
23          this.callbackFunction = callbackFunction;
24          this.containerResponseWriter = containerResponseWriter;
25      }
26  
27      public OutputStream writeStatusAndHeaders(long contentLength, ContainerResponse response) throws IOException
28      {
29          // set the header to application/javascript
30          response.getHttpHeaders().putSingle(CONTENT_TYPE, APPLICATION_JAVASCRIPT_TYPE);
31  
32          out = containerResponseWriter.writeStatusAndHeaders(-1, response);
33          out.write((callbackFunction + "(").getBytes());
34          return out;
35      }
36  
37      public void finish() throws IOException
38      {
39          out.write(");".getBytes());
40      }
41  }