diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java index aeb468078a1..55d89dc83c7 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java @@ -403,8 +403,8 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac throws BeansException { Object result = existingBean; - for (BeanPostProcessor beanProcessor : getBeanPostProcessors()) { - result = beanProcessor.postProcessBeforeInitialization(result, beanName); + for (BeanPostProcessor processor : getBeanPostProcessors()) { + result = processor.postProcessBeforeInitialization(result, beanName); if (result == null) { return result; } @@ -417,8 +417,8 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac throws BeansException { Object result = existingBean; - for (BeanPostProcessor beanProcessor : getBeanPostProcessors()) { - result = beanProcessor.postProcessAfterInitialization(result, beanName); + for (BeanPostProcessor processor : getBeanPostProcessors()) { + result = processor.postProcessAfterInitialization(result, beanName); if (result == null) { return result; } diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java b/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java index 418e6521540..0737feba425 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 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. @@ -128,10 +128,9 @@ public class AnnotationCacheOperationSource extends AbstractFallbackCacheOperati /** * Determine the cache operation(s) for the given {@link CacheOperationProvider}. *

This implementation delegates to configured - * {@link CacheAnnotationParser}s for parsing known annotations into - * Spring's metadata attribute class. - *

Can be overridden to support custom annotations that carry - * caching metadata. + * {@link CacheAnnotationParser CacheAnnotationParsers} + * for parsing known annotations into Spring's metadata attribute class. + *

Can be overridden to support custom annotations that carry caching metadata. * @param provider the cache operation provider to use * @return the configured caching operations, or {@code null} if none found */ diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java b/spring-context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java index bb89421a42a..4a01e305a9f 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java @@ -30,6 +30,7 @@ import org.springframework.context.annotation.Role; * to enable proxy-based annotation-driven cache management. * * @author Chris Beams + * @author Juergen Hoeller * @since 3.1 * @see EnableCaching * @see CachingConfigurationSelector @@ -41,8 +42,7 @@ public class ProxyCachingConfiguration extends AbstractCachingConfiguration { @Bean(name = CacheManagementConfigUtils.CACHE_ADVISOR_BEAN_NAME) @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public BeanFactoryCacheOperationSourceAdvisor cacheAdvisor() { - BeanFactoryCacheOperationSourceAdvisor advisor = - new BeanFactoryCacheOperationSourceAdvisor(); + BeanFactoryCacheOperationSourceAdvisor advisor = new BeanFactoryCacheOperationSourceAdvisor(); advisor.setCacheOperationSource(cacheOperationSource()); advisor.setAdvice(cacheInterceptor()); advisor.setOrder(this.enableCaching.getNumber("order")); diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java index d065682e9ae..378d45f0a59 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java @@ -189,8 +189,8 @@ class ConfigurationClassEnhancer { @Override public int accept(Method method) { for (int i = 0; i < this.callbacks.length; i++) { - if (!(this.callbacks[i] instanceof ConditionalCallback) || - ((ConditionalCallback) this.callbacks[i]).isMatch(method)) { + Callback callback = this.callbacks[i]; + if (!(callback instanceof ConditionalCallback) || ((ConditionalCallback) callback).isMatch(method)) { return i; } } diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java index ce9bb633168..0b6a7f3a13b 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java @@ -1079,7 +1079,7 @@ public class AnnotatedElementUtils { if (containerType != null && !processor.aggregates()) { throw new IllegalArgumentException( - "Searches for repeatable annotations must supply an aggregating Processor"); + "Searches for repeatable annotations must supply an aggregating Processor"); } try { diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java index 476d6b14f5c..958371d9a03 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2018 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. @@ -85,7 +85,7 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa */ public AnnotationTransactionAttributeSource(boolean publicMethodsOnly) { this.publicMethodsOnly = publicMethodsOnly; - this.annotationParsers = new LinkedHashSet(2); + this.annotationParsers = new LinkedHashSet(4); this.annotationParsers.add(new SpringTransactionAnnotationParser()); if (jta12Present) { this.annotationParsers.add(new JtaTransactionAnnotationParser()); @@ -145,14 +145,13 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa * for parsing known annotations into Spring's metadata attribute class. * Returns {@code null} if it's not transactional. *

Can be overridden to support custom annotations that carry transaction metadata. - * @param ae the annotated method or class - * @return TransactionAttribute the configured transaction attribute, - * or {@code null} if none was found + * @param element the annotated method or class + * @return the configured transaction attribute, or {@code null} if none was found */ - protected TransactionAttribute determineTransactionAttribute(AnnotatedElement ae) { - if (ae.getAnnotations().length > 0) { + protected TransactionAttribute determineTransactionAttribute(AnnotatedElement element) { + if (element.getAnnotations().length > 0) { for (TransactionAnnotationParser annotationParser : this.annotationParsers) { - TransactionAttribute attr = annotationParser.parseTransactionAnnotation(ae); + TransactionAttribute attr = annotationParser.parseTransactionAnnotation(element); if (attr != null) { return attr; } diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java index c7e20cf1dc4..e3390ba6dda 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2018 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. @@ -35,8 +35,8 @@ import org.springframework.transaction.interceptor.TransactionAttribute; public class Ejb3TransactionAnnotationParser implements TransactionAnnotationParser, Serializable { @Override - public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { - javax.ejb.TransactionAttribute ann = ae.getAnnotation(javax.ejb.TransactionAttribute.class); + public TransactionAttribute parseTransactionAnnotation(AnnotatedElement element) { + javax.ejb.TransactionAttribute ann = element.getAnnotation(javax.ejb.TransactionAttribute.class); if (ann != null) { return parseTransactionAnnotation(ann); } @@ -49,6 +49,7 @@ public class Ejb3TransactionAnnotationParser implements TransactionAnnotationPar return new Ejb3TransactionAttribute(ann.value()); } + @Override public boolean equals(Object other) { return (this == other || other instanceof Ejb3TransactionAnnotationParser); diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java index dedd95f9c08..27fa17b5fc1 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 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. @@ -19,6 +19,7 @@ package org.springframework.transaction.annotation; import java.io.Serializable; import java.lang.reflect.AnnotatedElement; import java.util.ArrayList; +import java.util.List; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationAttributes; @@ -38,9 +39,9 @@ import org.springframework.transaction.interceptor.TransactionAttribute; public class JtaTransactionAnnotationParser implements TransactionAnnotationParser, Serializable { @Override - public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { - AnnotationAttributes attributes = - AnnotatedElementUtils.getMergedAnnotationAttributes(ae, javax.transaction.Transactional.class); + public TransactionAttribute parseTransactionAnnotation(AnnotatedElement element) { + AnnotationAttributes attributes = AnnotatedElementUtils.getMergedAnnotationAttributes( + element, javax.transaction.Transactional.class); if (attributes != null) { return parseTransactionAnnotation(attributes); } @@ -55,23 +56,23 @@ public class JtaTransactionAnnotationParser implements TransactionAnnotationPars protected TransactionAttribute parseTransactionAnnotation(AnnotationAttributes attributes) { RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute(); + rbta.setPropagationBehaviorName( RuleBasedTransactionAttribute.PREFIX_PROPAGATION + attributes.getEnum("value").toString()); - ArrayList rollBackRules = new ArrayList(); - Class[] rbf = attributes.getClassArray("rollbackOn"); - for (Class rbRule : rbf) { - RollbackRuleAttribute rule = new RollbackRuleAttribute(rbRule); - rollBackRules.add(rule); + + List rollbackRules = new ArrayList(); + for (Class rbRule : attributes.getClassArray("rollbackOn")) { + rollbackRules.add(new RollbackRuleAttribute(rbRule)); } - Class[] nrbf = attributes.getClassArray("dontRollbackOn"); - for (Class rbRule : nrbf) { - NoRollbackRuleAttribute rule = new NoRollbackRuleAttribute(rbRule); - rollBackRules.add(rule); + for (Class rbRule : attributes.getClassArray("dontRollbackOn")) { + rollbackRules.add(new NoRollbackRuleAttribute(rbRule)); } - rbta.getRollbackRules().addAll(rollBackRules); + rbta.setRollbackRules(rollbackRules); + return rbta; } + @Override public boolean equals(Object other) { return (this == other || other instanceof JtaTransactionAnnotationParser); diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java index df9a3109465..a9cd7c23f36 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2018 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. @@ -19,6 +19,7 @@ package org.springframework.transaction.annotation; import java.io.Serializable; import java.lang.reflect.AnnotatedElement; import java.util.ArrayList; +import java.util.List; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationAttributes; @@ -38,8 +39,9 @@ import org.springframework.transaction.interceptor.TransactionAttribute; public class SpringTransactionAnnotationParser implements TransactionAnnotationParser, Serializable { @Override - public TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae) { - AnnotationAttributes attributes = AnnotatedElementUtils.getMergedAnnotationAttributes(ae, Transactional.class); + public TransactionAttribute parseTransactionAnnotation(AnnotatedElement element) { + AnnotationAttributes attributes = AnnotatedElementUtils.getMergedAnnotationAttributes( + element, Transactional.class); if (attributes != null) { return parseTransactionAnnotation(attributes); } @@ -54,6 +56,7 @@ public class SpringTransactionAnnotationParser implements TransactionAnnotationP protected TransactionAttribute parseTransactionAnnotation(AnnotationAttributes attributes) { RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute(); + Propagation propagation = attributes.getEnum("propagation"); rbta.setPropagationBehavior(propagation.value()); Isolation isolation = attributes.getEnum("isolation"); @@ -61,31 +64,26 @@ public class SpringTransactionAnnotationParser implements TransactionAnnotationP rbta.setTimeout(attributes.getNumber("timeout").intValue()); rbta.setReadOnly(attributes.getBoolean("readOnly")); rbta.setQualifier(attributes.getString("value")); - ArrayList rollBackRules = new ArrayList(); - Class[] rbf = attributes.getClassArray("rollbackFor"); - for (Class rbRule : rbf) { - RollbackRuleAttribute rule = new RollbackRuleAttribute(rbRule); - rollBackRules.add(rule); + + List rollbackRules = new ArrayList(); + for (Class rbRule : attributes.getClassArray("rollbackFor")) { + rollbackRules.add(new RollbackRuleAttribute(rbRule)); } - String[] rbfc = attributes.getStringArray("rollbackForClassName"); - for (String rbRule : rbfc) { - RollbackRuleAttribute rule = new RollbackRuleAttribute(rbRule); - rollBackRules.add(rule); + for (String rbRule : attributes.getStringArray("rollbackForClassName")) { + rollbackRules.add(new RollbackRuleAttribute(rbRule)); } - Class[] nrbf = attributes.getClassArray("noRollbackFor"); - for (Class rbRule : nrbf) { - NoRollbackRuleAttribute rule = new NoRollbackRuleAttribute(rbRule); - rollBackRules.add(rule); + for (Class rbRule : attributes.getClassArray("noRollbackFor")) { + rollbackRules.add(new NoRollbackRuleAttribute(rbRule)); } - String[] nrbfc = attributes.getStringArray("noRollbackForClassName"); - for (String rbRule : nrbfc) { - NoRollbackRuleAttribute rule = new NoRollbackRuleAttribute(rbRule); - rollBackRules.add(rule); + for (String rbRule : attributes.getStringArray("noRollbackForClassName")) { + rollbackRules.add(new NoRollbackRuleAttribute(rbRule)); } - rbta.getRollbackRules().addAll(rollBackRules); + rbta.setRollbackRules(rollbackRules); + return rbta; } + @Override public boolean equals(Object other) { return (this == other || other instanceof SpringTransactionAnnotationParser); diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionAnnotationParser.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionAnnotationParser.java index 558b464028e..3075ccc664c 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionAnnotationParser.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionAnnotationParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2018 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. @@ -38,15 +38,13 @@ public interface TransactionAnnotationParser { /** * Parse the transaction attribute for the given method or class, - * based on a known annotation type. - *

This essentially parses a known transaction annotation into Spring's - * metadata attribute class. Returns {@code null} if the method/class - * is not transactional. - * @param ae the annotated method or class - * @return TransactionAttribute the configured transaction attribute, - * or {@code null} if none was found + * based on an annotation type understood by this parser. + *

This essentially parses a known transaction annotation into Spring's metadata + * attribute class. Returns {@code null} if the method/class is not transactional. + * @param element the annotated method or class + * @return the configured transaction attribute, or {@code null} if none found * @see AnnotationTransactionAttributeSource#determineTransactionAttribute */ - TransactionAttribute parseTransactionAnnotation(AnnotatedElement ae); + TransactionAttribute parseTransactionAnnotation(AnnotatedElement element); }