001
014
015 package com.liferay.portal.spring.annotation;
016
017 import com.liferay.portal.kernel.annotation.AnnotationLocator;
018 import com.liferay.portal.kernel.transaction.Transactional;
019 import com.liferay.portal.spring.transaction.TransactionAttributeBuilder;
020
021 import java.io.Serializable;
022
023 import java.lang.reflect.AnnotatedElement;
024 import java.lang.reflect.Method;
025
026 import org.springframework.transaction.annotation.TransactionAnnotationParser;
027 import org.springframework.transaction.interceptor.TransactionAttribute;
028
029
034 public class PortalTransactionAnnotationParser
035 implements TransactionAnnotationParser, Serializable {
036
037 public TransactionAttribute parseTransactionAnnotation(
038 AnnotatedElement annotatedElement) {
039
040 Transactional transactional = null;
041
042 if (annotatedElement instanceof Method) {
043 Method method = (Method)annotatedElement;
044
045 transactional = AnnotationLocator.locate(
046 method, method.getDeclaringClass(), Transactional.class);
047 }
048 else {
049 transactional = AnnotationLocator.locate(
050 (Class<?>)annotatedElement, Transactional.class);
051 }
052
053 return TransactionAttributeBuilder.build(transactional);
054 }
055
056 }