public class org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor extends java.lang.Object implements org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor, org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor, org.springframework.core.PriorityOrdered, java.io.Serializable
{
protected transient org.apache.commons.logging.Log logger;
private java.lang.Class initAnnotationType;
private java.lang.Class destroyAnnotationType;
private int order;
private final transient java.util.Map lifecycleMetadataCache;
public void <init>()
{
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.util.concurrent.ConcurrentHashMap v;
java.lang.Class v;
org.apache.commons.logging.Log v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.commons.logging.LogFactory: org.apache.commons.logging.Log getLog(java.lang.Class)>(v);
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger> = v;
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: int order> = 2147483647;
v = new java.util.concurrent.ConcurrentHashMap;
specialinvoke v.<java.util.concurrent.ConcurrentHashMap: void <init>(int)>(256);
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.util.Map lifecycleMetadataCache> = v;
return;
}
public void setInitAnnotationType(java.lang.Class)
{
java.lang.Class v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Class;
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.lang.Class initAnnotationType> = v;
return;
}
public void setDestroyAnnotationType(java.lang.Class)
{
java.lang.Class v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Class;
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.lang.Class destroyAnnotationType> = v;
return;
}
public void setOrder(int)
{
int v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: int;
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: int order> = v;
return;
}
public int getOrder()
{
int v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: int order>;
return v;
}
public void postProcessMergedBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Class, java.lang.String)
{
org.springframework.beans.factory.support.RootBeanDefinition v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.lang.Class v;
java.lang.String v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: org.springframework.beans.factory.support.RootBeanDefinition;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
if v == null goto label;
v = specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata findLifecycleMetadata(java.lang.Class)>(v);
virtualinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata: void checkConfigMembers(org.springframework.beans.factory.support.RootBeanDefinition)>(v);
label:
return;
}
public java.lang.Object postProcessBeforeInitialization(java.lang.Object, java.lang.String) throws org.springframework.beans.BeansException
{
java.lang.Throwable v, v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata v;
java.lang.reflect.InvocationTargetException v;
org.springframework.beans.factory.BeanCreationException v, v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.lang.Class v;
java.lang.Object v;
java.lang.String v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata findLifecycleMetadata(java.lang.Class)>(v);
label:
virtualinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata: void invokeInitMethods(java.lang.Object,java.lang.String)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = new org.springframework.beans.factory.BeanCreationException;
v = virtualinvoke v.<java.lang.reflect.InvocationTargetException: java.lang.Throwable getTargetException()>();
specialinvoke v.<org.springframework.beans.factory.BeanCreationException: void <init>(java.lang.String,java.lang.String,java.lang.Throwable)>(v, "Invocation of init method failed", v);
throw v;
label:
v := @caughtexception;
v = new org.springframework.beans.factory.BeanCreationException;
specialinvoke v.<org.springframework.beans.factory.BeanCreationException: void <init>(java.lang.String,java.lang.String,java.lang.Throwable)>(v, "Failed to invoke init method", v);
throw v;
label:
return v;
catch java.lang.reflect.InvocationTargetException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Object postProcessAfterInitialization(java.lang.Object, java.lang.String) throws org.springframework.beans.BeansException
{
java.lang.Object v;
java.lang.String v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
return v;
}
public void postProcessBeforeDestruction(java.lang.Object, java.lang.String) throws org.springframework.beans.BeansException
{
java.lang.Throwable v, v, v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.lang.String v, v, v, v;
boolean v;
java.lang.reflect.InvocationTargetException v;
java.lang.Class v;
java.lang.Object v;
org.apache.commons.logging.Log v, v, v, v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata findLifecycleMetadata(java.lang.Class)>(v);
label:
virtualinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata: void invokeDestroyMethods(java.lang.Object,java.lang.String)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("Invocation of destroy method failed on bean with name \'\u0001\'");
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger>;
v = interfaceinvoke v.<org.apache.commons.logging.Log: boolean isDebugEnabled()>();
if v == 0 goto label;
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger>;
v = virtualinvoke v.<java.lang.reflect.InvocationTargetException: java.lang.Throwable getTargetException()>();
interfaceinvoke v.<org.apache.commons.logging.Log: void warn(java.lang.Object,java.lang.Throwable)>(v, v);
goto label;
label:
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger>;
v = virtualinvoke v.<java.lang.reflect.InvocationTargetException: java.lang.Throwable getTargetException()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Throwable)>(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[])>("\u0001: \u0001");
interfaceinvoke v.<org.apache.commons.logging.Log: void warn(java.lang.Object)>(v);
goto label;
label:
v := @caughtexception;
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(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[])>("Failed to invoke destroy method on bean with name \'\u0001\'");
interfaceinvoke v.<org.apache.commons.logging.Log: void error(java.lang.Object,java.lang.Throwable)>(v, v);
label:
return;
catch java.lang.reflect.InvocationTargetException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public boolean requiresDestruction(java.lang.Object)
{
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.lang.Class v;
java.lang.Object v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata v;
boolean v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata findLifecycleMetadata(java.lang.Class)>(v);
v = virtualinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata: boolean hasDestroyMethods()>();
return v;
}
private org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata findLifecycleMetadata(java.lang.Class)
{
java.lang.Throwable v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.util.Map v, v, v, v, v;
java.lang.Class v;
java.lang.Object v, v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Class;
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.util.Map lifecycleMetadataCache>;
if v != null goto label;
v = specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata buildLifecycleMetadata(java.lang.Class)>(v);
return v;
label:
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.util.Map lifecycleMetadataCache>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.util.Map lifecycleMetadataCache>;
entermonitor v;
label:
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.util.Map lifecycleMetadataCache>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata buildLifecycleMetadata(java.lang.Class)>(v);
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: java.util.Map lifecycleMetadataCache>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
private org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata buildLifecycleMetadata(java.lang.Class)
{
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$1 v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata v;
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.lang.Class v, v;
org.apache.commons.logging.Log v;
java.util.LinkedList v, v, v, v;
boolean v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.lang.Class;
v = v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger>;
v = interfaceinvoke v.<org.apache.commons.logging.Log: boolean isDebugEnabled()>();
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = v;
label:
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = new org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$1;
specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$1: void <init>(org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor,java.util.LinkedList,boolean,java.lang.Class,java.util.LinkedList)>(v, v, v, v, v);
staticinvoke <org.springframework.util.ReflectionUtils: void doWithLocalMethods(java.lang.Class,org.springframework.util.ReflectionUtils$MethodCallback)>(v, v);
virtualinvoke v.<java.util.LinkedList: boolean addAll(int,java.util.Collection)>(0, v);
virtualinvoke v.<java.util.LinkedList: boolean addAll(java.util.Collection)>(v);
v = virtualinvoke v.<java.lang.Class: java.lang.Class getSuperclass()>();
if v == null goto label;
if v != class "Ljava/lang/Object;" goto label;
label:
v = new org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata;
specialinvoke v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata: void <init>(org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor,java.lang.Class,java.util.Collection,java.util.Collection)>(v, v, v, v);
return v;
}
private void readObject(java.io.ObjectInputStream) throws java.io.IOException, java.lang.ClassNotFoundException
{
org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor v;
java.io.ObjectInputStream v;
java.lang.Class v;
org.apache.commons.logging.Log v;
v := @this: org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor;
v := @parameter: java.io.ObjectInputStream;
virtualinvoke v.<java.io.ObjectInputStream: void defaultReadObject()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.commons.logging.LogFactory: org.apache.commons.logging.Log getLog(java.lang.Class)>(v);
v.<org.springframework.beans.factory.'annotation'.InitDestroyAnnotationBeanPostProcessor: org.apache.commons.logging.Log logger> = v;
return;
}
}