@Override public Observable<T> call(final List<Parameter> params) { if (jdbcQuery.sql().equals(QueryUpdateOnSubscribe.BEGIN_TRANSACTION)) { context.beginTransactionSubscribe(); } Observable<T> result = createUpdate(params).subscribeOn(context.scheduler()); if (jdbcQuery.sql().equals(QueryUpdateOnSubscribe.COMMIT) || jdbcQuery.sql().equals(QueryUpdateOnSubscribe.ROLLBACK)) context.endTransactionSubscribe(); return result; } };
@Override public void call(Subscriber<? super T> subscriber) { State state = null; try { if (stateProvided) { state = (State) parameters.get(0).value(); setupUnsubscription(subscriber, state); } else { state = new State(); connectAndPrepareStatement(subscriber, state); setupUnsubscription(subscriber, state); executeQuery(subscriber, state); } subscriber.setProducer(new QuerySelectProducer<T>(function, subscriber, state.con, state.ps, state.rs)); } catch (Throwable e) { query.context().endTransactionObserve(); query.context().endTransactionSubscribe(); try { if (state != null) closeQuietly(state); } finally { handleException(e, subscriber); } } }
@Override public void call(Subscriber<? super T> subscriber) { final State state = new State(); try { if (isBeginTransaction()) performBeginTransaction(subscriber); else { query.context().setupBatching(); getConnection(state); subscriber.add(createUnsubscriptionAction(state)); if (isCommit()) performCommit(subscriber, state); else if (isRollback()) performRollback(subscriber, state); else performUpdate(subscriber, state); } } catch (Throwable e) { query.context().endTransactionObserve(); query.context().endTransactionSubscribe(); try { close(state); } finally { handleException(e, subscriber); } } }