Skip to content

Commit 5957881

Browse files
Observable.mergeDelayError: refactor varargs to overloads
#359 Varargs cause compiler warnings
1 parent 97b51eb commit 5957881

File tree

2 files changed

+248
-34
lines changed

2 files changed

+248
-34
lines changed

language-adaptors/rxjava-scala/src/test/scala/rx/lang/scala/RxImplicitsTests.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,7 @@ class UnitTestSuite extends JUnitSuite {
135135
@Test def testMerge {
136136
val observable1 = Observable.from(1, 2, 3)
137137
val observable2 = Observable.from(4, 5, 6)
138-
val observableList = List(observable1, observable2).asJava
139-
val merged = Observable.merge(observableList)
138+
val merged = Observable.merge(observable1, observable2)
140139
assertSubscribeReceives(merged)(1, 2, 3, 4, 5, 6)
141140
}
142141

rxjava-core/src/main/java/rx/Observable.java

Lines changed: 247 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -919,23 +919,6 @@ public static <T> Observable<T> just(T value) {
919919
return from(list);
920920
}
921921

922-
/**
923-
* Flattens a list of Observables into one Observable, without any transformation.
924-
* <p>
925-
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
926-
* <p>
927-
* You can combine the items emitted by multiple Observables so that they act like a single
928-
* Observable, by using the <code>merge</code> method.
929-
*
930-
* @param source
931-
* an Iterable of Observables
932-
* @return an Observable that emits items that are the result of flattening the {@code source} list of Observables
933-
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge</a>
934-
*/
935-
public static <T> Observable<T> merge(Iterable<? extends Observable<? extends T>> source) {
936-
return create(OperationMerge.merge(source));
937-
}
938-
939922
/**
940923
* Flattens a sequence of Observables emitted by an Observable into one Observable, without any
941924
* transformation.
@@ -1422,7 +1405,7 @@ public static <T> Observable<T> concat(Observable<? extends T> t1, Observable<?
14221405
}
14231406

14241407
/**
1425-
* This behaves like {@link #merge(java.util.List)} except that if any of the merged Observables
1408+
* This behaves like {@link #merge(Observable)} except that if any of the merged Observables
14261409
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
14271410
* refrain from propagating that error notification until all of the merged Observables have
14281411
* finished emitting items.
@@ -1436,17 +1419,17 @@ public static <T> Observable<T> concat(Observable<? extends T> t1, Observable<?
14361419
* source Observables without being interrupted by an error notification from one of them.
14371420
*
14381421
* @param source
1439-
* a list of Observables
1422+
* an Observable that emits Observables
14401423
* @return an Observable that emits items that are the result of flattening the items emitted by
1441-
* the {@code source} list of Observables
1424+
* the Observables emitted by the {@code source} Observable
14421425
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
14431426
*/
1444-
public static <T> Observable<T> mergeDelayError(List<? extends Observable<? extends T>> source) {
1427+
public static <T> Observable<T> mergeDelayError(Observable<? extends Observable<? extends T>> source) {
14451428
return create(OperationMergeDelayError.mergeDelayError(source));
14461429
}
14471430

14481431
/**
1449-
* This behaves like {@link #merge(Observable)} except that if any of the merged Observables
1432+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
14501433
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
14511434
* refrain from propagating that error notification until all of the merged Observables have
14521435
* finished emitting items.
@@ -1459,16 +1442,20 @@ public static <T> Observable<T> mergeDelayError(List<? extends Observable<? exte
14591442
* This method allows an Observer to receive all successfully emitted items from all of the
14601443
* source Observables without being interrupted by an error notification from one of them.
14611444
*
1462-
* @param source
1463-
* an Observable that emits Observables
1445+
* @param t1
1446+
* an Observable to be merged
1447+
* @param t2
1448+
* an Observable to be merged
14641449
* @return an Observable that emits items that are the result of flattening the items emitted by
1465-
* the Observables emitted by the {@code source} Observable
1450+
* the {@code source} Observables
14661451
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
14671452
*/
1468-
public static <T> Observable<T> mergeDelayError(Observable<? extends Observable<? extends T>> source) {
1469-
return create(OperationMergeDelayError.mergeDelayError(source));
1453+
@SuppressWarnings("unchecked")
1454+
// suppress because the types are checked by the method signature before using a vararg
1455+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2) {
1456+
return create(OperationMergeDelayError.mergeDelayError(t1, t2));
14701457
}
1471-
1458+
14721459
/**
14731460
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
14741461
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
@@ -1483,14 +1470,242 @@ public static <T> Observable<T> mergeDelayError(Observable<? extends Observable<
14831470
* This method allows an Observer to receive all successfully emitted items from all of the
14841471
* source Observables without being interrupted by an error notification from one of them.
14851472
*
1486-
* @param source
1487-
* a series of Observables
1473+
* @param t1
1474+
* an Observable to be merged
1475+
* @param t2
1476+
* an Observable to be merged
1477+
* @param t3
1478+
* an Observable to be merged
14881479
* @return an Observable that emits items that are the result of flattening the items emitted by
14891480
* the {@code source} Observables
14901481
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
14911482
*/
1492-
public static <T> Observable<T> mergeDelayError(Observable<? extends T>... source) {
1493-
return create(OperationMergeDelayError.mergeDelayError(source));
1483+
@SuppressWarnings("unchecked")
1484+
// suppress because the types are checked by the method signature before using a vararg
1485+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3) {
1486+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3));
1487+
}
1488+
1489+
/**
1490+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
1491+
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1492+
* refrain from propagating that error notification until all of the merged Observables have
1493+
* finished emitting items.
1494+
* <p>
1495+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1496+
* <p>
1497+
* Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1498+
* Observers once.
1499+
* <p>
1500+
* This method allows an Observer to receive all successfully emitted items from all of the
1501+
* source Observables without being interrupted by an error notification from one of them.
1502+
*
1503+
* @param t1
1504+
* an Observable to be merged
1505+
* @param t2
1506+
* an Observable to be merged
1507+
* @param t3
1508+
* an Observable to be merged
1509+
* @param t4
1510+
* an Observable to be merged
1511+
* @return an Observable that emits items that are the result of flattening the items emitted by
1512+
* the {@code source} Observables
1513+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
1514+
*/
1515+
@SuppressWarnings("unchecked")
1516+
// suppress because the types are checked by the method signature before using a vararg
1517+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4) {
1518+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3, t4));
1519+
}
1520+
1521+
/**
1522+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
1523+
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1524+
* refrain from propagating that error notification until all of the merged Observables have
1525+
* finished emitting items.
1526+
* <p>
1527+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1528+
* <p>
1529+
* Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1530+
* Observers once.
1531+
* <p>
1532+
* This method allows an Observer to receive all successfully emitted items from all of the
1533+
* source Observables without being interrupted by an error notification from one of them.
1534+
*
1535+
* @param t1
1536+
* an Observable to be merged
1537+
* @param t2
1538+
* an Observable to be merged
1539+
* @param t3
1540+
* an Observable to be merged
1541+
* @param t4
1542+
* an Observable to be merged
1543+
* @param t5
1544+
* an Observable to be merged
1545+
* @return an Observable that emits items that are the result of flattening the items emitted by
1546+
* the {@code source} Observables
1547+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
1548+
*/
1549+
@SuppressWarnings("unchecked")
1550+
// suppress because the types are checked by the method signature before using a vararg
1551+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5) {
1552+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3, t4, t5));
1553+
}
1554+
1555+
/**
1556+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
1557+
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1558+
* refrain from propagating that error notification until all of the merged Observables have
1559+
* finished emitting items.
1560+
* <p>
1561+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1562+
* <p>
1563+
* Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1564+
* Observers once.
1565+
* <p>
1566+
* This method allows an Observer to receive all successfully emitted items from all of the
1567+
* source Observables without being interrupted by an error notification from one of them.
1568+
*
1569+
* @param t1
1570+
* an Observable to be merged
1571+
* @param t2
1572+
* an Observable to be merged
1573+
* @param t3
1574+
* an Observable to be merged
1575+
* @param t4
1576+
* an Observable to be merged
1577+
* @param t5
1578+
* an Observable to be merged
1579+
* @param t6
1580+
* an Observable to be merged
1581+
* @return an Observable that emits items that are the result of flattening the items emitted by
1582+
* the {@code source} Observables
1583+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
1584+
*/
1585+
@SuppressWarnings("unchecked")
1586+
// suppress because the types are checked by the method signature before using a vararg
1587+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5, Observable<? extends T> t6) {
1588+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3, t4, t5, t6));
1589+
}
1590+
1591+
/**
1592+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
1593+
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1594+
* refrain from propagating that error notification until all of the merged Observables have
1595+
* finished emitting items.
1596+
* <p>
1597+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1598+
* <p>
1599+
* Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1600+
* Observers once.
1601+
* <p>
1602+
* This method allows an Observer to receive all successfully emitted items from all of the
1603+
* source Observables without being interrupted by an error notification from one of them.
1604+
*
1605+
* @param t1
1606+
* an Observable to be merged
1607+
* @param t2
1608+
* an Observable to be merged
1609+
* @param t3
1610+
* an Observable to be merged
1611+
* @param t4
1612+
* an Observable to be merged
1613+
* @param t5
1614+
* an Observable to be merged
1615+
* @param t6
1616+
* an Observable to be merged
1617+
* @param t7
1618+
* an Observable to be merged
1619+
* @return an Observable that emits items that are the result of flattening the items emitted by
1620+
* the {@code source} Observables
1621+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
1622+
*/
1623+
@SuppressWarnings("unchecked")
1624+
// suppress because the types are checked by the method signature before using a vararg
1625+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5, Observable<? extends T> t6, Observable<? extends T> t7) {
1626+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3, t4, t5, t6, t7));
1627+
}
1628+
1629+
/**
1630+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
1631+
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1632+
* refrain from propagating that error notification until all of the merged Observables have
1633+
* finished emitting items.
1634+
* <p>
1635+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1636+
* <p>
1637+
* Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1638+
* Observers once.
1639+
* <p>
1640+
* This method allows an Observer to receive all successfully emitted items from all of the
1641+
* source Observables without being interrupted by an error notification from one of them.
1642+
*
1643+
* @param t1
1644+
* an Observable to be merged
1645+
* @param t2
1646+
* an Observable to be merged
1647+
* @param t3
1648+
* an Observable to be merged
1649+
* @param t4
1650+
* an Observable to be merged
1651+
* @param t5
1652+
* an Observable to be merged
1653+
* @param t6
1654+
* an Observable to be merged
1655+
* @param t7
1656+
* an Observable to be merged
1657+
* @param t8
1658+
* an Observable to be merged
1659+
* @return an Observable that emits items that are the result of flattening the items emitted by
1660+
* the {@code source} Observables
1661+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
1662+
*/
1663+
@SuppressWarnings("unchecked")
1664+
// suppress because the types are checked by the method signature before using a vararg
1665+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5, Observable<? extends T> t6, Observable<? extends T> t7, Observable<? extends T> t8) {
1666+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3, t4, t5, t6, t7, t8));
1667+
}
1668+
1669+
/**
1670+
* This behaves like {@link #merge(Observable...)} except that if any of the merged Observables
1671+
* notify of an error via {@link Observer#onError onError}, {@code mergeDelayError} will
1672+
* refrain from propagating that error notification until all of the merged Observables have
1673+
* finished emitting items.
1674+
* <p>
1675+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/mergeDelayError.png">
1676+
* <p>
1677+
* Even if multiple merged Observables send {@code onError} notifications, {@code mergeDelayError} will only invoke the {@code onError} method of its
1678+
* Observers once.
1679+
* <p>
1680+
* This method allows an Observer to receive all successfully emitted items from all of the
1681+
* source Observables without being interrupted by an error notification from one of them.
1682+
*
1683+
* @param t1
1684+
* an Observable to be merged
1685+
* @param t2
1686+
* an Observable to be merged
1687+
* @param t3
1688+
* an Observable to be merged
1689+
* @param t4
1690+
* an Observable to be merged
1691+
* @param t5
1692+
* an Observable to be merged
1693+
* @param t6
1694+
* an Observable to be merged
1695+
* @param t7
1696+
* an Observable to be merged
1697+
* @param t8
1698+
* an Observable to be merged
1699+
* @param t9
1700+
* an Observable to be merged
1701+
* @return an Observable that emits items that are the result of flattening the items emitted by
1702+
* the {@code source} Observables
1703+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge Method</a>
1704+
*/
1705+
@SuppressWarnings("unchecked")
1706+
// suppress because the types are checked by the method signature before using a vararg
1707+
public static <T> Observable<T> mergeDelayError(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5, Observable<? extends T> t6, Observable<? extends T> t7, Observable<? extends T> t8, Observable<? extends T> t9) {
1708+
return create(OperationMergeDelayError.mergeDelayError(t1, t2, t3, t4, t5, t6, t7, t8, t9));
14941709
}
14951710

14961711
/**

0 commit comments

Comments
 (0)