public class com.netflix.hystrix.strategy.HystrixPlugins
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.netflix.hystrix.strategy.HystrixPlugins
super_class: java.lang.Object
{
private final java.lang.ClassLoader classLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
final java.util.concurrent.atomic.AtomicReference<com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier> notifier;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier;>;
final java.util.concurrent.atomic.AtomicReference<com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy> concurrencyStrategy;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;>;
final java.util.concurrent.atomic.AtomicReference<com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher> metricsPublisher;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher;>;
final java.util.concurrent.atomic.AtomicReference<com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy> propertiesFactory;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy;>;
final java.util.concurrent.atomic.AtomicReference<com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook> commandExecutionHook;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook;>;
private final com.netflix.hystrix.strategy.properties.HystrixDynamicProperties dynamicProperties;
descriptor: Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private void <init>(java.lang.ClassLoader, com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier);
descriptor: (Ljava/lang/ClassLoader;Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, 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.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
4: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
5: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
putfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
6: aload 0
aload 1
putfield com.netflix.hystrix.strategy.HystrixPlugins.classLoader:Ljava/lang/ClassLoader;
7: aload 0
aload 1
aload 2
invokestatic com.netflix.hystrix.strategy.HystrixPlugins.resolveDynamicProperties:(Ljava/lang/ClassLoader;Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;)Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
putfield com.netflix.hystrix.strategy.HystrixPlugins.dynamicProperties:Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
8: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
0 9 1 classLoader Ljava/lang/ClassLoader;
0 9 2 logSupplier Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;
MethodParameters:
Name Flags
classLoader
logSupplier
static com.netflix.hystrix.strategy.HystrixPlugins create(java.lang.ClassLoader, com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier);
descriptor: (Ljava/lang/ClassLoader;Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;)Lcom/netflix/hystrix/strategy/HystrixPlugins;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: new com.netflix.hystrix.strategy.HystrixPlugins
dup
aload 0
aload 1
invokespecial com.netflix.hystrix.strategy.HystrixPlugins.<init>:(Ljava/lang/ClassLoader;Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 classLoader Ljava/lang/ClassLoader;
0 1 1 logSupplier Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;
MethodParameters:
Name Flags
classLoader
logSupplier
static com.netflix.hystrix.strategy.HystrixPlugins create(java.lang.ClassLoader);
descriptor: (Ljava/lang/ClassLoader;)Lcom/netflix/hystrix/strategy/HystrixPlugins;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: new com.netflix.hystrix.strategy.HystrixPlugins
dup
aload 0
new com.netflix.hystrix.strategy.HystrixPlugins$1
dup
invokespecial com.netflix.hystrix.strategy.HystrixPlugins$1.<init>:()V
invokespecial com.netflix.hystrix.strategy.HystrixPlugins.<init>:(Ljava/lang/ClassLoader;Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 classLoader Ljava/lang/ClassLoader;
MethodParameters:
Name Flags
classLoader
static com.netflix.hystrix.strategy.HystrixPlugins create();
descriptor: ()Lcom/netflix/hystrix/strategy/HystrixPlugins;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/netflix/hystrix/strategy/HystrixPlugins;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
invokestatic com.netflix.hystrix.strategy.HystrixPlugins.create:(Ljava/lang/ClassLoader;)Lcom/netflix/hystrix/strategy/HystrixPlugins;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static com.netflix.hystrix.strategy.HystrixPlugins getInstance();
descriptor: ()Lcom/netflix/hystrix/strategy/HystrixPlugins;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.netflix.hystrix.strategy.HystrixPlugins$LazyHolder.INSTANCE:Lcom/netflix/hystrix/strategy/HystrixPlugins;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static void reset();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
getfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
1: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
getfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
2: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
getfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
3: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
getfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
4: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
getfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
5: invokestatic com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisherFactory.reset:()V
6: return
LocalVariableTable:
Start End Slot Name Signature
public com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier getEventNotifier();
descriptor: ()Lcom/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnonnull 6
1: aload 0
ldc Lcom/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementation:(Ljava/lang/Class;)Ljava/lang/Object;
astore 1
start local 1 2: aload 1
ifnonnull 5
3: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokestatic com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifierDefault.getInstance:()Lcom/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
4: goto 6
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
checkcast com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
2 6 1 impl Ljava/lang/Object;
public void registerEventNotifier(com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier);
descriptor: (Lcom/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.notifier:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "Another strategy was already registered."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
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/strategy/HystrixPlugins;
0 3 1 impl Lcom/netflix/hystrix/strategy/eventnotifier/HystrixEventNotifier;
MethodParameters:
Name Flags
impl
public com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy getConcurrencyStrategy();
descriptor: ()Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnonnull 6
1: aload 0
ldc Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementation:(Ljava/lang/Class;)Ljava/lang/Object;
astore 1
start local 1 2: aload 1
ifnonnull 5
3: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokestatic com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategyDefault.getInstance:()Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
4: goto 6
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
checkcast com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
2 6 1 impl Ljava/lang/Object;
public void registerConcurrencyStrategy(com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy);
descriptor: (Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.concurrencyStrategy:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "Another strategy was already registered."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
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/strategy/HystrixPlugins;
0 3 1 impl Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
MethodParameters:
Name Flags
impl
public com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher getMetricsPublisher();
descriptor: ()Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnonnull 6
1: aload 0
ldc Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementation:(Ljava/lang/Class;)Ljava/lang/Object;
astore 1
start local 1 2: aload 1
ifnonnull 5
3: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokestatic com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisherDefault.getInstance:()Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
4: goto 6
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
checkcast com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
2 6 1 impl Ljava/lang/Object;
public void registerMetricsPublisher(com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher);
descriptor: (Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.metricsPublisher:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "Another strategy was already registered."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
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/strategy/HystrixPlugins;
0 3 1 impl Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisher;
MethodParameters:
Name Flags
impl
public com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy getPropertiesStrategy();
descriptor: ()Lcom/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnonnull 6
1: aload 0
ldc Lcom/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementation:(Ljava/lang/Class;)Ljava/lang/Object;
astore 1
start local 1 2: aload 1
ifnonnull 5
3: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokestatic com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategyDefault.getInstance:()Lcom/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
4: goto 6
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
checkcast com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
2 6 1 impl Ljava/lang/Object;
public com.netflix.hystrix.strategy.properties.HystrixDynamicProperties getDynamicProperties();
descriptor: ()Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.dynamicProperties:Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
public void registerPropertiesStrategy(com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy);
descriptor: (Lcom/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.propertiesFactory:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "Another strategy was already registered."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
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/strategy/HystrixPlugins;
0 3 1 impl Lcom/netflix/hystrix/strategy/properties/HystrixPropertiesStrategy;
MethodParameters:
Name Flags
impl
public com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook getCommandExecutionHook();
descriptor: ()Lcom/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
ifnonnull 6
1: aload 0
ldc Lcom/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook;
invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementation:(Ljava/lang/Class;)Ljava/lang/Object;
astore 1
start local 1 2: aload 1
ifnonnull 5
3: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
invokestatic com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHookDefault.getInstance:()Lcom/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
4: goto 6
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
checkcast com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
pop
end local 1 6: StackMap locals:
StackMap stack:
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
2 6 1 impl Ljava/lang/Object;
public void registerCommandExecutionHook(com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook);
descriptor: (Lcom/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.commandExecutionHook:Ljava/util/concurrent/atomic/AtomicReference;
aconst_null
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifne 2
1: new java.lang.IllegalStateException
dup
ldc "Another strategy was already registered."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
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/strategy/HystrixPlugins;
0 3 1 impl Lcom/netflix/hystrix/strategy/executionhook/HystrixCommandExecutionHook;
MethodParameters:
Name Flags
impl
private <T> T getPluginImplementation(java.lang.Class<T>);
descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.dynamicProperties:Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementationViaProperties:(Ljava/lang/Class;Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;)Ljava/lang/Object;
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
areturn
2: StackMap locals: java.lang.Object
StackMap stack:
aload 1
aload 0
getfield com.netflix.hystrix.strategy.HystrixPlugins.classLoader:Ljava/lang/ClassLoader;
invokestatic com.netflix.hystrix.strategy.HystrixPlugins.findService:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/lang/Object;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/netflix/hystrix/strategy/HystrixPlugins;
0 3 1 pluginClass Ljava/lang/Class<TT;>;
1 3 2 p TT;
Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
MethodParameters:
Name Flags
pluginClass
private static <T> T getPluginImplementationViaProperties(java.lang.Class<T>, com.netflix.hystrix.strategy.properties.HystrixDynamicProperties);
descriptor: (Ljava/lang/Class;Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
astore 2
start local 2 1: new java.lang.StringBuilder
dup
ldc "hystrix.plugin."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ".implementation"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 2: aload 1
aload 3
aconst_null
invokeinterface com.netflix.hystrix.strategy.properties.HystrixDynamicProperties.getString:(Ljava/lang/String;Ljava/lang/String;)Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperty;
invokeinterface com.netflix.hystrix.strategy.properties.HystrixDynamicProperty.get:()Ljava/lang/Object;
checkcast java.lang.String
astore 4
start local 4 3: aload 4
ifnull 16
4: aload 4
invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
astore 5
start local 5 5: aload 5
aload 0
invokevirtual java.lang.Class.asSubclass:(Ljava/lang/Class;)Ljava/lang/Class;
astore 5
6: aload 5
invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
7: areturn
end local 5 8: StackMap locals: java.lang.Class com.netflix.hystrix.strategy.properties.HystrixDynamicProperties java.lang.String java.lang.String java.lang.String
StackMap stack: java.lang.ClassCastException
pop
9: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " implementation is not an instance of "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack: java.lang.ClassNotFoundException
astore 5
start local 5 11: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " implementation class not found: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 12: StackMap locals:
StackMap stack: java.lang.InstantiationException
astore 5
start local 5 13: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " implementation not able to be instantiated: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 14: StackMap locals:
StackMap stack: java.lang.IllegalAccessException
astore 5
start local 5 15: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " implementation not able to be accessed: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 16: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 pluginClass Ljava/lang/Class<TT;>;
0 17 1 dynamicProperties Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
1 17 2 classSimpleName Ljava/lang/String;
2 17 3 propertyName Ljava/lang/String;
3 17 4 implementingClass Ljava/lang/String;
5 8 5 cls Ljava/lang/Class<*>;
11 12 5 e Ljava/lang/ClassNotFoundException;
13 14 5 e Ljava/lang/InstantiationException;
15 16 5 e Ljava/lang/IllegalAccessException;
Exception table:
from to target type
4 7 8 Class java.lang.ClassCastException
4 7 10 Class java.lang.ClassNotFoundException
4 7 12 Class java.lang.InstantiationException
4 7 14 Class java.lang.IllegalAccessException
Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;)TT;
MethodParameters:
Name Flags
pluginClass
dynamicProperties
private static com.netflix.hystrix.strategy.properties.HystrixDynamicProperties resolveDynamicProperties(java.lang.ClassLoader, com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier);
descriptor: (Ljava/lang/ClassLoader;Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;)Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: ldc Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
1: invokestatic com.netflix.hystrix.strategy.properties.HystrixDynamicPropertiesSystemProperties.getInstance:()Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
2: invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getPluginImplementationViaProperties:(Ljava/lang/Class;Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;)Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.properties.HystrixDynamicProperties
astore 2
start local 2 3: aload 2
ifnull 9
4: aload 1
invokeinterface com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier.getLogger:()Lorg/slf4j/Logger;
5: ldc "Created HystrixDynamicProperties instance from System property named \"hystrix.plugin.HystrixDynamicProperties.implementation\". Using class: {}"
6: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
7: invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
8: aload 2
areturn
9: StackMap locals: com.netflix.hystrix.strategy.properties.HystrixDynamicProperties
StackMap stack:
ldc Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
aload 0
invokestatic com.netflix.hystrix.strategy.HystrixPlugins.findService:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/lang/Object;
checkcast com.netflix.hystrix.strategy.properties.HystrixDynamicProperties
astore 2
10: aload 2
ifnull 16
11: aload 1
invokeinterface com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier.getLogger:()Lorg/slf4j/Logger;
12: ldc "Created HystrixDynamicProperties instance by loading from ServiceLoader. Using class: {}"
13: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
14: invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
15: aload 2
areturn
16: StackMap locals:
StackMap stack:
invokestatic com.netflix.hystrix.strategy.HystrixArchaiusHelper.createArchaiusDynamicProperties:()Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
astore 2
17: aload 2
ifnull 22
18: aload 1
invokeinterface com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier.getLogger:()Lorg/slf4j/Logger;
ldc "Created HystrixDynamicProperties. Using class : {}"
19: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
20: invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
21: aload 2
areturn
22: StackMap locals:
StackMap stack:
invokestatic com.netflix.hystrix.strategy.properties.HystrixDynamicPropertiesSystemProperties.getInstance:()Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
astore 2
23: aload 1
invokeinterface com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier.getLogger:()Lorg/slf4j/Logger;
ldc "Using System Properties for HystrixDynamicProperties! Using class: {}"
24: aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
25: invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
26: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 classLoader Ljava/lang/ClassLoader;
0 27 1 logSupplier Lcom/netflix/hystrix/strategy/HystrixPlugins$LoggerSupplier;
3 27 2 hp Lcom/netflix/hystrix/strategy/properties/HystrixDynamicProperties;
MethodParameters:
Name Flags
classLoader
logSupplier
private static <T> T findService(java.lang.Class<T>, java.lang.ClassLoader);
descriptor: (Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
1: aload 1
2: invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
astore 2
start local 2 3: aload 2
invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
astore 4
goto 7
StackMap locals: java.lang.Class java.lang.ClassLoader java.util.ServiceLoader top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Object
astore 3
start local 3 5: aload 3
ifnull 7
6: aload 3
areturn
end local 3 7: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
8: aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 spi Ljava/lang/Class<TT;>;
0 9 1 classLoader Ljava/lang/ClassLoader;
3 9 2 sl Ljava/util/ServiceLoader<TT;>;
5 7 3 s TT;
Exceptions:
throws java.util.ServiceConfigurationError
Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/ClassLoader;)TT;
MethodParameters:
Name Flags
spi
classLoader
}
SourceFile: "HystrixPlugins.java"
NestMembers:
com.netflix.hystrix.strategy.HystrixPlugins$1 com.netflix.hystrix.strategy.HystrixPlugins$LazyHolder com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier
InnerClasses:
com.netflix.hystrix.strategy.HystrixPlugins$1
private LazyHolder = com.netflix.hystrix.strategy.HystrixPlugins$LazyHolder of com.netflix.hystrix.strategy.HystrixPlugins
abstract LoggerSupplier = com.netflix.hystrix.strategy.HystrixPlugins$LoggerSupplier of com.netflix.hystrix.strategy.HystrixPlugins