Skip to content

Commit

Permalink
Bug fix: composeParamsWithEvents was called twice
Browse files Browse the repository at this point in the history
  • Loading branch information
reiss authored and reiss committed Feb 13, 2017
1 parent 0ec6b7c commit 5426f33
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
22 changes: 12 additions & 10 deletions src/main/java/com/jforex/programming/order/OrderUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import com.jforex.programming.order.task.ClosePositionTask;
import com.jforex.programming.order.task.MergePositionTask;
import com.jforex.programming.order.task.params.TaskParams;
import com.jforex.programming.order.task.params.TaskParamsBase;
import com.jforex.programming.order.task.params.TaskParamsType;
import com.jforex.programming.order.task.params.TaskParamsUtil;
import com.jforex.programming.order.task.params.basic.BatchParams;
Expand Down Expand Up @@ -98,9 +97,14 @@ public void execute(final TaskParams taskParams) {

final Observable<OrderEvent> observable = taskParamsToObservable(taskParams);
if (basicTaskTypes.contains(taskParams.type()))
taskParamsUtil.subscribeBasicParams(observable, (TaskParamsBase) taskParams);
else
taskParamsUtil.subscribeComposeData(observable, taskParams.composeData());
taskParamsUtil.subscribeBasicParams(observable, taskParams);
else {
final Observable<OrderEvent> observableWithEvents =
taskParamsUtil.composeParamsWithEvents(observable,
taskParams.composeData(),
taskParams.consumerForEvent());
taskParamsUtil.subscribeComposeData(observableWithEvents, taskParams.composeData());
}
}

public void executeBatch(final BatchParams batchParams) {
Expand All @@ -109,20 +113,18 @@ public void executeBatch(final BatchParams batchParams) {
final List<Observable<OrderEvent>> observables = batchParams
.taskParams()
.stream()
.map(this::taskParamsToObservable)
.map(params -> taskParamsUtil.composeParamsWithEvents(taskParamsToObservable(params),
params.composeData(),
params.consumerForEvent()))
.collect(Collectors.toList());

taskParamsUtil.subscribeComposeData(Observable.merge(observables), batchParams.composeData());
}

private final Observable<OrderEvent> taskParamsToObservable(final TaskParams taskParams) {
final Observable<OrderEvent> observable = taskParamsMapper
return taskParamsMapper
.get(taskParams.type())
.apply(taskParams);

return taskParamsUtil.composeParamsWithEvents(observable,
taskParams.composeData(),
taskParams.consumerForEvent());
}

public PositionOrders positionOrders(final Instrument instrument) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
public class TaskParamsUtil {

public void subscribeBasicParams(final Observable<OrderEvent> observable,
final TaskParamsBase taskParamsBase) {
subscribeComposeData(composeEvents(observable, taskParamsBase.consumerForEvent()),
taskParamsBase.composeData());
final TaskParams taskParams) {
subscribeComposeData(composeEvents(observable, taskParams.consumerForEvent()),
taskParams.composeData());
}

public void subscribeComposeData(final Observable<OrderEvent> observable,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,13 @@ public void setUp() {
public void submitOrderCallsSubscribeOnTaskParams() {
final SubmitParams submitParamsMock = mock(SubmitParams.class);
when(submitParamsMock.type()).thenReturn(TaskParamsType.SUBMIT);
final Observable<OrderEvent> submitObservable = eventObservable(submitEvent);
when(basicTaskMock.submitOrder(submitParamsMock))
.thenReturn(submitObservable);

orderUtil.execute(submitParamsMock);

verify(taskParamsUtilMock).subscribeBasicParams(basicTaskMock.submitOrder(submitParamsMock),
verify(taskParamsUtilMock).subscribeBasicParams(submitObservable,
submitParamsMock);
}

Expand Down

0 comments on commit 5426f33

Please sign in to comment.