5 changed files with 229 additions and 5 deletions
@ -0,0 +1,76 @@
@@ -0,0 +1,76 @@
|
||||
/* |
||||
* Copyright 2002-2013 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.transaction.annotation; |
||||
|
||||
import java.io.Serializable; |
||||
import java.lang.reflect.AnnotatedElement; |
||||
import java.util.ArrayList; |
||||
|
||||
import org.springframework.core.annotation.AnnotationUtils; |
||||
import org.springframework.transaction.interceptor.NoRollbackRuleAttribute; |
||||
import org.springframework.transaction.interceptor.RollbackRuleAttribute; |
||||
import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute; |
||||
import org.springframework.transaction.interceptor.TransactionAttribute; |
||||
|
||||
/** |
||||
* Strategy implementation for parsing JTA 1.2's {@link javax.transaction.Transactional} annotation. |
||||
* |
||||
* @author Juergen Hoeller |
||||
* @since 4.0 |
||||
*/ |
||||
@SuppressWarnings("serial") |
||||
public class JtaTransactionAnnotationParser implements TransactionAnnotationParser, Serializable { |
||||
|
||||
public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { |
||||
javax.transaction.Transactional ann = AnnotationUtils.getAnnotation(ae, javax.transaction.Transactional.class); |
||||
if (ann != null) { |
||||
return parseTransactionAnnotation(ann); |
||||
} |
||||
else { |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
public TransactionAttribute parseTransactionAnnotation(javax.transaction.Transactional ann) { |
||||
RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute(); |
||||
rbta.setPropagationBehaviorName(RuleBasedTransactionAttribute.PREFIX_PROPAGATION + ann.value().toString()); |
||||
ArrayList<RollbackRuleAttribute> rollBackRules = new ArrayList<RollbackRuleAttribute>(); |
||||
Class[] rbf = ann.rollbackOn(); |
||||
for (Class rbRule : rbf) { |
||||
RollbackRuleAttribute rule = new RollbackRuleAttribute(rbRule); |
||||
rollBackRules.add(rule); |
||||
} |
||||
Class[] nrbf = ann.dontRollbackOn(); |
||||
for (Class rbRule : nrbf) { |
||||
NoRollbackRuleAttribute rule = new NoRollbackRuleAttribute(rbRule); |
||||
rollBackRules.add(rule); |
||||
} |
||||
rbta.getRollbackRules().addAll(rollBackRules); |
||||
return rbta; |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object other) { |
||||
return (this == other || other instanceof JtaTransactionAnnotationParser); |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return JtaTransactionAnnotationParser.class.hashCode(); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue