public class org.jvnet.hk.internal.ServiceHandleImpl extends java.lang.Object implements org.glassfish.hk.api.ServiceHandle
{
private final org.glassfish.hk.api.ActiveDescriptor root;
private final org.jvnet.hk.internal.ServiceLocatorImpl locator;
private final java.util.LinkedList injectees;
private final java.lang.Object lock;
private boolean serviceDestroyed;
private boolean serviceSet;
private java.lang.Object service;
private java.lang.Object serviceData;
private final java.util.LinkedList subHandles;
void <init>(org.jvnet.hk.internal.ServiceLocatorImpl, org.glassfish.hk.api.ActiveDescriptor, org.glassfish.hk.api.Injectee)
{
org.glassfish.hk.api.Injectee v;
org.glassfish.hk.api.ActiveDescriptor v;
org.jvnet.hk.internal.ServiceHandleImpl v;
org.jvnet.hk.internal.ServiceLocatorImpl v;
java.lang.Object v;
java.util.LinkedList v, v, v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v := @parameter: org.jvnet.hk.internal.ServiceLocatorImpl;
v := @parameter: org.glassfish.hk.api.ActiveDescriptor;
v := @parameter: org.glassfish.hk.api.Injectee;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList injectees> = v;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock> = v;
v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceDestroyed> = 0;
v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceSet> = 0;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList subHandles> = v;
v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root> = v;
v.<org.jvnet.hk.internal.ServiceHandleImpl: org.jvnet.hk.internal.ServiceLocatorImpl locator> = v;
if v == null goto label;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList injectees>;
virtualinvoke v.<java.util.LinkedList: boolean add(java.lang.Object)>(v);
label:
return;
}
public java.lang.Object getService()
{
java.lang.Object v;
org.jvnet.hk.internal.ServiceHandleImpl v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = virtualinvoke v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object getService(org.glassfish.hk.api.ServiceHandle)>(v);
return v;
}
private org.glassfish.hk.api.Injectee getLastInjectee()
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.Object v, v;
java.util.LinkedList v, v;
boolean v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList injectees>;
v = virtualinvoke v.<java.util.LinkedList: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList injectees>;
v = virtualinvoke v.<java.util.LinkedList: java.lang.Object getLast()>();
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
java.lang.Object getService(org.glassfish.hk.api.ServiceHandle)
{
java.lang.Throwable v;
java.lang.IllegalStateException v, v;
org.glassfish.hk.api.ActiveDescriptor v, v, v, v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.String v;
boolean v, v, v, v;
org.glassfish.hk.api.ServiceHandle v;
org.glassfish.hk.api.Injectee v;
java.lang.reflect.Type v;
org.jvnet.hk.internal.ServiceLocatorImpl v;
java.lang.Class v;
java.lang.Object v, v, v, v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v := @parameter: org.glassfish.hk.api.ServiceHandle;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = v instanceof org.jvnet.hk.internal.Closeable;
if v == 0 goto label;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = interfaceinvoke v.<org.jvnet.hk.internal.Closeable: boolean isClosed()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.glassfish.hk.api.ActiveDescriptor)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("This service has been unbound: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceDestroyed>;
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Service has been disposed");
throw v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceSet>;
if v == 0 goto label;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object service>;
exitmonitor v;
label:
return v;
label:
v = specialinvoke v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.Injectee getLastInjectee()>();
if v != null goto label;
v = null;
goto label;
label:
v = interfaceinvoke v.<org.glassfish.hk.api.Injectee: java.lang.reflect.Type getRequiredType()>();
v = staticinvoke <org.glassfish.hk.utilities.reflection.ReflectionHelper: java.lang.Class getRawClass(java.lang.reflect.Type)>(v);
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.jvnet.hk.internal.ServiceLocatorImpl locator>;
v = staticinvoke <org.jvnet.hk.internal.Utilities: java.lang.Object createService(org.glassfish.hk.api.ActiveDescriptor,org.glassfish.hk.api.Injectee,org.jvnet.hk.internal.ServiceLocatorImpl,org.glassfish.hk.api.ServiceHandle,java.lang.Class)>(v, v, v, v, v);
v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object service> = v;
v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceSet> = 1;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object service>;
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public org.glassfish.hk.api.ActiveDescriptor getActiveDescriptor()
{
org.glassfish.hk.api.ActiveDescriptor v;
org.jvnet.hk.internal.ServiceHandleImpl v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
return v;
}
public boolean isActive()
{
java.lang.IllegalStateException v;
org.glassfish.hk.api.ActiveDescriptor v, v;
org.jvnet.hk.internal.ServiceHandleImpl v;
org.jvnet.hk.internal.ServiceLocatorImpl v;
java.lang.Class v;
boolean v, v, v;
org.glassfish.hk.api.Context v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceDestroyed>;
if v == 0 goto label;
return 0;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceSet>;
if v == 0 goto label;
return 1;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.jvnet.hk.internal.ServiceLocatorImpl locator>;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = interfaceinvoke v.<org.glassfish.hk.api.ActiveDescriptor: java.lang.Class getScopeAnnotation()>();
v = virtualinvoke v.<org.jvnet.hk.internal.ServiceLocatorImpl: org.glassfish.hk.api.Context resolveContext(java.lang.Class)>(v);
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = interfaceinvoke v.<org.glassfish.hk.api.Context: boolean containsKey(org.glassfish.hk.api.ActiveDescriptor)>(v);
label:
return v;
label:
v := @caughtexception;
return 0;
catch java.lang.IllegalStateException from label to label with label;
}
public void close()
{
java.lang.Throwable v, v;
java.util.ArrayList v;
org.glassfish.hk.api.ActiveDescriptor v, v, v, v, v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.util.LinkedList v, v;
boolean v, v, v, v, v, v;
java.util.Iterator v;
org.jvnet.hk.internal.ServiceLocatorImpl v;
java.lang.Class v, v;
java.lang.Object v, v, v;
org.glassfish.hk.api.Context v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = interfaceinvoke v.<org.glassfish.hk.api.ActiveDescriptor: boolean isReified()>();
if v != 0 goto label;
return;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = virtualinvoke v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean isActive()>();
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceDestroyed>;
if v == 0 goto label;
exitmonitor v;
label:
return;
label:
v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceDestroyed> = 1;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: boolean serviceSet>;
v = new java.util.ArrayList;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList subHandles>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList subHandles>;
virtualinvoke v.<java.util.LinkedList: void clear()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = interfaceinvoke v.<org.glassfish.hk.api.ActiveDescriptor: java.lang.Class getScopeAnnotation()>();
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(class "Lorg/glassfish/hk2/api/PerLookup;");
if v == 0 goto label;
if v == 0 goto label;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object service>;
interfaceinvoke v.<org.glassfish.hk.api.ActiveDescriptor: void dispose(java.lang.Object)>(v);
goto label;
label:
if v == 0 goto label;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.jvnet.hk.internal.ServiceLocatorImpl locator>;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = interfaceinvoke v.<org.glassfish.hk.api.ActiveDescriptor: java.lang.Class getScopeAnnotation()>();
v = virtualinvoke v.<org.jvnet.hk.internal.ServiceLocatorImpl: org.glassfish.hk.api.Context resolveContext(java.lang.Class)>(v);
label:
goto label;
label:
v := @caughtexception;
return;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
interfaceinvoke v.<org.glassfish.hk.api.Context: void destroyOne(org.glassfish.hk.api.ActiveDescriptor)>(v);
label:
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<org.jvnet.hk.internal.ServiceHandleImpl: void destroy()>();
goto label;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void setServiceData(java.lang.Object)
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.Object v, v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v := @parameter: java.lang.Object;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object serviceData> = v;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object getServiceData()
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.Object v, v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object serviceData>;
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public java.util.List getSubHandles()
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.Object v;
java.util.LinkedList v;
java.util.ArrayList v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = new java.util.ArrayList;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList subHandles>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
public void pushInjectee(org.glassfish.hk.api.Injectee)
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.Object v;
java.util.LinkedList v;
org.glassfish.hk.api.Injectee v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v := @parameter: org.glassfish.hk.api.Injectee;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList injectees>;
virtualinvoke v.<java.util.LinkedList: boolean add(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void popInjectee()
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v;
java.lang.Object v;
java.util.LinkedList v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList injectees>;
virtualinvoke v.<java.util.LinkedList: java.lang.Object removeLast()>();
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public void addSubHandle(org.jvnet.hk.internal.ServiceHandleImpl)
{
java.lang.Throwable v;
org.jvnet.hk.internal.ServiceHandleImpl v, v;
java.lang.Object v;
java.util.LinkedList v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v := @parameter: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.lang.Object lock>;
entermonitor v;
label:
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: java.util.LinkedList subHandles>;
virtualinvoke v.<java.util.LinkedList: boolean add(java.lang.Object)>(v);
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public org.glassfish.hk.api.Injectee getOriginalRequest()
{
org.jvnet.hk.internal.ServiceHandleImpl v;
org.glassfish.hk.api.Injectee v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = specialinvoke v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.Injectee getLastInjectee()>();
return v;
}
public java.lang.String toString()
{
org.glassfish.hk.api.ActiveDescriptor v;
org.jvnet.hk.internal.ServiceHandleImpl v;
int v;
java.lang.String v;
v := @this: org.jvnet.hk.internal.ServiceHandleImpl;
v = v.<org.jvnet.hk.internal.ServiceHandleImpl: org.glassfish.hk.api.ActiveDescriptor root>;
v = staticinvoke <java.lang.System: int identityHashCode(java.lang.Object)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.glassfish.hk.api.ActiveDescriptor,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("ServiceHandle(\u,\u)");
return v;
}
}