/** * Called by generated subclasses to enqueue a method invocation. */ public void addInvocation(AbstractRequest<?, ?> request) { state.invocations.add(request); for (Object arg : request.getRequestData().getOrderedParameters()) { retainArg(arg); } }
/** * Make sure there's a default receiver so errors don't get dropped. This behavior should be * revisited when chaining is supported, depending on whether or not chained invocations can fail * independently. */ public void fire() { boolean needsReceiver = true; for (AbstractRequest<?, ?> request : state.invocations) { if (request.hasReceiver()) { needsReceiver = false; break; } } if (needsReceiver) { doFire(new Receiver<Void>() { @Override public void onSuccess(Void response) { // Don't care } }); } else { doFire(null); } }
try { if (response.getStatusCodes().get(i)) { state.invocations.get(i).onSuccess(response.getInvocationResults().get(i)); } else { ServerFailureMessage failure = AutoBeanCodex.decode(MessageFactoryHolder.FACTORY, ServerFailureMessage.class, response.getInvocationResults().get(i)).as(); state.invocations.get(i).onFail( new ServerFailure(failure.getMessage(), failure.getExceptionType(), failure .getStackTrace(), failure.isFatal()));
public void processPayload(Receiver<Void> receiver, String payload) { Splittable raw = StringQuoter.split(payload); @SuppressWarnings("unchecked") Receiver<Object> callback = (Receiver<Object>) state.invocations.get(0).getReceiver(); if (!raw.isNull("error")) { Splittable error = raw.get("error"); ServerFailure failure = new ServerFailure(error.get("message").asString(), error.get("code").asString(), payload, true); fail(receiver, failure); return; } Splittable result = raw.get("result"); @SuppressWarnings("unchecked") Class<BaseProxy> target = (Class<BaseProxy>) state.invocations.get(0).getRequestData().getReturnType(); SimpleProxyId<BaseProxy> id = getRequestFactory().allocateId(target); AutoBean<BaseProxy> bean = createProxy(target, id, true); // XXX expose this as a proper API ((AbstractAutoBean<?>) bean).setData(result); // AutoBeanCodex.decodeInto(result, bean); if (callback != null) { callback.onSuccess(bean.as()); } if (receiver != null) { receiver.onSuccess(null); } }
public RequestData getRequestData() { if (requestData == null) { requestData = makeRequestData(); } return requestData; }
for (AbstractRequest<?, ?> request : new ArrayList<AbstractRequest<?, ?>>(state.invocations)) { try { request.onFail(failure); } catch (Throwable t) { if (causes == null) {
for (AbstractRequest<?, ?> request : new ArrayList<AbstractRequest<?, ?>>(state.invocations)) { try { request.onViolation(errors); } catch (Throwable t) { if (causes == null) {
public void processPayload(Receiver<Void> receiver, String payload) { Splittable raw = StringQuoter.split(payload); @SuppressWarnings("unchecked") Receiver<Object> callback = (Receiver<Object>) state.invocations.get(0).getReceiver(); if (!raw.isNull("error")) { Splittable error = raw.get("error"); ServerFailure failure = new ServerFailure(error.get("message").asString(), error.get("code").asString(), payload, true); fail(receiver, failure); return; } Splittable result = raw.get("result"); @SuppressWarnings("unchecked") Class<BaseProxy> target = (Class<BaseProxy>) state.invocations.get(0).getRequestData().getReturnType(); SimpleProxyId<BaseProxy> id = getRequestFactory().allocateId(target); AutoBean<BaseProxy> bean = createProxy(target, id, true); // XXX expose this as a proper API ((AbstractAutoBean<?>) bean).setData(result); // AutoBeanCodex.decodeInto(result, bean); if (callback != null) { callback.onSuccess(bean.as()); } if (receiver != null) { receiver.onSuccess(null); } }
try { if (response.getStatusCodes().get(i)) { state.invocations.get(i).onSuccess(response.getInvocationResults().get(i)); } else { ServerFailureMessage failure = AutoBeanCodex.decode(MessageFactoryHolder.FACTORY, ServerFailureMessage.class, response.getInvocationResults().get(i)).as(); state.invocations.get(i).onFail( new ServerFailure(failure.getMessage(), failure.getExceptionType(), failure .getStackTrace(), failure.isFatal()));
public RequestData getRequestData() { if (requestData == null) { requestData = makeRequestData(); } return requestData; }
for (AbstractRequest<?, ?> request : new ArrayList<AbstractRequest<?, ?>>(state.invocations)) { try { request.onFail(failure); } catch (Throwable t) { if (causes == null) {
for (AbstractRequest<?, ?> request : new ArrayList<AbstractRequest<?, ?>>(state.invocations)) { try { request.onViolation(errors); } catch (Throwable t) { if (causes == null) {
/** * Called by generated subclasses to enqueue a method invocation. */ public void addInvocation(AbstractRequest<?, ?> request) { /* * TODO(bobv): Support for multiple invocations per request needs to be ironed out. Once this * is done, addInvocation() can be removed from the DialectImpl interface and restored to to * AbstractRequestContext. */ if (!state.invocations.isEmpty()) { throw new RuntimeException("Only one invocation per request, pending backend support"); } state.invocations.add(request); for (Object arg : request.getRequestData().getOrderedParameters()) { retainArg(arg); } }
public void processPayload(Receiver<Void> receiver, String payload) { Splittable raw = StringQuoter.split(payload); @SuppressWarnings("unchecked") Receiver<Object> callback = (Receiver<Object>) state.invocations.get(0).getReceiver(); if (!raw.isNull("error")) { Splittable error = raw.get("error"); ServerFailure failure = new ServerFailure(error.get("message").asString(), error.get("code").asString(), payload, true); fail(receiver, failure); return; } Splittable result = raw.get("result"); @SuppressWarnings("unchecked") Class<BaseProxy> target = (Class<BaseProxy>) state.invocations.get(0).getRequestData().getReturnType(); SimpleProxyId<BaseProxy> id = getRequestFactory().allocateId(target); AutoBean<BaseProxy> bean = createProxy(target, id, true); // XXX expose this as a proper API ((AbstractAutoBean<?>) bean).setData(result); // AutoBeanCodex.decodeInto(result, bean); if (callback != null) { callback.onSuccess(bean.as()); } if (receiver != null) { receiver.onSuccess(null); } }
try { if (response.getStatusCodes().get(i)) { state.invocations.get(i).onSuccess(response.getInvocationResults().get(i)); } else { ServerFailureMessage failure = AutoBeanCodex.decode(MessageFactoryHolder.FACTORY, ServerFailureMessage.class, response.getInvocationResults().get(i)).as(); state.invocations.get(i).onFail( new ServerFailure(failure.getMessage(), failure.getExceptionType(), failure .getStackTrace(), failure.isFatal()));
public RequestData getRequestData() { if (requestData == null) { requestData = makeRequestData(); } return requestData; }
/** * Make sure there's a default receiver so errors don't get dropped. This behavior should be * revisited when chaining is supported, depending on whether or not chained invocations can fail * independently. */ public void fire() { boolean needsReceiver = true; for (AbstractRequest<?, ?> request : state.invocations) { if (request.hasReceiver()) { needsReceiver = false; break; } } if (needsReceiver) { doFire(new Receiver<Void>() { @Override public void onSuccess(Void response) { // Don't care } }); } else { doFire(null); } }
for (AbstractRequest<?, ?> request : new ArrayList<AbstractRequest<?, ?>>(state.invocations)) { try { request.onFail(failure); } catch (Throwable t) { if (causes == null) {