You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2014/08/12 12:35:17 UTC
[26/28] git commit: updated refs/heads/master to ae207be
ApiServlet: use HttpUtils instead of class specific implementation
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3cc6efce
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3cc6efce
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3cc6efce
Branch: refs/heads/master
Commit: 3cc6efce04153a013d70971cbcfdbb20ab8b7fbb
Parents: 983252c
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Tue Aug 12 10:06:35 2014 +0200
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Tue Aug 12 12:01:32 2014 +0200
----------------------------------------------------------------------
server/src/com/cloud/api/ApiServlet.java | 45 +++++++++------------------
1 file changed, 14 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3cc6efce/server/src/com/cloud/api/ApiServlet.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java
index d09d426..8dff6eb 100644
--- a/server/src/com/cloud/api/ApiServlet.java
+++ b/server/src/com/cloud/api/ApiServlet.java
@@ -22,10 +22,10 @@ import com.cloud.api.auth.APIAuthenticator;
import com.cloud.user.Account;
import com.cloud.user.AccountService;
import com.cloud.user.User;
+import com.cloud.utils.HttpUtils;
import com.cloud.utils.StringUtils;
import com.cloud.utils.db.EntityManager;
import org.apache.cloudstack.api.ApiConstants;
-import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.managed.context.ManagedContext;
@@ -40,7 +40,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
@@ -125,7 +124,7 @@ public class ApiServlet extends HttpServlet {
auditTrailSb.append(" ").append(remoteAddress);
auditTrailSb.append(" -- ").append(req.getMethod()).append(' ');
// get the response format since we'll need it in a couple of places
- String responseType = BaseCmd.RESPONSE_TYPE_XML;
+ String responseType = HttpUtils.RESPONSE_TYPE_XML;
final Map<String, Object[]> params = new HashMap<String, Object[]>();
params.putAll(req.getParameterMap());
@@ -143,10 +142,11 @@ public class ApiServlet extends HttpServlet {
}
try {
- if (BaseCmd.RESPONSE_TYPE_JSON.equalsIgnoreCase(responseType)) {
- resp.setContentType(ApiServer.getJsonContentType() + "; charset=UTF-8");
- } else {
- resp.setContentType("text/xml; charset=UTF-8");
+
+ if (HttpUtils.RESPONSE_TYPE_JSON.equalsIgnoreCase(responseType)) {
+ resp.setContentType(HttpUtils.JSON_CONTENT_TYPE);
+ } else if (HttpUtils.RESPONSE_TYPE_XML.equalsIgnoreCase(responseType)){
+ resp.setContentType(HttpUtils.XML_CONTENT_TYPE);
}
HttpSession session = req.getSession(false);
@@ -202,7 +202,7 @@ public class ApiServlet extends HttpServlet {
}
}
}
- writeResponse(resp, responseString, httpResponseCode, responseType);
+ HttpUtils.writeHttpResponse(resp, responseString, httpResponseCode, responseType);
return;
}
}
@@ -229,7 +229,7 @@ public class ApiServlet extends HttpServlet {
auditTrailSb.append(" " + HttpServletResponse.SC_UNAUTHORIZED + " " + "unable to verify user credentials");
final String serializedResponse =
_apiServer.getSerializedApiError(HttpServletResponse.SC_UNAUTHORIZED, "unable to verify user credentials", params, responseType);
- writeResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType);
+ HttpUtils.writeHttpResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType);
return;
}
@@ -240,7 +240,7 @@ public class ApiServlet extends HttpServlet {
s_logger.info("missing command, ignoring request...");
auditTrailSb.append(" " + HttpServletResponse.SC_BAD_REQUEST + " " + "no command specified");
final String serializedResponse = _apiServer.getSerializedApiError(HttpServletResponse.SC_BAD_REQUEST, "no command specified", params, responseType);
- writeResponse(resp, serializedResponse, HttpServletResponse.SC_BAD_REQUEST, responseType);
+ HttpUtils.writeHttpResponse(resp, serializedResponse, HttpServletResponse.SC_BAD_REQUEST, responseType);
return;
}
final User user = _entityMgr.findById(User.class, userId);
@@ -256,7 +256,7 @@ public class ApiServlet extends HttpServlet {
auditTrailSb.append(" " + HttpServletResponse.SC_UNAUTHORIZED + " " + "unable to verify user credentials");
final String serializedResponse =
_apiServer.getSerializedApiError(HttpServletResponse.SC_UNAUTHORIZED, "unable to verify user credentials", params, responseType);
- writeResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType);
+ HttpUtils.writeHttpResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType);
return;
}
} else {
@@ -270,7 +270,7 @@ public class ApiServlet extends HttpServlet {
// Add the HTTP method (GET/POST/PUT/DELETE) as well into the params map.
params.put("httpmethod", new String[] {req.getMethod()});
final String response = _apiServer.handleRequest(params, responseType, auditTrailSb);
- writeResponse(resp, response != null ? response : "", HttpServletResponse.SC_OK, responseType);
+ HttpUtils.writeHttpResponse(resp, response != null ? response : "", HttpServletResponse.SC_OK, responseType);
} else {
if (session != null) {
try {
@@ -283,13 +283,13 @@ public class ApiServlet extends HttpServlet {
final String serializedResponse =
_apiServer.getSerializedApiError(HttpServletResponse.SC_UNAUTHORIZED, "unable to verify user credentials and/or request signature", params,
responseType);
- writeResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType);
+ HttpUtils.writeHttpResponse(resp, serializedResponse, HttpServletResponse.SC_UNAUTHORIZED, responseType);
}
} catch (final ServerApiException se) {
final String serializedResponseText = _apiServer.getSerializedApiError(se, params, responseType);
resp.setHeader("X-Description", se.getDescription());
- writeResponse(resp, serializedResponseText, se.getErrorCode().getHttpCode(), responseType);
+ HttpUtils.writeHttpResponse(resp, serializedResponseText, se.getErrorCode().getHttpCode(), responseType);
auditTrailSb.append(" " + se.getErrorCode() + " " + se.getDescription());
} catch (final Exception ex) {
s_logger.error("unknown exception writing api response", ex);
@@ -303,21 +303,4 @@ public class ApiServlet extends HttpServlet {
CallContext.unregister();
}
}
-
- // FIXME: rather than isError, we might was to pass in the status code to give more flexibility
- private void writeResponse(final HttpServletResponse resp, final String response, final int responseCode, final String responseType) {
- try {
- resp.setStatus(responseCode);
- resp.getWriter().print(response);
- } catch (final IOException ioex) {
- if (s_logger.isTraceEnabled()) {
- s_logger.trace("exception writing response: " + ioex);
- }
- } catch (final Exception ex) {
- if (!(ex instanceof IllegalStateException)) {
- s_logger.error("unknown exception writing api response", ex);
- }
- }
- }
-
}