public static RpcRequest fromName(String name) { for (RpcRequest type : values()) { if (type.name().equalsIgnoreCase(name)) { return type; } } return null; }
private boolean requiresCredentials(RpcRequest request) { if (!StringUtils.hasText(request.getRpcContext()) && XUS_INTRO_MSG.equals(request.getRpcName())) { return false; } else { return true; } }
public FutureResult request(Request request) { RpcRequest rpcRequest = new RpcRequest(); FutureResult futureResult = new RpcFutureResult(rpcRequest.getId()); rpcRequest.setData(request); ChannelFuture f = channelFuture; if (!f.isSuccess()) { log.info("client channel connect failure!!!"); throw new RuntimeException(channelFuture.cause().getCause()); } else { log.info("client channel write, id: {}", rpcRequest.getId()); f.channel().writeAndFlush(rpcRequest); } return futureResult; }
protected RpcResponse newResponse(RpcRequest request) { Object requestId = request.getId(); if (requestId == null) { requestId = newRequestId(); } return new RpcResponse().<RpcResponse>setId(requestId); }
protected RpcRequest createRpcRequest( RpcHost host, String division, String accessCode, String verifyCode, String rpcContext, String rpcName, List params) { RpcRequest request = new RpcRequest( host, RpcUriUtils.toCredentials(division, accessCode, verifyCode), rpcContext, rpcName, params); if (getTimeout() > 0) request.setTimeout(getTimeout()); return request; }
protected RpcRequest validateRequest(RpcRequest request) { RpcHost host = request.getHost(); if (host == null || host.getPort() == -1) { Assert.notNull( getHostResolver(), "[Assertion failed] - attempted to resolve ambiguous host, but hostResolver was null"); host = getHostResolver().resolve(host != null ? host.getHostname() : null); } if (requiresCredentials(request)) { String credentials = request.getCredentials(); if (!StringUtils.hasText(credentials)) { Assert.notNull( getCredentialsProvider(), "[Assertion failed] - attempted to provide credentials for RPC request without them, but credentialsProvider was null"); credentials = getCredentialsProvider().getCredentials(host, credentials); } return request = new RpcRequest(host, credentials, request); } else { return request = new RpcRequest(host, null, request); } }
protected <T> T doExecute(ConnectionCallback<T> action, RpcRequest request) { Assert.notNull(action, "Callback object must not be null"); Connection c = null; ConnectionSpec auth = null; try { try { request = validateRequest(request); RpcHost host = request.getHost(); auth = createConnectionSpec(request); logger.debug("connect {}", RpcUriUtils.sanitize(request.getURI(), auth)); c = this.connectionFactory.getConnection(host, auth); } catch (RpcException e) { throw getExceptionTranslator() .translate("open", RpcUriUtils.sanitize(request.getURI(), auth), e); } try { return action.doInConnection(c); } catch (RpcException e) { throw getExceptionTranslator() .translate("callback", RpcUriUtils.sanitize(request.getURI(), auth), e); } } catch (DataAccessException e) { logger.error("error in " + RpcUriUtils.sanitize(request.getURI(), auth), e); throw e; } finally { try { if (c != null) c.close(); } catch (RpcException e) { throw getExceptionTranslator() .translate("close", RpcUriUtils.sanitize(request.getURI(), auth), e); } } }
protected RpcResponse doExecute(RpcRequest request) { Connection c = null; ConnectionSpec auth = null; try { try { outputRequestInfo("doExecute: Before validateRequest...", request); request = validateRequest(request); outputRequestInfo("doExecute: After validateRequest...", request); RpcHost host = request.getHost(); auth = createConnectionSpec(request); outputAuthInfo(auth); c = this.connectionFactory.getConnection(host, auth); } catch (RpcException e) { logger.error("doExecute: RpcException occurred. Error: " + e.getMessage(), e); fireRpcExceptionEvent(request, e); throw getExceptionTranslator() .translate("open", RpcUriUtils.sanitize(request.getUriString(), auth), e); } try { logger.debug("executing {}", RpcUriUtils.sanitize(request.getUriString(), auth)); RpcResponse response = c.send(request); logger.debug("received {}", response.toString()); fireRpcResponseEvent(request, response); return response; } catch (RpcException e) { fireRpcExceptionEvent(request, e); throw getExceptionTranslator() .translate("send", RpcUriUtils.sanitize(request.getUriString(), auth), e); } } catch (DataAccessException e) { if (e instanceof PermissionDeniedDataAccessException) { logger.debug( "permission denied in " + RpcUriUtils.sanitize(request.getUriString(), auth), e); } else { logger.error("error in " + RpcUriUtils.sanitize(request.getUriString(), auth), e); } throw e; } finally { try { if (c != null) c.close(); } catch (RpcException e) { fireRpcExceptionEvent(request, e); throw getExceptionTranslator() .translate("close", RpcUriUtils.sanitize(request.getUriString(), auth), e); } } }
protected RpcResponse doExecute(RpcRequest request) { Connection c = null; AccessVerifyConnectionSpec auth = null; try { try { request = validateRequest(request); RpcHost host = request.getHost(); auth = AccessVerifyConnectionSpec.create(request.getCredentials().toString()); c = this.connectionFactory.getConnection(host, auth); } catch (RpcException e) { if (getRpcListener() != null) getRpcListener().onRpc(new RpcEvent(request, e)); throw getExceptionTranslator() .translate("open", RpcUriUtils.sanitize(request.getURI(), auth), e); } try { logger.debug("executing {}", RpcUriUtils.sanitize(request.getURI(), auth)); RpcResponse response = c.send(request); logger.debug("received {}", RpcUriUtils.sanitize(request.getURI(), auth)); if (getRpcListener() != null) getRpcListener().onRpc(new RpcEvent(request, response)); return response; } catch (RpcException e) { if (getRpcListener() != null) getRpcListener().onRpc(new RpcEvent(request, e)); throw getExceptionTranslator() .translate("send", RpcUriUtils.sanitize(request.getURI(), auth), e); } } catch (DataAccessException e) { logger.error("error in " + RpcUriUtils.sanitize(request.getURI(), auth), e); throw e; } finally { try { if (c != null) c.close(); } catch (RpcException e) { if (getRpcListener() != null) getRpcListener().onRpc(new RpcEvent(request, e)); throw getExceptionTranslator() .translate("close", RpcUriUtils.sanitize(request.getURI(), auth), e); } } }
protected ConnectionSpec createConnectionSpec(RpcRequest request) { String credentials = request.getCredentials(); if (StringUtils.hasText(credentials)) return AccessVerifyConnectionSpec.create(request.getCredentials()); else return new AnonymousConnectionSpec(); }
protected RpcRequest createRpcRequest(String uri, List params) { RpcRequest request = new RpcRequest(uri, params); if (getTimeout() > 0) request.setTimeout(getTimeout()); return request; }
public boolean exceeds(RpcRequest type) { return this.ordinal() > type.ordinal(); }
private void outputRequestInfo(String sMessage, RpcRequest request) { String sCRLF = System.getProperty("line.separator"); StringBuffer sbText = new StringBuffer(); sbText.append(sMessage + sCRLF); sbText.append("RpcTemplate: Dumping contents of request: " + sCRLF + sCRLF); sbText.append( "Got here by the following trace: " + Arrays.toString(Thread.currentThread().getStackTrace()) + sCRLF + sCRLF); if (request != null) { sbText.append(" credentials: " + request.getCredentials() + sCRLF); sbText.append(" rpcContext: " + request.getRpcContext() + sCRLF); sbText.append(" rpcName: " + request.getRpcName() + sCRLF); sbText.append(" rpcVersion: " + request.getRpcVersion() + sCRLF); sbText.append(" timeout: " + request.getTimeout() + sCRLF); sbText.append(" uriString: " + request.getUriString() + sCRLF); if ((request.getParams() != null) && (request.getParams().size() > 0)) { int i = 0; for (RpcParam oRpcParam : request.getParams()) { sbText.append(" rpcParam[" + i + "]:" + sCRLF); sbText.append(" type: " + oRpcParam.getType() + sCRLF); sbText.append(" value: " + oRpcParam.getValue() + sCRLF); i++; } } if (request.getHost() != null) { sbText.append(" host:" + sCRLF); sbText.append(" hostname: " + request.getHost().getHostname() + sCRLF); sbText.append(" port: " + request.getHost().getPort() + sCRLF); sbText.append(" scheme: " + request.getHost().getScheme() + sCRLF); } } else { sbText.append(" request was null" + sCRLF); } logger.debug(sbText.toString()); }
protected ConnectionSpec createConnectionSpec(RpcRequest request) { return ConnectionSpecFactory.create(request.getCredentials()); }