Skip to content

Commit dadf17b

Browse files
Merge pull request #718 from zsxwing/merge-overloads
Implemented the Merge overloads
2 parents e335e61 + 7526eb7 commit dadf17b

File tree

3 files changed

+322
-163
lines changed

3 files changed

+322
-163
lines changed

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

Lines changed: 147 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,10 +1243,8 @@ public static <T> Observable<T> merge(Observable<? extends Observable<? extends
12431243
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
12441244
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
12451245
*/
1246-
@SuppressWarnings("unchecked")
1247-
// suppress because the types are checked by the method signature before using a vararg
12481246
public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? extends T> t2) {
1249-
return create(OperationMerge.merge(t1, t2));
1247+
return merge(from(t1, t2));
12501248
}
12511249

12521250
/**
@@ -1266,10 +1264,8 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
12661264
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
12671265
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
12681266
*/
1269-
@SuppressWarnings("unchecked")
1270-
// suppress because the types are checked by the method signature before using a vararg
12711267
public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3) {
1272-
return create(OperationMerge.merge(t1, t2, t3));
1268+
return merge(from(t1, t2, t3));
12731269
}
12741270

12751271
/**
@@ -1290,10 +1286,8 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
12901286
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
12911287
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
12921288
*/
1293-
@SuppressWarnings("unchecked")
1294-
// suppress because the types are checked by the method signature before using a vararg
12951289
public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4) {
1296-
return create(OperationMerge.merge(t1, t2, t3, t4));
1290+
return merge(from(t1, t2, t3, t4));
12971291
}
12981292

12991293
/**
@@ -1315,10 +1309,8 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
13151309
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
13161310
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
13171311
*/
1318-
@SuppressWarnings("unchecked")
1319-
// suppress because the types are checked by the method signature before using a vararg
13201312
public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5) {
1321-
return create(OperationMerge.merge(t1, t2, t3, t4, t5));
1313+
return merge(from(t1, t2, t3, t4, t5));
13221314
}
13231315

13241316
/**
@@ -1341,10 +1333,8 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
13411333
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
13421334
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
13431335
*/
1344-
@SuppressWarnings("unchecked")
1345-
// suppress because the types are checked by the method signature before using a vararg
13461336
public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? extends T> t2, Observable<? extends T> t3, Observable<? extends T> t4, Observable<? extends T> t5, Observable<? extends T> t6) {
1347-
return create(OperationMerge.merge(t1, t2, t3, t4, t5, t6));
1337+
return merge(from(t1, t2, t3, t4, t5, t6));
13481338
}
13491339

13501340
/**
@@ -1368,10 +1358,8 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
13681358
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
13691359
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
13701360
*/
1371-
@SuppressWarnings("unchecked")
1372-
// suppress because the types are checked by the method signature before using a vararg
13731361
public static <T> Observable<T> merge(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) {
1374-
return create(OperationMerge.merge(t1, t2, t3, t4, t5, t6, t7));
1362+
return merge(from(t1, t2, t3, t4, t5, t6, t7));
13751363
}
13761364

13771365
/**
@@ -1396,10 +1384,8 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
13961384
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
13971385
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
13981386
*/
1399-
@SuppressWarnings("unchecked")
1400-
// suppress because the types are checked by the method signature before using a vararg
14011387
public static <T> Observable<T> merge(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) {
1402-
return create(OperationMerge.merge(t1, t2, t3, t4, t5, t6, t7, t8));
1388+
return merge(from(t1, t2, t3, t4, t5, t6, t7, t8));
14031389
}
14041390

