public abstract class com.netflix.config.DerivedStringProperty<D> implements com.netflix.config.Property<D>
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.netflix.config.DerivedStringProperty
super_class: java.lang.Object
{
private static final org.slf4j.Logger log;
descriptor: Lorg/slf4j/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final com.netflix.config.DynamicStringProperty delegate;
descriptor: Lcom/netflix/config/DynamicStringProperty;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.List<java.lang.Runnable> callbackList;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/Runnable;>;
private final java.util.concurrent.atomic.AtomicReference<D> derived;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<TD;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/netflix/config/DerivedStringProperty;
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putstatic com.netflix.config.DerivedStringProperty.log:Lorg/slf4j/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokestatic com.google.common.collect.Lists.newArrayList:()Ljava/util/ArrayList;
putfield com.netflix.config.DerivedStringProperty.callbackList:Ljava/util/List;
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
aconst_null
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield com.netflix.config.DerivedStringProperty.derived:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
invokestatic com.netflix.config.DynamicPropertyFactory.getInstance:()Lcom/netflix/config/DynamicPropertyFactory;
aload 1
aload 2
invokevirtual com.netflix.config.DynamicPropertyFactory.getStringProperty:(Ljava/lang/String;Ljava/lang/String;)Lcom/netflix/config/DynamicStringProperty;
putfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
4: aload 0
invokevirtual com.netflix.config.DerivedStringProperty.deriveAndSet:()V
5: new com.netflix.config.DerivedStringProperty$1
dup
aload 0
invokespecial com.netflix.config.DerivedStringProperty$1.<init>:(Lcom/netflix/config/DerivedStringProperty;)V
astore 3
start local 3 6: aload 0
getfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
aload 3
invokevirtual com.netflix.config.DynamicStringProperty.addCallback:(Ljava/lang/Runnable;)V
7: aload 0
getfield com.netflix.config.DerivedStringProperty.callbackList:Ljava/util/List;
aload 3
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
0 9 1 name Ljava/lang/String;
0 9 2 defaultValue Ljava/lang/String;
6 9 3 callback Ljava/lang/Runnable;
MethodParameters:
Name Flags
name
defaultValue
public D get();
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.config.DerivedStringProperty.derived:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
Signature: ()TD;
public D getValue();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.netflix.config.DerivedStringProperty.get:()Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
Signature: ()TD;
public D getDefaultValue();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
invokevirtual com.netflix.config.DynamicStringProperty.getDefaultValue:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual com.netflix.config.DerivedStringProperty.derive:(Ljava/lang/String;)Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
Signature: ()TD;
public java.lang.String getName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
invokevirtual com.netflix.config.DynamicStringProperty.getName:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
public long getChangedTimestamp();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
invokevirtual com.netflix.config.DynamicStringProperty.getChangedTimestamp:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
public void addCallback(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)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.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
aload 1
invokevirtual com.netflix.config.DynamicStringProperty.addCallback:(Ljava/lang/Runnable;)V
1: aload 0
getfield com.netflix.config.DerivedStringProperty.callbackList:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
0 3 1 callback Ljava/lang/Runnable;
MethodParameters:
Name Flags
callback
public void removeAllCallbacks();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield com.netflix.config.DerivedStringProperty.callbackList:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 2
goto 3
StackMap locals: com.netflix.config.DerivedStringProperty top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 1
start local 1 2: aload 0
getfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
getfield com.netflix.config.DynamicStringProperty.prop:Lcom/netflix/config/DynamicProperty;
aload 1
invokevirtual com.netflix.config.DynamicProperty.removeCallback:(Ljava/lang/Runnable;)Z
pop
end local 1 3: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
2 3 1 callback Ljava/lang/Runnable;
protected abstract D derive(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (Ljava/lang/String;)TD;
MethodParameters:
Name Flags
value
protected void propertyChanged();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
void propertyChangedInternal();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.netflix.config.DerivedStringProperty.deriveAndSet:()V
1: aload 0
invokevirtual com.netflix.config.DerivedStringProperty.propertyChanged:()V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
private void deriveAndSet();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.netflix.config.DerivedStringProperty.derived:Ljava/util/concurrent/atomic/AtomicReference;
aload 0
aload 0
getfield com.netflix.config.DerivedStringProperty.delegate:Lcom/netflix/config/DynamicStringProperty;
invokevirtual com.netflix.config.DynamicStringProperty.get:()Ljava/lang/String;
invokevirtual com.netflix.config.DerivedStringProperty.derive:(Ljava/lang/String;)Ljava/lang/Object;
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
1: goto 4
StackMap locals:
StackMap stack: java.lang.Exception
2: astore 1
start local 1 3: getstatic com.netflix.config.DerivedStringProperty.log:Lorg/slf4j/Logger;
ldc "error when deriving initial value"
aload 1
invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 1 4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/config/DerivedStringProperty<TD;>;
3 4 1 e Ljava/lang/Exception;
Exception table:
from to target type
0 1 2 Class java.lang.Exception
}
Signature: <D:Ljava/lang/Object;>Ljava/lang/Object;Lcom/netflix/config/Property<TD;>;
SourceFile: "DerivedStringProperty.java"
NestMembers:
com.netflix.config.DerivedStringProperty$1
InnerClasses:
com.netflix.config.DerivedStringProperty$1