-
Notifications
You must be signed in to change notification settings - Fork 86
/
RPCEndpoint.java
55 lines (43 loc) · 1.99 KB
/
RPCEndpoint.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* $This file is distributed under the terms of the license in LICENSE$ */
package edu.cornell.mannlib.vitro.webapp.dynapi;
import static edu.cornell.mannlib.vitro.webapp.dynapi.request.ApiRequestPath.RPC_SERVLET_PATH;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import edu.cornell.mannlib.vitro.webapp.dynapi.components.OperationResult;
import edu.cornell.mannlib.vitro.webapp.dynapi.components.RPC;
import edu.cornell.mannlib.vitro.webapp.dynapi.request.ApiRequestPath;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@WebServlet(name = "RPCEndpoint", urlPatterns = { RPC_SERVLET_PATH + "/*" })
public class RPCEndpoint extends Endpoint {
private static final Log log = LogFactory.getLog(RPCEndpoint.class);
private RPCPool rpcAPIPool = RPCPool.getInstance();
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
OperationResult.methodNotAllowed().prepareResponse(response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
ApiRequestPath requestPath = ApiRequestPath.from(request);
if (!requestPath.isValid()) {
OperationResult.notFound().prepareResponse(response);
return;
}
String rpcKey = requestPath.getRpcKey();
try (RPC rpc = rpcAPIPool.get(rpcKey)) {
// TODO Implement version negotiations
processRequest(request, response, requestPath, rpc.getProcedureUri());
} catch (Exception e) {
log.error(e, e);
}
}
@Override
public void doDelete(HttpServletRequest request, HttpServletResponse response) {
OperationResult.methodNotAllowed().prepareResponse(response);
}
@Override
public void doPut(HttpServletRequest request, HttpServletResponse response) {
OperationResult.methodNotAllowed().prepareResponse(response);
}
}