14051391
/**
@@ -1425,10 +1411,148 @@ public static <T> Observable<T> merge(Observable<? extends T> t1, Observable<? e
14251411
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
14261412
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099.aspx">MSDN: Observable.Merge</a>
14271413
*/
1428-
@SuppressWarnings("unchecked")
14291414
// suppress because the types are checked by the method signature before using a vararg
14301415
public static <T> Observable<T> merge(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) {
1431-
return create(OperationMerge.merge(t1, t2, t3, t4, t5, t6, t7, t8, t9));
1416+
return merge(from(t1, t2, t3, t4, t5, t6, t7, t8, t9));
1417+
}
1418+
1419+
/**
1420+
* Flattens a sequence of Observables emitted by an Observable into one Observable, without any transformation.
1421+
* The number of concurrent subscriptions to the Observables is limited by maxConcurrent.
1422+
* <p>
1423+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1424+
* <p>
1425+
* You can combine the items emitted by multiple Observables so that they
1426+
* act like a single Observable, by using the {@code merge} method.
1427+
*
1428+
* @param source an Observable that emits Observables
1429+
* @param maxConcurrent the maximum number of Observables being subscribed to concurrently
1430+
* @return an Observable that emits items that are the result of flattening
1431+
* the items emitted by the Observables emitted by the
1432+
* {@code source} Observable
1433+
* @throw IllegalArgumentException if maxConcurrent <= 0
1434+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1435+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh211914(v=vs.103).aspx">MSDN: Observable.Merge</a>
1436+
*/
1437+
public static <T> Observable<T> merge(Observable<? extends Observable<? extends T>> source, int maxConcurrent) {
1438+
return create(OperationMerge.merge(source, maxConcurrent));
1439+
}
1440+
1441+
/**
1442+
* Flattens an Observable Iterable into one Observable, without any transformation.
1443+
* <p>
1444+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1445+
* <p>
1446+
* You can combine the items emitted by multiple Observables so that they
1447+
* act like a single Observable, by using the {@code merge} method.
1448+
*
1449+
* @param sequences the Observable Iterable
1450+
* @return an Observable that emits items that are the result of flattening
1451+
* the items emitted by the Observables in the Iterable
1452+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1453+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229590(v=vs.103).aspx">MSDN: Observable.Merge</a>
1454+
*/
1455+
public static <T> Observable<T> merge(Iterable<? extends Observable<? extends T>> sequences) {
1456+
return merge(from(sequences));
1457+
}
1458+
1459+
/**
1460+
* Flattens an Observable Iterable into one Observable, without any transformation.
1461+
* The number of concurrent subscriptions to the Observables is limited by maxConcurrent.
1462+
* <p>
1463+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1464+
* <p>
1465+
* You can combine the items emitted by multiple Observables so that they
1466+
* act like a single Observable, by using the {@code merge} method.
1467+
*
1468+
* @param sequences the Observable Iterable
1469+
* @param maxConcurrent the maximum number of Observables being subscribed to concurrently
1470+
* @return an Observable that emits items that are the result of flattening
1471+
* the items emitted by the Observables in the Iterable
1472+
* @throw IllegalArgumentException if maxConcurrent <= 0
1473+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1474+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229923(v=vs.103).aspx">MSDN: Observable.Merge</a>
1475+
*/
1476+
public static <T> Observable<T> merge(Iterable<? extends Observable<? extends T>> sequences, int maxConcurrent) {
1477+
return merge(from(sequences), maxConcurrent);
1478+
}
1479+
1480+
/**
1481+
* Flattens an Observable Iterable into one Observable, without any transformation.
1482+
* The number of concurrent subscriptions to the Observables is limited by maxConcurrent.
1483+
* <p>
1484+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1485+
* <p>
1486+
* You can combine the items emitted by multiple Observables so that they
1487+
* act like a single Observable, by using the {@code merge} method.
1488+
*
1489+
* @param sequences the Observable Iterable
1490+
* @param maxConcurrent the maximum number of Observables being subscribed to concurrently
1491+
* @param scheduler the scheduler to traversal the Observable array on
1492+
* @return an Observable that emits items that are the result of flattening
1493+
* the items emitted by the Observables in the Iterable
1494+
* @throw IllegalArgumentException if maxConcurrent <= 0
1495+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1496+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh244329(v=vs.103).aspx">MSDN: Observable.Merge</a>
1497+
*/
1498+
public static <T> Observable<T> merge(Iterable<? extends Observable<? extends T>> sequences, int maxConcurrent, Scheduler scheduler) {
1499+
return merge(from(sequences, scheduler), maxConcurrent);
1500+
}
1501+
1502+
/**
1503+
* Flattens an Observable Iterable into one Observable, without any transformation.
1504+
* <p>
1505+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1506+
* <p>
1507+
* You can combine the items emitted by multiple Observables so that they
1508+
* act like a single Observable, by using the {@code merge} method.
1509+
*
1510+
* @param sequences the Observable Iterable
1511+
* @param scheduler the scheduler to traversal the Observable array on
1512+
* @return an Observable that emits items that are the result of flattening
1513+
* the items emitted by the Observables in the Iterable
1514+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1515+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh244336(v=vs.103).aspx">MSDN: Observable.Merge</a>
1516+
*/
1517+
public static <T> Observable<T> merge(Iterable<? extends Observable<? extends T>> sequences, Scheduler scheduler) {
1518+
return merge(from(sequences, scheduler));
1519+
}
1520+
1521+
/**
1522+
* Flattens an Observable array into one Observable, without any transformation.
1523+
* <p>
1524+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1525+
* <p>
1526+
* You can combine the items emitted by multiple Observables so that they
1527+
* act like a single Observable, by using the {@code merge} method.
1528+
*
1529+
* @param sequences the Observable array
1530+
* @return an Observable that emits items that are the result of flattening
1531+
* the items emitted by the Observables in the array
1532+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1533+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229099(v=vs.103).aspx">MSDN: Observable.Merge</a>
1534+
*/
1535+
public static <T> Observable<T> merge(Observable<? extends T>[] sequences) {
1536+
return merge(from(sequences));
1537+
}
1538+
1539+
/**
1540+
* Flattens an Observable array into one Observable, without any transformation.
1541+
* <p>
1542+
* <img width="640" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/merge.png">
1543+
* <p>
1544+
* You can combine the items emitted by multiple Observables so that they
1545+
* act like a single Observable, by using the {@code merge} method.
1546+
*
1547+
* @param sequences the Observable array
1548+
* @param scheduler the scheduler to traversal the Observable array on
1549+
* @return an Observable that emits items that are the result of flattening
1550+
* the items emitted by the Observables in the array
1551+
* @see <a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge">RxJava Wiki: merge()</a>
1552+
* @see <a href="http://msdn.microsoft.com/en-us/library/hh229061(v=vs.103).aspx">MSDN: Observable.Merge</a>
1553+
*/
1554+
public static <T> Observable<T> merge(Observable<? extends T>[] sequences, Scheduler scheduler) {
1555+
return merge(from(sequences, scheduler));
14321556
}
14331557

14341558
/**

0 commit comments

Comments
 (0)