Refactor to consistent use of AnnotationAttributes
Uses of AnnotationMetadata#getAnnotationAttributes throughout the framework have been updated to use the new AnnotationAttributes API in order to take advantage of the more concise, expressive and type-safe methods there. All changes are binary compatible to the 3.1.0 public API, save the exception below. A minor binary compatibility issue has been introduced in AbstractCachingConfiguration, AbstractAsyncConfiguration and AbstractTransactionManagementConfiguration when updating their protected Map<String, Object> fields representing annotation attributes to use the new AnnotationAttributes API. This is a negligible breakage, however, as the likelilhood of users subclassing these types is very low, the classes have only been in existence for a short time (further reducing the likelihood), and it is a source-compatible change given that AnnotationAttributes is assignable to Map<String, Object>.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2011 the original author or authors.
|
||||
* Copyright 2002-2012 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.
|
||||
@@ -17,11 +17,11 @@
|
||||
package org.springframework.transaction.annotation;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.ImportAware;
|
||||
import org.springframework.core.annotation.AnnotationAttributes;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.util.Assert;
|
||||
@@ -37,11 +37,12 @@ import org.springframework.util.Assert;
|
||||
@Configuration
|
||||
public abstract class AbstractTransactionManagementConfiguration implements ImportAware {
|
||||
|
||||
protected Map<String, Object> enableTx;
|
||||
protected AnnotationAttributes enableTx;
|
||||
protected PlatformTransactionManager txManager;
|
||||
|
||||
public void setImportMetadata(AnnotationMetadata importMetadata) {
|
||||
this.enableTx = importMetadata.getAnnotationAttributes(EnableTransactionManagement.class.getName(), false);
|
||||
this.enableTx = AnnotationAttributes.fromMap(
|
||||
importMetadata.getAnnotationAttributes(EnableTransactionManagement.class.getName(), false));
|
||||
Assert.notNull(this.enableTx,
|
||||
"@EnableTransactionManagement is not present on importing class " +
|
||||
importMetadata.getClassName());
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2011 the original author or authors.
|
||||
* Copyright 2002-2012 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.
|
||||
@@ -44,7 +44,7 @@ public class ProxyTransactionManagementConfiguration extends AbstractTransaction
|
||||
new BeanFactoryTransactionAttributeSourceAdvisor();
|
||||
advisor.setTransactionAttributeSource(transactionAttributeSource());
|
||||
advisor.setAdvice(transactionInterceptor());
|
||||
advisor.setOrder(((Integer)this.enableTx.get("order")));
|
||||
advisor.setOrder(this.enableTx.getInt("order"));
|
||||
return advisor;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user