String strongName) { SerializationPolicy serializationPolicy = getCachedSerializationPolicy( moduleBaseURL, strongName); if (serializationPolicy != null) { serializationPolicy = doGetSerializationPolicy(getThreadLocalRequest(), moduleBaseURL, strongName); String url = getCodeServerPolicyUrl(strongName); if (url != null) { serializationPolicy = loadPolicyFromCodeServer(url); log( "WARNING: Failed to get the SerializationPolicy '" + strongName putCachedSerializationPolicy(moduleBaseURL, strongName, serializationPolicy);
String requestPayload = readContent(request); onBeforeRequestDeserialized(requestPayload); String responsePayload = processCall(requestPayload); onAfterResponseSerialized(responsePayload); writeResponse(request, response, responsePayload);
checkPermutationStrongName(); rpcRequest = RPC.decodeRequest(payload, delegate.getClass(), this); } catch (IncompatibleRemoteServiceException ex) { log( "An IncompatibleRemoteServiceException was thrown while processing this call.", ex); return RPC.encodeResponseForFailedRequest(null, ex); return processCall(rpcRequest);
private void writeResponse(HttpServletRequest request, HttpServletResponse response, String responsePayload) throws IOException { boolean gzipEncode = RPCServletUtils.acceptsGzipEncoding(request) && shouldCompressResponse(request, response, responsePayload); RPCServletUtils.writeResponse(getServletContext(), response, responsePayload, gzipEncode); } }
@Override public void init(ServletConfig config) throws ServletException { super.init(config); }
@Override protected void doUnexpectedFailure(Throwable e) { super.doUnexpectedFailure(e); if (throwUndeclaredExceptionToServletContainer) throw new RuntimeException(e); }
@Override protected SerializationPolicy doGetSerializationPolicy( HttpServletRequest request, String moduleBaseURL, String strongName) { String newModuleBaseURL = modulePathTranslation.computeModuleBaseURL(request, moduleBaseURL, strongName); return super.doGetSerializationPolicy(request, newModuleBaseURL, strongName); }
onAfterRequestDeserialized(rpcRequest); return RPC.invokeAndEncodeResponse(delegate, rpcRequest.getMethod(), rpcRequest.getParameters(), rpcRequest.getSerializationPolicy(), rpcRequest.getFlags()); } catch (IncompatibleRemoteServiceException ex) { log( "An IncompatibleRemoteServiceException was thrown while processing this call.", ex); return RPC.encodeResponseForFailedRequest(rpcRequest, ex); } catch (RpcTokenException tokenException) { log("An RpcTokenException was thrown while processing this call.", tokenException); return RPC.encodeResponseForFailedRequest(rpcRequest, tokenException);
@Override public void logError(String message, Throwable throwable) { RemoteServiceServlet.this.log(message, throwable); } };
@Override // from RemoteServiceServlet public String processCall (String payload) throws SerializationException { try { return super.processCall(payload); } finally { _perThreadUser.remove(); } }
@Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.service(req, resp); }
@Override protected void checkPermutationStrongName(){ if (shouldCheckPermutationStrongName) super.checkPermutationStrongName(); }
@Override protected boolean shouldCompressResponse(HttpServletRequest request, HttpServletResponse response, String responsePayload) { switch (compressResponse) { case COMPRESSION_DISABLED: return false; case COMPRESSION_ENABLED: return true; } return super.shouldCompressResponse(request, response, responsePayload); }
/** * Ensures that the the RPC response contains the necessary access control headers for * cross-domain access. * * @param serializedResponse the serialized RPC response */ @Override protected void onAfterResponseSerialized(String serializedResponse) { super.onAfterResponseSerialized(serializedResponse); maybeSetAccessControlAllowHeaders(getThreadLocalRequest(), getThreadLocalResponse()); }
@Override public void init() throws ServletException { super.init(); }
@Override protected void doUnexpectedFailure(Throwable e) { super.doUnexpectedFailure(e); if (throwUndeclaredExceptionToServletContainer) throw new RuntimeException(e); }
@Override protected SerializationPolicy doGetSerializationPolicy( HttpServletRequest request, String moduleBaseURL, String strongName) { String newModuleBaseURL = modulePathTranslation.computeModuleBaseURL(request, moduleBaseURL, strongName); return super.doGetSerializationPolicy(request, newModuleBaseURL, strongName); }
private void writeResponse(HttpServletRequest request, HttpServletResponse response, String responsePayload) throws IOException { boolean gzipEncode = RPCServletUtils.acceptsGzipEncoding(request) && shouldCompressResponse(request, response, responsePayload); RPCServletUtils.writeResponse(getServletContext(), response, responsePayload, gzipEncode); } }
onAfterRequestDeserialized(rpcRequest); return RPC.invokeAndEncodeResponse(delegate, rpcRequest.getMethod(), rpcRequest.getParameters(), rpcRequest.getSerializationPolicy(), rpcRequest.getFlags()); } catch (IncompatibleRemoteServiceException ex) { log( "An IncompatibleRemoteServiceException was thrown while processing this call.", ex); return RPC.encodeResponseForFailedRequest(rpcRequest, ex); } catch (RpcTokenException tokenException) { log("An RpcTokenException was thrown while processing this call.", tokenException); return RPC.encodeResponseForFailedRequest(rpcRequest, tokenException);
@Override public void logInfo(String message) { RemoteServiceServlet.this.log(message); }