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 @Override
038 public TransactionAttribute parseTransactionAnnotation(
039 AnnotatedElement annotatedElement) {
040
041 Transactional transactional = null;
042
043 if (annotatedElement instanceof Method) {
044 Method method = (Method)annotatedElement;
045
046 transactional = AnnotationLocator.locate(
047 method, method.getDeclaringClass(), Transactional.class);
048 }
049 else {
050 transactional = AnnotationLocator.locate(
051 (Class<?>)annotatedElement, Transactional.class);
052 }
053
054 return TransactionAttributeBuilder.build(transactional);
055 }
056
057 }