class org.springframework.transaction.config.TxAdviceBeanDefinitionParser extends org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser
{
private static final java.lang.String METHOD_ELEMENT;
private static final java.lang.String METHOD_NAME_ATTRIBUTE;
private static final java.lang.String ATTRIBUTES_ELEMENT;
private static final java.lang.String TIMEOUT_ATTRIBUTE;
private static final java.lang.String READ_ONLY_ATTRIBUTE;
private static final java.lang.String PROPAGATION_ATTRIBUTE;
private static final java.lang.String ISOLATION_ATTRIBUTE;
private static final java.lang.String ROLLBACK_FOR_ATTRIBUTE;
private static final java.lang.String NO_ROLLBACK_FOR_ATTRIBUTE;
void <init>()
{
org.springframework.transaction.config.TxAdviceBeanDefinitionParser v;
v := @this: org.springframework.transaction.config.TxAdviceBeanDefinitionParser;
specialinvoke v.<org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser: void <init>()>();
return;
}
protected java.lang.Class getBeanClass(org.w3c.dom.Element)
{
org.springframework.transaction.config.TxAdviceBeanDefinitionParser v;
org.w3c.dom.Element v;
v := @this: org.springframework.transaction.config.TxAdviceBeanDefinitionParser;
v := @parameter: org.w3c.dom.Element;
return class "Lorg/springframework/transaction/interceptor/TransactionInterceptor;";
}
protected void doParse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext, org.springframework.beans.factory.support.BeanDefinitionBuilder)
{
org.springframework.beans.factory.support.RootBeanDefinition v, v;
org.springframework.transaction.config.TxAdviceBeanDefinitionParser v;
org.springframework.beans.factory.support.BeanDefinitionBuilder v;
org.springframework.beans.factory.xml.XmlReaderContext v;
java.util.List v;
org.w3c.dom.Element v;
org.springframework.beans.factory.xml.ParserContext v;
int v, v;
java.lang.Object v;
java.lang.String v;
v := @this: org.springframework.transaction.config.TxAdviceBeanDefinitionParser;
v := @parameter: org.w3c.dom.Element;
v := @parameter: org.springframework.beans.factory.xml.ParserContext;
v := @parameter: org.springframework.beans.factory.support.BeanDefinitionBuilder;
v = staticinvoke <org.springframework.transaction.config.TxNamespaceHandler: java.lang.String getTransactionManagerName(org.w3c.dom.Element)>(v);
virtualinvoke v.<org.springframework.beans.factory.support.BeanDefinitionBuilder: org.springframework.beans.factory.support.BeanDefinitionBuilder addPropertyReference(java.lang.String,java.lang.String)>("transactionManager", v);
v = staticinvoke <org.springframework.util.xml.DomUtils: java.util.List getChildElementsByTagName(org.w3c.dom.Element,java.lang.String)>(v, "attributes");
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 1 goto label;
v = virtualinvoke v.<org.springframework.beans.factory.xml.ParserContext: org.springframework.beans.factory.xml.XmlReaderContext getReaderContext()>();
virtualinvoke v.<org.springframework.beans.factory.xml.XmlReaderContext: void error(java.lang.String,java.lang.Object)>("Element <attributes> is allowed at most once inside element <advice>", v);
goto label;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = specialinvoke v.<org.springframework.transaction.config.TxAdviceBeanDefinitionParser: org.springframework.beans.factory.support.RootBeanDefinition parseAttributeSource(org.w3c.dom.Element,org.springframework.beans.factory.xml.ParserContext)>(v, v);
virtualinvoke v.<org.springframework.beans.factory.support.BeanDefinitionBuilder: org.springframework.beans.factory.support.BeanDefinitionBuilder addPropertyValue(java.lang.String,java.lang.Object)>("transactionAttributeSource", v);
goto label;
label:
v = new org.springframework.beans.factory.support.RootBeanDefinition;
specialinvoke v.<org.springframework.beans.factory.support.RootBeanDefinition: void <init>(java.lang.String)>("org.springframework.transaction.annotation.AnnotationTransactionAttributeSource");
virtualinvoke v.<org.springframework.beans.factory.support.BeanDefinitionBuilder: org.springframework.beans.factory.support.BeanDefinitionBuilder addPropertyValue(java.lang.String,java.lang.Object)>("transactionAttributeSource", v);
label:
return;
}
private org.springframework.beans.factory.support.RootBeanDefinition parseAttributeSource(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext)
{
org.springframework.beans.factory.xml.XmlReaderContext v;
boolean v, v, v, v, v, v, v, v;
org.springframework.transaction.config.TxAdviceBeanDefinitionParser v;
java.util.List v;
org.springframework.beans.factory.support.RootBeanDefinition v;
org.springframework.beans.factory.xml.ParserContext v;
int v, v;
org.springframework.transaction.interceptor.RuleBasedTransactionAttribute v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v;
java.util.LinkedList v;
org.springframework.beans.factory.support.ManagedMap v;
java.util.Iterator v;
java.lang.NumberFormatException v;
org.springframework.beans.MutablePropertyValues v;
org.w3c.dom.Element v;
org.springframework.beans.factory.config.TypedStringValue v;
java.lang.Object v, v, v, v;
v := @this: org.springframework.transaction.config.TxAdviceBeanDefinitionParser;
v := @parameter: org.w3c.dom.Element;
v := @parameter: org.springframework.beans.factory.xml.ParserContext;
v = staticinvoke <org.springframework.util.xml.DomUtils: java.util.List getChildElementsByTagName(org.w3c.dom.Element,java.lang.String)>(v, "method");
v = new org.springframework.beans.factory.support.ManagedMap;
v = interfaceinvoke v.<java.util.List: int size()>();
specialinvoke v.<org.springframework.beans.factory.support.ManagedMap: void <init>(int)>(v);
v = virtualinvoke v.<org.springframework.beans.factory.xml.ParserContext: java.lang.Object extractSource(java.lang.Object)>(v);
virtualinvoke v.<org.springframework.beans.factory.support.ManagedMap: void setSource(java.lang.Object)>(v);
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()>();
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("name");
v = new org.springframework.beans.factory.config.TypedStringValue;
specialinvoke v.<org.springframework.beans.factory.config.TypedStringValue: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<org.springframework.beans.factory.xml.ParserContext: java.lang.Object extractSource(java.lang.Object)>(v);
virtualinvoke v.<org.springframework.beans.factory.config.TypedStringValue: void setSource(java.lang.Object)>(v);
v = new org.springframework.transaction.interceptor.RuleBasedTransactionAttribute;
specialinvoke v.<org.springframework.transaction.interceptor.RuleBasedTransactionAttribute: void <init>()>();
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("propagation");
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("isolation");
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("timeout");
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("read-only");
v = staticinvoke <org.springframework.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
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[])>("PROPAGATION_\u0001");
virtualinvoke v.<org.springframework.transaction.interceptor.RuleBasedTransactionAttribute: void setPropagationBehaviorName(java.lang.String)>(v);
label:
v = staticinvoke <org.springframework.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
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[])>("ISOLATION_\u0001");
virtualinvoke v.<org.springframework.transaction.interceptor.RuleBasedTransactionAttribute: void setIsolationLevelName(java.lang.String)>(v);
label:
v = staticinvoke <org.springframework.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
label:
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
virtualinvoke v.<org.springframework.transaction.interceptor.RuleBasedTransactionAttribute: void setTimeout(int)>(v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<org.springframework.beans.factory.xml.ParserContext: org.springframework.beans.factory.xml.XmlReaderContext getReaderContext()>();
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[])>("Timeout must be an integer value: [\u]");
virtualinvoke v.<org.springframework.beans.factory.xml.XmlReaderContext: void error(java.lang.String,java.lang.Object)>(v, v);
label:
v = staticinvoke <org.springframework.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("read-only");
v = staticinvoke <java.lang.Boolean: boolean parseBoolean(java.lang.String)>(v);
virtualinvoke v.<org.springframework.transaction.interceptor.RuleBasedTransactionAttribute: void setReadOnly(boolean)>(v);
label:
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = interfaceinvoke v.<org.w3c.dom.Element: boolean hasAttribute(java.lang.String)>("rollback-for");
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("rollback-for");
specialinvoke v.<org.springframework.transaction.config.TxAdviceBeanDefinitionParser: void addRollbackRuleAttributesTo(java.util.List,java.lang.String)>(v, v);
label:
v = interfaceinvoke v.<org.w3c.dom.Element: boolean hasAttribute(java.lang.String)>("no-rollback-for");
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("no-rollback-for");
specialinvoke v.<org.springframework.transaction.config.TxAdviceBeanDefinitionParser: void addNoRollbackRuleAttributesTo(java.util.List,java.lang.String)>(v, v);
label:
virtualinvoke v.<org.springframework.transaction.interceptor.RuleBasedTransactionAttribute: void setRollbackRules(java.util.List)>(v);
virtualinvoke v.<org.springframework.beans.factory.support.ManagedMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = new org.springframework.beans.factory.support.RootBeanDefinition;
specialinvoke v.<org.springframework.beans.factory.support.RootBeanDefinition: void <init>(java.lang.Class)>(class "Lorg/springframework/transaction/interceptor/NameMatchTransactionAttributeSource;");
v = virtualinvoke v.<org.springframework.beans.factory.xml.ParserContext: java.lang.Object extractSource(java.lang.Object)>(v);
virtualinvoke v.<org.springframework.beans.factory.support.RootBeanDefinition: void setSource(java.lang.Object)>(v);
v = virtualinvoke v.<org.springframework.beans.factory.support.RootBeanDefinition: org.springframework.beans.MutablePropertyValues getPropertyValues()>();
virtualinvoke v.<org.springframework.beans.MutablePropertyValues: org.springframework.beans.MutablePropertyValues add(java.lang.String,java.lang.Object)>("nameMap", v);
return v;
catch java.lang.NumberFormatException from label to label with label;
}
private void addRollbackRuleAttributesTo(java.util.List, java.lang.String)
{
org.springframework.transaction.config.TxAdviceBeanDefinitionParser v;
java.lang.String[] v;
org.springframework.transaction.interceptor.RollbackRuleAttribute v;
java.util.List v;
int v, v;
java.lang.String v, v, v;
v := @this: org.springframework.transaction.config.TxAdviceBeanDefinitionParser;
v := @parameter: java.util.List;
v := @parameter: java.lang.String;
v = staticinvoke <org.springframework.util.StringUtils: java.lang.String[] commaDelimitedListToStringArray(java.lang.String)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = new org.springframework.transaction.interceptor.RollbackRuleAttribute;
v = staticinvoke <org.springframework.util.StringUtils: java.lang.String trimWhitespace(java.lang.String)>(v);
specialinvoke v.<org.springframework.transaction.interceptor.RollbackRuleAttribute: void <init>(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
return;
}
private void addNoRollbackRuleAttributesTo(java.util.List, java.lang.String)
{
org.springframework.transaction.config.TxAdviceBeanDefinitionParser v;
java.lang.String[] v;
java.util.List v;
int v, v;
java.lang.String v, v, v;
org.springframework.transaction.interceptor.NoRollbackRuleAttribute v;
v := @this: org.springframework.transaction.config.TxAdviceBeanDefinitionParser;
v := @parameter: java.util.List;
v := @parameter: java.lang.String;
v = staticinvoke <org.springframework.util.StringUtils: java.lang.String[] commaDelimitedListToStringArray(java.lang.String)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = new org.springframework.transaction.interceptor.NoRollbackRuleAttribute;
v = staticinvoke <org.springframework.util.StringUtils: java.lang.String trimWhitespace(java.lang.String)>(v);
specialinvoke v.<org.springframework.transaction.interceptor.NoRollbackRuleAttribute: void <init>(java.lang.String)>(v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
return;
}
}