Skip to content

Commit 68a9a66

Browse files
authored
Remove XResource classes (#4126)
1 parent 05e160c commit 68a9a66

File tree

52 files changed

+457
-674
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+457
-674
lines changed

src/main/java/io/reactivex/Completable.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public interface CompletableTransformer extends Function<Completable, Completabl
6060
* @return the source or its wrapper Completable
6161
* @throws NullPointerException if source is null
6262
*/
63-
static Completable wrap(CompletableConsumable source) {
63+
public static Completable wrap(CompletableConsumable source) {
6464
Objects.requireNonNull(source, "source is null");
6565
if (source instanceof Completable) {
6666
return (Completable)source;
@@ -175,10 +175,8 @@ public static Completable concat(Publisher<? extends CompletableConsumable> sour
175175
* when the Completable is subscribed to.
176176
* @return the created Completable instance
177177
* @throws NullPointerException if onSubscribe is null
178-
* @deprecated
179178
*/
180179
@SchedulerSupport(SchedulerSupport.NONE)
181-
@Deprecated // FIXME temporary
182180
public static Completable create(CompletableConsumable onSubscribe) {
183181
Objects.requireNonNull(onSubscribe, "onSubscribe is null");
184182
if (onSubscribe instanceof Completable) {
@@ -798,7 +796,6 @@ public final Throwable get(long timeout, TimeUnit unit) {
798796
* @throws NullPointerException if onLift is null
799797
*/
800798
@SchedulerSupport(SchedulerSupport.NONE)
801-
@Deprecated // FIXME temporary
802799
public final Completable lift(final CompletableOperator onLift) {
803800
Objects.requireNonNull(onLift, "onLift is null");
804801
return new CompletableLift(this, onLift);

src/main/java/io/reactivex/disposables/CompositeDisposable.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@
1515
import java.util.*;
1616

1717
import io.reactivex.exceptions.CompositeException;
18+
import io.reactivex.internal.disposables.DisposableContainer;
1819
import io.reactivex.internal.functions.Objects;
1920
import io.reactivex.internal.util.*;
2021

2122
/**
2223
* A disposable container that can hold onto multiple other disposables.
2324
*/
24-
public final class CompositeDisposable implements Disposable {
25+
public final class CompositeDisposable implements Disposable, DisposableContainer {
2526

2627
OpenHashSet<Disposable> resources;
2728

@@ -156,6 +157,18 @@ public void clear() {
156157
dispose(set);
157158
}
158159

160+
public int size() {
161+
if (disposed) {
162+
return 0;
163+
}
164+
synchronized (this) {
165+
if (disposed) {
166+
return 0;
167+
}
168+
return resources.size();
169+
}
170+
}
171+
159172
void dispose(OpenHashSet<Disposable> set) {
160173
if (set == null) {
161174
return;

src/main/java/io/reactivex/disposables/Disposables.java

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313

1414
package io.reactivex.disposables;
1515

16-
import io.reactivex.functions.Consumer;
17-
import io.reactivex.internal.disposables.EmptyDisposable;
18-
import io.reactivex.internal.functions.Functions;
1916
import java.util.concurrent.Future;
17+
2018
import org.reactivestreams.Subscription;
2119

20+
import io.reactivex.internal.disposables.EmptyDisposable;
21+
import io.reactivex.internal.functions.Functions;
22+
2223
/**
2324
* Utility class to help create disposables by wrapping
2425
* other types.
@@ -52,21 +53,4 @@ public static Disposable empty() {
5253
public static Disposable disposed() {
5354
return EmptyDisposable.INSTANCE;
5455
}
55-
56-
private static final Consumer<Disposable> DISPOSER = new Consumer<Disposable>() {
57-
@Override
58-
public void accept(Disposable d) {
59-
d.dispose();
60-
}
61-
};
62-
63-
/**
64-
* Returns a consumer that calls dispose on the received Disposable.
65-
* @return the consumer that calls dispose on the received Disposable.
66-
* @deprecated that generic resource management will be removed
67-
*/
68-
@Deprecated
69-
public static Consumer<Disposable> consumeAndDispose() {
70-
return DISPOSER;
71-
}
7256
}

src/main/java/io/reactivex/disposables/FutureDisposable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
import java.util.concurrent.Future;
1616

1717
final class FutureDisposable extends ReferenceDisposable<Future<?>> {
18+
/** */
19+
private static final long serialVersionUID = 6545242830671168775L;
20+
1821
private final boolean allowInterrupt;
1922

2023
FutureDisposable(Future<?> run, boolean allowInterrupt) {

src/main/java/io/reactivex/disposables/RefCountDisposable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public boolean isDisposed() {
5656
}
5757

5858
static final class InnerDisposable extends ReferenceDisposable<RefCountDisposable> {
59+
/** */
60+
private static final long serialVersionUID = -6066815451193282256L;
61+
5962
InnerDisposable(RefCountDisposable parent) {
6063
super(parent);
6164
}

src/main/java/io/reactivex/disposables/ReferenceDisposable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
import java.util.concurrent.atomic.AtomicReference;
1818

1919
abstract class ReferenceDisposable<T> extends AtomicReference<T> implements Disposable {
20+
/** */
21+
private static final long serialVersionUID = 6537757548749041217L;
22+
2023
ReferenceDisposable(T value) {
2124
super(Objects.requireNonNull(value, "value is null"));
2225
}

src/main/java/io/reactivex/disposables/RunnableDisposable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
package io.reactivex.disposables;
1414

1515
final class RunnableDisposable extends ReferenceDisposable<Runnable> {
16+
/** */
17+
private static final long serialVersionUID = -8219729196779211169L;
18+
1619
RunnableDisposable(Runnable value) {
1720
super(value);
1821
}

src/main/java/io/reactivex/disposables/SubscriptionDisposable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
import org.reactivestreams.Subscription;
1616

1717
final class SubscriptionDisposable extends ReferenceDisposable<Subscription> {
18+
/** */
19+
private static final long serialVersionUID = -707001650852963139L;
20+
1821
SubscriptionDisposable(Subscription value) {
1922
super(value);
2023
}

src/main/java/io/reactivex/internal/disposables/ArrayCompositeResource.java renamed to src/main/java/io/reactivex/internal/disposables/ArrayCompositeDisposable.java

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,20 @@
1616
import java.util.concurrent.atomic.AtomicReferenceArray;
1717

1818
import io.reactivex.disposables.Disposable;
19-
import io.reactivex.functions.Consumer;
2019

2120
/**
22-
* A composite resource with a fixed number of slots.
21+
* A composite disposable with a fixed number of slots.
2322
*
2423
* <p>Note that since the implementation leaks the methods of AtomicReferenceArray, one must be
2524
* careful to only call setResource, replaceResource and dispose on it. All other methods may lead to undefined behavior
2625
* and should be used by internal means only.
27-
*
28-
* @param <T> the resource tpye
29-
* @deprecated Use more type-specific and inlined resource management
3026
*/
31-
@Deprecated
32-
public final class ArrayCompositeResource<T> extends AtomicReferenceArray<Object> implements Disposable {
27+
public final class ArrayCompositeDisposable extends AtomicReferenceArray<Disposable> implements Disposable {
3328
/** */
3429
private static final long serialVersionUID = 2746389416410565408L;
3530

36-
final Consumer<? super T> disposer;
37-
38-
static final Object DISPOSED = new Object();
39-
40-
public ArrayCompositeResource(int capacity, Consumer<? super T> disposer) {
31+
public ArrayCompositeDisposable(int capacity) {
4132
super(capacity);
42-
this.disposer = disposer;
4333
}
4434

4535
/**
@@ -48,17 +38,16 @@ public ArrayCompositeResource(int capacity, Consumer<? super T> disposer) {
4838
* @param resource
4939
* @return true if the resource has ben set, false if the composite has been disposed
5040
*/
51-
@SuppressWarnings("unchecked")
52-
public boolean setResource(int index, T resource) {
41+
public boolean setResource(int index, Disposable resource) {
5342
for (;;) {
54-
Object o = get(index);
55-
if (o == DISPOSED) {
56-
disposer.accept(resource);
43+
Disposable o = get(index);
44+
if (o == DisposableHelper.DISPOSED) {
45+
resource.dispose();;
5746
return false;
5847
}
5948
if (compareAndSet(index, o, resource)) {
6049
if (o != null) {
61-
disposer.accept((T)o);
50+
o.dispose();
6251
}
6352
return true;
6453
}
@@ -71,31 +60,29 @@ public boolean setResource(int index, T resource) {
7160
* @param resource
7261
* @return the old resource, can be null
7362
*/
74-
@SuppressWarnings("unchecked")
75-
public T replaceResource(int index, T resource) {
63+
public Disposable replaceResource(int index, Disposable resource) {
7664
for (;;) {
77-
Object o = get(index);
78-
if (o == DISPOSED) {
79-
disposer.accept(resource);
65+
Disposable o = get(index);
66+
if (o == DisposableHelper.DISPOSED) {
67+
resource.dispose();
8068
return null;
8169
}
8270
if (compareAndSet(index, o, resource)) {
83-
return (T)o;
71+
return o;
8472
}
8573
}
8674
}
8775

8876
@Override
89-
@SuppressWarnings("unchecked")
9077
public void dispose() {
91-
if (get(0) != DISPOSED) {
78+
if (get(0) != DisposableHelper.DISPOSED) {
9279
int s = length();
9380
for (int i = 0; i < s; i++) {
94-
Object o = get(i);
95-
if (o != DISPOSED) {
96-
o = getAndSet(i, DISPOSED);
97-
if (o != DISPOSED && o != null) {
98-
disposer.accept((T)o);
81+
Disposable o = get(i);
82+
if (o != DisposableHelper.DISPOSED) {
83+
o = getAndSet(i, DisposableHelper.DISPOSED);
84+
if (o != DisposableHelper.DISPOSED && o != null) {
85+
o.dispose();
9986
}
10087
}
10188
}
@@ -104,6 +91,6 @@ public void dispose() {
10491

10592
@Override
10693
public boolean isDisposed() {
107-
return get(0) == DISPOSED;
94+
return get(0) == DisposableHelper.DISPOSED;
10895
}
10996
}

src/main/java/io/reactivex/internal/disposables/CompositeResource.java renamed to src/main/java/io/reactivex/internal/disposables/DisposableContainer.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@
1313

1414
package io.reactivex.internal.disposables;
1515

16-
public interface CompositeResource<T> {
16+
import io.reactivex.disposables.Disposable;
17+
18+
/**
19+
* Common interface to add and remove disposables from a container.
20+
*/
21+
public interface DisposableContainer {
1722

18-
boolean add(T resource);
23+
boolean add(Disposable d);
1924

20-
boolean remove(T resource);
25+
boolean remove(Disposable d);
2126

22-
boolean delete(T resource);
27+
boolean delete(Disposable d);
2328
}

0 commit comments

Comments
 (0)