Reviewers: shindig.remailer_gmail.com,
Please review this at http://codereview.appspot.com/1110041/show
Affected files:
M
java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
Index:
java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
diff --git
a/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
b/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
index
a6ddcec686f731fffa376efd5ff46ff64c1dd831..e5f1bac7725105890fe9dbb3e473573b7658a6eb
100644
---
a/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
+++
b/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
@@ -18,6 +18,7 @@
package org.apache.shindig.protocol;
import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.common.servlet.HttpUtil;
import org.apache.shindig.protocol.conversion.BeanConverter;
import com.google.common.collect.ImmutableMap;
@@ -96,7 +97,8 @@ public class DataServiceServlet extends ApiServlet {
}
setCharacterEncodings(servletRequest, servletResponse);
-
+ HttpUtil.setCORSheader(servletResponse);
+
SecurityToken token = getSecurityToken(servletRequest);
if (token == null) {
sendSecurityError(servletResponse);
@@ -169,7 +171,13 @@ public class DataServiceServlet extends ApiServlet {
response = ImmutableMap.of("entry", response);
}
+ // JSONP style callbacks
+ String callback = (HttpUtil.isJSONP(servletRequest) &&
ContentTypes.OUTPUT_JSON_CONTENT_TYPE.equals(converter.getContentType())) ?
+ servletRequest.getParameter("callback") : null;
+
+ if (callback != null) writer.write(callback + "(");
writer.write(converter.convertToString(response));
+ if (callback != null) writer.write(");\n");
} else {
sendError(servletResponse, responseItem);
}