You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/05/07 23:15:48 UTC

svn commit: r1480085 - /cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java

Author: sergeyb
Date: Tue May  7 21:15:47 2013
New Revision: 1480085

URL: http://svn.apache.org/r1480085
Log:
Adding JSONP JAX-RS writer

Added:
    cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java   (with props)

Added: cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java?rev=1480085&view=auto
==============================================================================
--- cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java (added)
+++ cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java Tue May  7 21:15:47 2013
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.jaxrs.provider.jsonp;
+
+import java.io.IOException;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.ext.WriterInterceptor;
+import javax.ws.rs.ext.WriterInterceptorContext;
+
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.Message;
+
+/**
+ * Appends the jsonp callback to json responses when the '_jsonp' parameter has been set in the querystring.
+ */
+public class JsonpJaxrsWriterInterceptor implements WriterInterceptor {
+
+    private String mediaType = JsonpInInterceptor.JSONP_TYPE;
+    private String paddingEnd = "(";
+    
+    public JsonpJaxrsWriterInterceptor() {
+    }
+  
+    @Override
+    public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {
+        String callback = getCallbackValue(JAXRSUtils.getCurrentMessage());
+        if (!StringUtils.isEmpty(callback)) {
+            context.getHeaders().putSingle(Message.CONTENT_TYPE, 
+                                           JAXRSUtils.toMediaType(getMediaType()));
+            context.getOutputStream().write((callback + getPaddingEnd()).getBytes("UTF-8"));
+        }
+        context.proceed();
+    }
+    
+    public void setMediaType(String mediaType) {
+        this.mediaType = mediaType;
+    }
+
+    public String getMediaType() {
+        return mediaType;
+    }
+
+    public void setPaddingEnd(String paddingEnd) {
+        this.paddingEnd = paddingEnd;
+    }
+
+    public String getPaddingEnd() {
+        return paddingEnd;
+    }
+    
+    protected String getCallbackValue(Message message) {
+        Exchange exchange = message.getExchange();
+        return (String) exchange.get(JsonpInInterceptor.CALLBACK_KEY);
+    }
+
+    
+    
+}

Propchange: cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/jsonp/JsonpJaxrsWriterInterceptor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date