class com.netflix.hystrix.collapser.CollapsedRequestSubject<T, R> implements com.netflix.hystrix.HystrixCollapser$CollapsedRequest<T, R>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.netflix.hystrix.collapser.CollapsedRequestSubject
super_class: java.lang.Object
{
private final R argument;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: TR;
private java.util.concurrent.atomic.AtomicBoolean valueSet;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0002) ACC_PRIVATE
private final rx.subjects.ReplaySubject<T> subject;
descriptor: Lrx/subjects/ReplaySubject;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lrx/subjects/ReplaySubject<TT;>;
private final rx.Observable<T> subjectWithAccounting;
descriptor: Lrx/Observable;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lrx/Observable<TT;>;
private volatile int outstandingSubscriptions;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
public void <init>(R, com.netflix.hystrix.collapser.RequestBatch<?, T, R>);
descriptor: (Ljava/lang/Object;Lcom/netflix/hystrix/collapser/RequestBatch;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
2: aload 0
invokestatic rx.subjects.ReplaySubject.create:()Lrx/subjects/ReplaySubject;
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
3: aload 0
iconst_0
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.outstandingSubscriptions:I
4: aload 1
getstatic com.netflix.hystrix.collapser.RequestCollapser.NULL_SENTINEL:Ljava/lang/Object;
if_acmpne 7
5: aload 0
aconst_null
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
6: goto 8
7: StackMap locals: com.netflix.hystrix.collapser.CollapsedRequestSubject java.lang.Object com.netflix.hystrix.collapser.RequestBatch
StackMap stack:
aload 0
aload 1
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
8: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
9: new com.netflix.hystrix.collapser.CollapsedRequestSubject$1
dup
aload 0
invokespecial com.netflix.hystrix.collapser.CollapsedRequestSubject$1.<init>:(Lcom/netflix/hystrix/collapser/CollapsedRequestSubject;)V
invokevirtual rx.subjects.ReplaySubject.doOnSubscribe:(Lrx/functions/Action0;)Lrx/Observable;
10: new com.netflix.hystrix.collapser.CollapsedRequestSubject$2
dup
aload 0
aload 2
aload 1
invokespecial com.netflix.hystrix.collapser.CollapsedRequestSubject$2.<init>:(Lcom/netflix/hystrix/collapser/CollapsedRequestSubject;Lcom/netflix/hystrix/collapser/RequestBatch;Ljava/lang/Object;)V
invokevirtual rx.Observable.doOnUnsubscribe:(Lrx/functions/Action0;)Lrx/Observable;
11: putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subjectWithAccounting:Lrx/Observable;
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 13 1 arg TR;
0 13 2 containingBatch Lcom/netflix/hystrix/collapser/RequestBatch<*TT;TR;>;
Signature: (TR;Lcom/netflix/hystrix/collapser/RequestBatch<*TT;TR;>;)V
MethodParameters:
Name Flags
arg final
containingBatch final
public void <init>();
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
2: aload 0
invokestatic rx.subjects.ReplaySubject.create:()Lrx/subjects/ReplaySubject;
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
3: aload 0
iconst_0
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.outstandingSubscriptions:I
4: aload 0
aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subjectWithAccounting:Lrx/Observable;
5: aload 0
aload 1
putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 7 1 arg TR;
Signature: (TR;)V
MethodParameters:
Name Flags
arg final
public R getArgument();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
Signature: ()TR;
public void setResponse();
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
ifne 5
1: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
aload 1
invokevirtual rx.subjects.ReplaySubject.onNext:(Ljava/lang/Object;)V
2: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
3: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
invokevirtual rx.subjects.ReplaySubject.onCompleted:()V
4: goto 6
5: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Response has already terminated so response can not be set : "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 7 1 response TT;
Signature: (TT;)V
MethodParameters:
Name Flags
response
public void emitResponse();
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
ifne 4
1: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
aload 1
invokevirtual rx.subjects.ReplaySubject.onNext:(Ljava/lang/Object;)V
2: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
3: goto 5
4: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Response has already terminated so response can not be set : "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 6 1 response TT;
Signature: (TT;)V
MethodParameters:
Name Flags
response
public void setComplete();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
ifne 2
1: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
invokevirtual rx.subjects.ReplaySubject.onCompleted:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
public void setExceptionIfResponseNotReceived(java.lang.Exception);
descriptor: (Ljava/lang/Exception;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifne 2
aload 0
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
ifne 2
1: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
aload 1
invokevirtual rx.subjects.ReplaySubject.onError:(Ljava/lang/Throwable;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 3 1 e Ljava/lang/Exception;
MethodParameters:
Name Flags
e
public java.lang.Exception setExceptionIfResponseNotReceived(java.lang.Exception, java.lang.String);
descriptor: (Ljava/lang/Exception;Ljava/lang/String;)Ljava/lang/Exception;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
astore 3
start local 3 1: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifne 5
aload 0
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
ifne 5
2: aload 1
ifnonnull 4
3: new java.lang.IllegalStateException
dup
aload 2
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
astore 3
4: StackMap locals: java.lang.Exception
StackMap stack:
aload 0
aload 3
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.setExceptionIfResponseNotReceived:(Ljava/lang/Exception;)V
5: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 6 1 e Ljava/lang/Exception;
0 6 2 exceptionMessage Ljava/lang/String;
1 6 3 exception Ljava/lang/Exception;
MethodParameters:
Name Flags
e
exceptionMessage
public void setException(java.lang.Exception);
descriptor: (Ljava/lang/Exception;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
ifne 3
1: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
aload 1
invokevirtual rx.subjects.ReplaySubject.onError:(Ljava/lang/Throwable;)V
2: goto 4
3: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "Response has already terminated so exception can not be set"
aload 1
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
0 5 1 e Ljava/lang/Exception;
MethodParameters:
Name Flags
e
private boolean isTerminated();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
invokevirtual rx.subjects.ReplaySubject.hasCompleted:()Z
ifne 1
aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
invokevirtual rx.subjects.ReplaySubject.hasThrowable:()Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
public rx.Observable<T> toObservable();
descriptor: ()Lrx/Observable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subjectWithAccounting:Lrx/Observable;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
Signature: ()Lrx/Observable<TT;>;
}
Signature: <T:Ljava/lang/Object;R:Ljava/lang/Object;>Ljava/lang/Object;Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TT;TR;>;
SourceFile: "CollapsedRequestSubject.java"
NestMembers:
com.netflix.hystrix.collapser.CollapsedRequestSubject$1 com.netflix.hystrix.collapser.CollapsedRequestSubject$2
InnerClasses:
public abstract CollapsedRequest = com.netflix.hystrix.HystrixCollapser$CollapsedRequest of com.netflix.hystrix.HystrixCollapser
com.netflix.hystrix.collapser.CollapsedRequestSubject$1
com.netflix.hystrix.collapser.CollapsedRequestSubject$2