/** * @see org.carewebframework.api.context.IContextManager#reset */ @Override public void reset(boolean silent, ISurveyCallback callback) { pendingStack.clear(); commitStack.clear(); SurveyResponse response = new SurveyResponse(); Iterator<IManagedContext<?>> iter = managedContexts.iterator(); reset(silent, iter, response, __ -> { boolean commit = silent || !response.rejected(); commitContexts(commit, commit); execCallback(callback, response); }); }
private void reset(boolean silent, Iterator<IManagedContext<?>> iter, SurveyResponse response, ISurveyCallback callback) { if (iter.hasNext()) { IManagedContext<?> managedContext = iter.next(); resetItem(managedContext, silent, aresponse -> { response.merge(aresponse); if (silent || !response.rejected()) { reset(silent, iter, response, callback); } else { execCallback(callback, response); } }); } else { execCallback(callback, response); } }
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); } }