View Javadoc

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