public class com.sun.jmx.remote.internal.ServerNotifForwarder
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.sun.jmx.remote.internal.ServerNotifForwarder
super_class: java.lang.Object
{
private final com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter bufferFilter;
descriptor: Lcom/sun/jmx/remote/internal/ServerNotifForwarder$NotifForwarderBufferFilter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private javax.management.MBeanServer mbeanServer;
descriptor: Ljavax/management/MBeanServer;
flags: (0x0002) ACC_PRIVATE
private final java.lang.String connectionId;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long connectionTimeout;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static int listenerCounter;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final int[] listenerCounterLock;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private com.sun.jmx.remote.internal.NotificationBuffer notifBuffer;
descriptor: Lcom/sun/jmx/remote/internal/NotificationBuffer;
flags: (0x0002) ACC_PRIVATE
private java.util.Map<javax.management.ObjectName, java.util.Set<com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter>> listenerMap;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Ljavax/management/ObjectName;Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;>;
private boolean terminated;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final int[] terminationLock;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static final java.lang.String broadcasterClass;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private final boolean checkNotificationEmission;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.sun.jmx.remote.security.NotificationAccessController notificationAccessController;
descriptor: Lcom/sun/jmx/remote/security/NotificationAccessController;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final com.sun.jmx.remote.util.ClassLogger logger;
descriptor: Lcom/sun/jmx/remote/util/ClassLogger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: iconst_0
putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
1: iconst_0
newarray 10
putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounterLock:[I
2: ldc Ljavax/management/NotificationBroadcaster;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
3: putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.broadcasterClass:Ljava/lang/String;
4: new com.sun.jmx.remote.util.ClassLogger
dup
ldc "javax.management.remote.misc"
ldc "ServerNotifForwarder"
invokespecial com.sun.jmx.remote.util.ClassLogger.<init>:(Ljava/lang/String;Ljava/lang/String;)V
5: putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
6: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(javax.management.MBeanServer, java.util.Map, com.sun.jmx.remote.internal.NotificationBuffer, java.lang.String);
descriptor: (Ljavax/management/MBeanServer;Ljava/util/Map;Lcom/sun/jmx/remote/internal/NotificationBuffer;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter
dup
aload 0
invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter.<init>:(Lcom/sun/jmx/remote/internal/ServerNotifForwarder;)V
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.bufferFilter:Lcom/sun/jmx/remote/internal/ServerNotifForwarder$NotifForwarderBufferFilter;
2: aload 0
3: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
4: aload 0
iconst_0
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
5: aload 0
iconst_0
newarray 10
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
6: aload 0
aload 1
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
7: aload 0
aload 3
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.notifBuffer:Lcom/sun/jmx/remote/internal/NotificationBuffer;
8: aload 0
aload 4
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
9: aload 0
aload 2
invokestatic com.sun.jmx.remote.util.EnvHelp.getServerConnectionTimeout:(Ljava/util/Map;)J
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionTimeout:J
10: aload 0
11: aload 2
12: ldc "jmx.remote.x.check.notification.emission"
13: invokestatic com.sun.jmx.remote.util.EnvHelp.computeBooleanFromString:(Ljava/util/Map;Ljava/lang/String;)Z
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.checkNotificationEmission:Z
14: aload 0
15: aload 2
ldc "com.sun.jmx.remote.notification.access.controller"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.jmx.remote.security.NotificationAccessController
16: putfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
17: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 18 1 mbeanServer Ljavax/management/MBeanServer;
0 18 2 env Ljava/util/Map;
0 18 3 notifBuffer Lcom/sun/jmx/remote/internal/NotificationBuffer;
0 18 4 connectionId Ljava/lang/String;
MethodParameters:
Name Flags
mbeanServer
env
notifBuffer
connectionId
public java.lang.Integer addNotificationListener(javax.management.ObjectName, javax.management.NotificationFilter);
descriptor: (Ljavax/management/ObjectName;Ljavax/management/NotificationFilter;)Ljava/lang/Integer;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 4
1: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "addNotificationListener"
2: new java.lang.StringBuilder
dup
ldc "Add a listener at "
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;
3: invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
5: aload 0
aload 1
ldc "addNotificationListener"
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/ObjectName;Ljava/lang/String;)V
6: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
ifnull 12
7: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
8: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
9: aload 1
10: invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
11: invokeinterface com.sun.jmx.remote.security.NotificationAccessController.addNotificationListener:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/security/auth/Subject;)V
12: StackMap locals:
StackMap stack:
new com.sun.jmx.remote.internal.ServerNotifForwarder$1
dup
aload 0
aload 1
invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$1.<init>:(Lcom/sun/jmx/remote/internal/ServerNotifForwarder;Ljavax/management/ObjectName;)V
13: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
14: istore 3
start local 3 15: iload 3
ifne 23
16: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "The specified MBean ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
17: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "] is not a "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: ldc "NotificationBroadcaster "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: ldc "object."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 3 21: StackMap locals:
StackMap stack: java.security.PrivilegedActionException
astore 3
start local 3 22: aload 3
invokestatic com.sun.jmx.remote.internal.ServerNotifForwarder.extractException:(Ljava/lang/Exception;)Ljava/lang/Exception;
checkcast javax.management.InstanceNotFoundException
athrow
end local 3 23: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.getListenerID:()Ljava/lang/Integer;
astore 3
start local 3 24: aload 1
astore 4
start local 4 25: aload 1
invokevirtual javax.management.ObjectName.getDomain:()Ljava/lang/String;
ifnull 26
aload 1
invokevirtual javax.management.ObjectName.getDomain:()Ljava/lang/String;
ldc ""
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 34
26: StackMap locals: java.lang.Integer javax.management.ObjectName
StackMap stack:
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
invokeinterface javax.management.MBeanServer.getDefaultDomain:()Ljava/lang/String;
27: aload 1
invokevirtual javax.management.ObjectName.getKeyPropertyList:()Ljava/util/Hashtable;
28: invokestatic javax.management.ObjectName.getInstance:(Ljava/lang/String;Ljava/util/Hashtable;)Ljavax/management/ObjectName;
astore 4
29: goto 34
StackMap locals:
StackMap stack: javax.management.MalformedObjectNameException
30: astore 5
start local 5 31: new java.io.IOException
dup
aload 5
invokevirtual javax.management.MalformedObjectNameException.getMessage:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
astore 6
start local 6 32: aload 6
aload 5
invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
33: aload 6
athrow
end local 6 end local 5 34: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
dup
astore 5
monitorenter
35: new com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
dup
aload 3
aload 2
invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter.<init>:(Ljava/lang/Integer;Ljavax/management/NotificationFilter;)V
astore 6
start local 6 36: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
aload 4
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Set
astore 7
start local 7 37: aload 7
ifnonnull 39
38: aload 6
invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
astore 7
goto 42
39: StackMap locals: java.util.Map com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter java.util.Set
StackMap stack:
aload 7
invokeinterface java.util.Set.size:()I
iconst_1
if_icmpne 41
40: new java.util.HashSet
dup
aload 7
invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
astore 7
41: StackMap locals:
StackMap stack:
aload 7
aload 6
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
42: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
aload 4
aload 7
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 7 end local 6 43: aload 5
monitorexit
44: goto 47
StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder javax.management.ObjectName javax.management.NotificationFilter java.lang.Integer javax.management.ObjectName java.util.Map
StackMap stack: java.lang.Throwable
45: aload 5
monitorexit
46: athrow
47: StackMap locals:
StackMap stack:
aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 48 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 48 1 name Ljavax/management/ObjectName;
0 48 2 filter Ljavax/management/NotificationFilter;
15 21 3 instanceOf Z
22 23 3 e Ljava/security/PrivilegedActionException;
24 48 3 id Ljava/lang/Integer;
25 48 4 nn Ljavax/management/ObjectName;
31 34 5 mfoe Ljavax/management/MalformedObjectNameException;
32 34 6 ioe Ljava/io/IOException;
36 43 6 idaf Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;
37 43 7 set Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
Exception table:
from to target type
12 21 21 Class java.security.PrivilegedActionException
26 29 30 Class javax.management.MalformedObjectNameException
35 44 45 any
45 46 45 any
Exceptions:
throws javax.management.InstanceNotFoundException, java.io.IOException
MethodParameters:
Name Flags
name final
filter final
public void removeNotificationListener(javax.management.ObjectName, java.lang.Integer[]);
descriptor: (Ljavax/management/ObjectName;[Ljava/lang/Integer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 4
1: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "removeNotificationListener"
2: new java.lang.StringBuilder
dup
ldc "Remove some listeners from "
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;
3: invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
5: aload 0
aload 1
ldc "removeNotificationListener"
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/ObjectName;Ljava/lang/String;)V
6: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
ifnull 12
7: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
8: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
9: aload 1
10: invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
11: invokeinterface com.sun.jmx.remote.security.NotificationAccessController.removeNotificationListener:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/security/auth/Subject;)V
12: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 13: iconst_0
istore 4
start local 4 14: goto 21
15: StackMap locals: java.lang.Exception int
StackMap stack:
aload 0
aload 1
aload 2
iload 4
aaload
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.removeNotificationListener:(Ljavax/management/ObjectName;Ljava/lang/Integer;)V
16: goto 20
StackMap locals:
StackMap stack: java.lang.Exception
17: astore 5
start local 5 18: aload 3
ifnull 20
19: aload 5
astore 3
end local 5 20: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
21: iload 4
aload 2
arraylength
if_icmplt 15
end local 4 22: aload 3
ifnull 24
23: aload 3
athrow
24: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 25 1 name Ljavax/management/ObjectName;
0 25 2 listenerIDs [Ljava/lang/Integer;
13 25 3 re Ljava/lang/Exception;
14 22 4 i I
18 20 5 e Ljava/lang/Exception;
Exception table:
from to target type
15 16 17 Class java.lang.Exception
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
name
listenerIDs
public void removeNotificationListener(javax.management.ObjectName, java.lang.Integer);
descriptor: (Ljavax/management/ObjectName;Ljava/lang/Integer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 4
1: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "removeNotificationListener"
2: new java.lang.StringBuilder
dup
ldc "Remove the listener "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " from "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkState:()V
5: aload 1
ifnull 10
aload 1
invokevirtual javax.management.ObjectName.isPattern:()Z
ifne 10
6: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
aload 1
invokeinterface javax.management.MBeanServer.isRegistered:(Ljavax/management/ObjectName;)Z
ifne 10
7: new javax.management.InstanceNotFoundException
dup
new java.lang.StringBuilder
dup
ldc "The MBean "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
8: ldc " is not registered."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
9: invokespecial javax.management.InstanceNotFoundException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
dup
astore 3
monitorenter
11: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.Set
astore 4
start local 4 12: new com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
dup
aload 2
aconst_null
invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter.<init>:(Ljava/lang/Integer;Ljavax/management/NotificationFilter;)V
astore 5
start local 5 13: aload 4
ifnull 14
aload 4
aload 5
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 15
14: StackMap locals: java.util.Map java.util.Set com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter
StackMap stack:
new javax.management.ListenerNotFoundException
dup
ldc "Listener not found"
invokespecial javax.management.ListenerNotFoundException.<init>:(Ljava/lang/String;)V
athrow
15: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Set.size:()I
iconst_1
if_icmpne 17
16: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
goto 18
17: StackMap locals:
StackMap stack:
aload 4
aload 5
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
end local 5 end local 4 18: StackMap locals:
StackMap stack:
aload 3
monitorexit
19: goto 22
StackMap locals:
StackMap stack: java.lang.Throwable
20: aload 3
monitorexit
21: athrow
22: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 23 1 name Ljavax/management/ObjectName;
0 23 2 listenerID Ljava/lang/Integer;
12 18 4 set Ljava/util/Set<Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;>;
13 18 5 idaf Lcom/sun/jmx/remote/internal/ServerNotifForwarder$IdAndFilter;
Exception table:
from to target type
11 19 20 any
20 21 20 any
Exceptions:
throws javax.management.InstanceNotFoundException, javax.management.ListenerNotFoundException, java.io.IOException
MethodParameters:
Name Flags
name
listenerID
public javax.management.remote.NotificationResult fetchNotifs(long, long, int);
descriptor: (JJI)Ljavax/management/remote/NotificationResult;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=9, args_size=4
start local 0 start local 1 start local 3 start local 5 0: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 6
1: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "fetchNotifs"
new java.lang.StringBuilder
dup
ldc "Fetching notifications, the startSequenceNumber is "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: lload 1
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
3: ldc ", the timeout is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 3
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
4: ldc ", the maxNotifications is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
6: StackMap locals:
StackMap stack:
aconst_null
astore 6
start local 6 7: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionTimeout:J
lload 3
invokestatic java.lang.Math.min:(JJ)J
lstore 7
start local 7 8: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notifBuffer:Lcom/sun/jmx/remote/internal/NotificationBuffer;
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.bufferFilter:Lcom/sun/jmx/remote/internal/ServerNotifForwarder$NotifForwarderBufferFilter;
9: lload 1
10: lload 7
iload 5
11: invokeinterface com.sun.jmx.remote.internal.NotificationBuffer.fetchNotifications:(Lcom/sun/jmx/remote/internal/NotificationBufferFilter;JJI)Ljavax/management/remote/NotificationResult;
astore 6
12: goto 15
StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder long long int javax.management.remote.NotificationResult long
StackMap stack: java.lang.InterruptedException
13: pop
14: new javax.management.remote.NotificationResult
dup
lconst_0
lconst_0
iconst_0
anewarray javax.management.remote.TargetedNotification
invokespecial javax.management.remote.NotificationResult.<init>:(JJ[Ljavax/management/remote/TargetedNotification;)V
astore 6
15: StackMap locals:
StackMap stack:
getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 17
16: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "fetchNotifs"
new java.lang.StringBuilder
dup
ldc "Forwarding the notifs: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
17: StackMap locals:
StackMap stack:
aload 6
areturn
end local 7 end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 18 1 startSequenceNumber J
0 18 3 timeout J
0 18 5 maxNotifications I
7 18 6 nr Ljavax/management/remote/NotificationResult;
8 18 7 t J
Exception table:
from to target type
8 12 13 Class java.lang.InterruptedException
MethodParameters:
Name Flags
startSequenceNumber
timeout
maxNotifications
public void terminate();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 2
1: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "terminate"
ldc "Be called."
invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
dup
astore 1
monitorenter
3: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
ifeq 6
4: aload 1
monitorexit
5: return
6: StackMap locals: int[]
StackMap stack:
aload 0
iconst_1
putfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
7: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
dup
astore 2
monitorenter
8: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.listenerMap:Ljava/util/Map;
invokeinterface java.util.Map.clear:()V
9: aload 2
monitorexit
10: goto 13
StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder int[] java.util.Map
StackMap stack: java.lang.Throwable
11: aload 2
monitorexit
12: athrow
13: StackMap locals:
StackMap stack:
aload 1
monitorexit
14: goto 17
StackMap locals:
StackMap stack: java.lang.Throwable
15: aload 1
monitorexit
16: athrow
17: StackMap locals:
StackMap stack:
getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.traceOn:()Z
ifeq 19
18: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "terminate"
ldc "Terminated."
invokevirtual com.sun.jmx.remote.util.ClassLogger.trace:(Ljava/lang/String;Ljava/lang/String;)V
19: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
Exception table:
from to target type
8 10 11 any
11 12 11 any
3 5 15 any
6 14 15 any
15 16 15 any
private void checkState();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminationLock:[I
dup
astore 1
monitorenter
1: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.terminated:Z
ifeq 3
2: new java.io.IOException
dup
ldc "The connection has been terminated."
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: int[]
StackMap stack:
aload 1
monitorexit
4: goto 7
StackMap locals:
StackMap stack: java.lang.Throwable
5: aload 1
monitorexit
6: athrow
7: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
Exception table:
from to target type
1 4 5 any
5 6 5 any
Exceptions:
throws java.io.IOException
private java.lang.Integer getListenerID();
descriptor: ()Ljava/lang/Integer;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=1
start local 0 0: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounterLock:[I
dup
astore 1
monitorenter
1: new java.lang.Integer
dup
getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
dup
iconst_1
iadd
putstatic com.sun.jmx.remote.internal.ServerNotifForwarder.listenerCounter:I
invokespecial java.lang.Integer.<init>:(I)V
aload 1
monitorexit
2: areturn
3: StackMap locals: com.sun.jmx.remote.internal.ServerNotifForwarder int[]
StackMap stack: java.lang.Throwable
aload 1
monitorexit
4: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
Exception table:
from to target type
1 2 3 any
3 4 3 any
public final void checkMBeanPermission(javax.management.ObjectName, java.lang.String);
descriptor: (Ljavax/management/ObjectName;Ljava/lang/String;)V
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.mbeanServer:Ljavax/management/MBeanServer;
aload 1
aload 2
invokestatic com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/MBeanServer;Ljavax/management/ObjectName;Ljava/lang/String;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 2 1 name Ljavax/management/ObjectName;
0 2 2 actions Ljava/lang/String;
Exceptions:
throws javax.management.InstanceNotFoundException, java.lang.SecurityException
MethodParameters:
Name Flags
name final
actions final
static void checkMBeanPermission(javax.management.MBeanServer, javax.management.ObjectName, java.lang.String);
descriptor: (Ljavax/management/MBeanServer;Ljavax/management/ObjectName;Ljava/lang/String;)V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=8, args_size=3
start local 0 start local 1 start local 2 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 3
start local 3 1: aload 3
ifnull 16
2: invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
astore 4
start local 4 3: aconst_null
astore 5
start local 5 4: new com.sun.jmx.remote.internal.ServerNotifForwarder$2
dup
aload 0
aload 1
invokespecial com.sun.jmx.remote.internal.ServerNotifForwarder$2.<init>:(Ljavax/management/MBeanServer;Ljavax/management/ObjectName;)V
5: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast javax.management.ObjectInstance
astore 5
6: goto 9
StackMap locals: javax.management.MBeanServer javax.management.ObjectName java.lang.String java.lang.SecurityManager java.security.AccessControlContext javax.management.ObjectInstance
StackMap stack: java.security.PrivilegedActionException
7: astore 6
start local 6 8: aload 6
invokestatic com.sun.jmx.remote.internal.ServerNotifForwarder.extractException:(Ljava/lang/Exception;)Ljava/lang/Exception;
checkcast javax.management.InstanceNotFoundException
athrow
end local 6 9: StackMap locals:
StackMap stack:
aload 5
invokevirtual javax.management.ObjectInstance.getClassName:()Ljava/lang/String;
astore 6
start local 6 10: new javax.management.MBeanPermission
dup
aload 6
11: aconst_null
12: aload 1
13: aload 2
14: invokespecial javax.management.MBeanPermission.<init>:(Ljava/lang/String;Ljava/lang/String;Ljavax/management/ObjectName;Ljava/lang/String;)V
astore 7
start local 7 15: aload 3
aload 7
aload 4
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;Ljava/lang/Object;)V
end local 7 end local 6 end local 5 end local 4 16: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 mbs Ljavax/management/MBeanServer;
0 17 1 name Ljavax/management/ObjectName;
0 17 2 actions Ljava/lang/String;
1 17 3 sm Ljava/lang/SecurityManager;
3 16 4 acc Ljava/security/AccessControlContext;
4 16 5 oi Ljavax/management/ObjectInstance;
8 9 6 e Ljava/security/PrivilegedActionException;
10 16 6 classname Ljava/lang/String;
15 16 7 perm Ljavax/management/MBeanPermission;
Exception table:
from to target type
4 6 7 Class java.security.PrivilegedActionException
Exceptions:
throws javax.management.InstanceNotFoundException, java.lang.SecurityException
MethodParameters:
Name Flags
mbs final
name final
actions final
private boolean allowNotificationEmission(javax.management.ObjectName, javax.management.remote.TargetedNotification);
descriptor: (Ljavax/management/ObjectName;Ljavax/management/remote/TargetedNotification;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.checkNotificationEmission:Z
ifeq 2
1: aload 0
aload 1
ldc "addNotificationListener"
invokevirtual com.sun.jmx.remote.internal.ServerNotifForwarder.checkMBeanPermission:(Ljavax/management/ObjectName;Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
ifnull 9
3: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.notificationAccessController:Lcom/sun/jmx/remote/security/NotificationAccessController;
4: aload 0
getfield com.sun.jmx.remote.internal.ServerNotifForwarder.connectionId:Ljava/lang/String;
5: aload 1
6: aload 2
invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
7: invokestatic java.security.AccessController.getContext:()Ljava/security/AccessControlContext;
invokestatic javax.security.auth.Subject.getSubject:(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;
8: invokeinterface com.sun.jmx.remote.security.NotificationAccessController.fetchNotification:(Ljava/lang/String;Ljavax/management/ObjectName;Ljavax/management/Notification;Ljavax/security/auth/Subject;)V
9: StackMap locals:
StackMap stack:
iconst_1
ireturn
10: StackMap locals:
StackMap stack: java.lang.SecurityException
pop
11: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.debugOn:()Z
ifeq 16
12: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "fetchNotifs"
new java.lang.StringBuilder
dup
ldc "Notification "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
13: aload 2
invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " not forwarded: the "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
14: ldc "caller didn't have the required access rights"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/String;)V
16: StackMap locals:
StackMap stack:
iconst_0
ireturn
17: StackMap locals:
StackMap stack: java.lang.Exception
astore 3
start local 3 18: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
invokevirtual com.sun.jmx.remote.util.ClassLogger.debugOn:()Z
ifeq 23
19: getstatic com.sun.jmx.remote.internal.ServerNotifForwarder.logger:Lcom/sun/jmx/remote/util/ClassLogger;
ldc "fetchNotifs"
new java.lang.StringBuilder
dup
ldc "Notification "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
20: aload 2
invokevirtual javax.management.remote.TargetedNotification.getNotification:()Ljavax/management/Notification;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " not forwarded: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: ldc "got an unexpected exception: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
22: invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/String;)V
23: StackMap locals: java.lang.Exception
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lcom/sun/jmx/remote/internal/ServerNotifForwarder;
0 24 1 name Ljavax/management/ObjectName;
0 24 2 tn Ljavax/management/remote/TargetedNotification;
18 24 3 e Ljava/lang/Exception;
Exception table:
from to target type
0 9 10 Class java.lang.SecurityException
0 9 17 Class java.lang.Exception
MethodParameters:
Name Flags
name
tn
private static java.lang.Exception (java.lang.Exception);
descriptor: (Ljava/lang/Exception;)Ljava/lang/Exception;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: goto 2
1: StackMap locals:
StackMap stack:
aload 0
checkcast java.security.PrivilegedActionException
invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
astore 0
2: StackMap locals:
StackMap stack:
aload 0
instanceof java.security.PrivilegedActionException
ifne 1
3: aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 e Ljava/lang/Exception;
MethodParameters:
Name Flags
e
}
SourceFile: "ServerNotifForwarder.java"
NestMembers:
com.sun.jmx.remote.internal.ServerNotifForwarder$1 com.sun.jmx.remote.internal.ServerNotifForwarder$2 com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter
InnerClasses:
com.sun.jmx.remote.internal.ServerNotifForwarder$1
com.sun.jmx.remote.internal.ServerNotifForwarder$2
private IdAndFilter = com.sun.jmx.remote.internal.ServerNotifForwarder$IdAndFilter of com.sun.jmx.remote.internal.ServerNotifForwarder
final NotifForwarderBufferFilter = com.sun.jmx.remote.internal.ServerNotifForwarder$NotifForwarderBufferFilter of com.sun.jmx.remote.internal.ServerNotifForwarder