private void surveySubscribers(Iterator<IContextEvent> iter, SurveyResponse response, ISurveyCallback callback) { if ((response.isSilent() || !response.rejected()) && iter.hasNext()) { IContextEvent subscriber = iter.next(); response.reset(__ -> { surveySubscribers(iter, response, callback); }); try { subscriber.pending(response); } catch (Throwable e) { log.error("Error during surveysubscribers.", e); response.reject(e.toString()); } ResponseState state = response.getState(); if (state != ResponseState.DEFERRED) { surveySubscribers(iter, response, callback); } } else if (callback != null) { callback.response(response); } }
private void updateState(ResponseState newState) { if (state != newState) { switch (state) { case NULL: state = newState; break; case ACCEPTED: case REJECTED: throw new ContextException("A response has already been registered for this subscriber."); case DEFERRED: state = newState; if (callback != null) { callback.response(this); } } } }
private void execCallback(ISurveyCallback callback, ISurveyResponse response) { if (callback != null) { callback.response(response); } }
private void initItem(Iterator<IManagedContext<?>> iter, SurveyResponse response, ISurveyCallback callback) { if (iter.hasNext()) { IManagedContext<?> managedContext = iter.next(); initItem(managedContext, aresponse -> { response.merge(aresponse); initItem(iter, response, callback); }); } else if (callback != null) { callback.response(response); } }