mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
Polishing
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -30,13 +30,14 @@ public class AdviceEntry implements ParseState.Entry {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new instance of the {@link AdviceEntry} class.
|
||||
* @param kind the kind of advice represented by this entry (before, after, around, etc.)
|
||||
* Create a new {@code AdviceEntry} instance.
|
||||
* @param kind the kind of advice represented by this entry (before, after, around)
|
||||
*/
|
||||
public AdviceEntry(String kind) {
|
||||
this.kind = kind;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Advice (" + this.kind + ")";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -30,13 +30,14 @@ public class AdvisorEntry implements ParseState.Entry {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new instance of the {@link AdvisorEntry} class.
|
||||
* Create a new {@code AdvisorEntry} instance.
|
||||
* @param name the bean name of the advisor
|
||||
*/
|
||||
public AdvisorEntry(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Advisor '" + this.name + "'";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2007 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -34,7 +34,7 @@ public class AspectEntry implements ParseState.Entry {
|
||||
|
||||
|
||||
/**
|
||||
* Create a new AspectEntry.
|
||||
* Create a new {@code AspectEntry} instance.
|
||||
* @param id the id of the aspect element
|
||||
* @param ref the bean name referenced by this aspect element
|
||||
*/
|
||||
@@ -43,6 +43,7 @@ public class AspectEntry implements ParseState.Entry {
|
||||
this.ref = ref;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Aspect: " + (StringUtils.hasLength(this.id) ? "id='" + this.id + "'" : "ref='" + this.ref + "'");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -28,14 +28,16 @@ public class PointcutEntry implements ParseState.Entry {
|
||||
|
||||
private final String name;
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new instance of the {@link PointcutEntry} class.
|
||||
* Create a new {@code PointcutEntry} instance.
|
||||
* @param name the bean name of the pointcut
|
||||
*/
|
||||
public PointcutEntry(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Pointcut '" + this.name + "'";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2006 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -24,11 +24,11 @@ package org.springframework.beans.factory.parsing;
|
||||
*/
|
||||
public class BeanEntry implements ParseState.Entry {
|
||||
|
||||
private String beanDefinitionName;
|
||||
private final String beanDefinitionName;
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new instance of {@link BeanEntry} class.
|
||||
* Create a new {@code BeanEntry} instance.
|
||||
* @param beanDefinitionName the name of the associated bean definition
|
||||
*/
|
||||
public BeanEntry(String beanDefinitionName) {
|
||||
|
||||
+13
-17
@@ -20,23 +20,17 @@ import java.util.Stack;
|
||||
|
||||
/**
|
||||
* Simple {@link Stack}-based structure for tracking the logical position during
|
||||
* a parsing process. {@link Entry entries} are added to the stack at
|
||||
* each point during the parse phase in a reader-specific manner.
|
||||
* a parsing process. {@link Entry entries} are added to the stack at each point
|
||||
* during the parse phase in a reader-specific manner.
|
||||
*
|
||||
* <p>Calling {@link #toString()} will render a tree-style view of the current logical
|
||||
* position in the parse phase. This representation is intended for use in
|
||||
* error messages.
|
||||
* position in the parse phase. This representation is intended for use in error messages.
|
||||
*
|
||||
* @author Rob Harrop
|
||||
* @since 2.0
|
||||
*/
|
||||
public final class ParseState {
|
||||
|
||||
/**
|
||||
* Tab character used when rendering the tree-style representation.
|
||||
*/
|
||||
private static final char TAB = '\t';
|
||||
|
||||
/**
|
||||
* Internal {@link Stack} storage.
|
||||
*/
|
||||
@@ -51,7 +45,7 @@ public final class ParseState {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@code ParseState} whose {@link Stack} is a {@link Object#clone clone}
|
||||
* Create a new {@code ParseState} whose {@link Stack} is a clone
|
||||
* of that of the passed in {@code ParseState}.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -79,7 +73,7 @@ public final class ParseState {
|
||||
* {@code null} if the {@link Stack} is empty.
|
||||
*/
|
||||
public Entry peek() {
|
||||
return this.state.empty() ? null : this.state.peek();
|
||||
return (this.state.empty() ? null : this.state.peek());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -96,16 +90,18 @@ public final class ParseState {
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int x = 0; x < this.state.size(); x++) {
|
||||
if (x > 0) {
|
||||
StringBuilder sb = new StringBuilder(64);
|
||||
int i = 0;
|
||||
for (ParseState.Entry entry : this.state) {
|
||||
if (i > 0) {
|
||||
sb.append('\n');
|
||||
for (int y = 0; y < x; y++) {
|
||||
sb.append(TAB);
|
||||
for (int j = 0; j < i; j++) {
|
||||
sb.append('\t');
|
||||
}
|
||||
sb.append("-> ");
|
||||
}
|
||||
sb.append(this.state.get(x));
|
||||
sb.append(entry);
|
||||
i++;
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
+3
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -30,14 +30,12 @@ public class PropertyEntry implements ParseState.Entry {
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new instance of the {@link PropertyEntry} class.
|
||||
* Create a new {@code PropertyEntry} instance.
|
||||
* @param name the name of the JavaBean property represented by this instance
|
||||
* @throws IllegalArgumentException if the supplied {@code name} is {@code null}
|
||||
* or consists wholly of whitespace
|
||||
*/
|
||||
public PropertyEntry(String name) {
|
||||
if (!StringUtils.hasText(name)) {
|
||||
throw new IllegalArgumentException("Invalid property name '" + name + "'.");
|
||||
throw new IllegalArgumentException("Invalid property name '" + name + "'");
|
||||
}
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
+8
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -26,16 +26,21 @@ import org.springframework.util.StringUtils;
|
||||
*/
|
||||
public class QualifierEntry implements ParseState.Entry {
|
||||
|
||||
private String typeName;
|
||||
private final String typeName;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new {@code QualifierEntry} instance.
|
||||
* @param typeName the name of the qualifier type
|
||||
*/
|
||||
public QualifierEntry(String typeName) {
|
||||
if (!StringUtils.hasText(typeName)) {
|
||||
throw new IllegalArgumentException("Invalid qualifier type '" + typeName + "'.");
|
||||
throw new IllegalArgumentException("Invalid qualifier type '" + typeName + "'");
|
||||
}
|
||||
this.typeName = typeName;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Qualifier '" + this.typeName + "'";
|
||||
|
||||
+3
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2020 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,7 +38,7 @@ public class ReplaceOverride extends MethodOverride {
|
||||
|
||||
private final String methodReplacerBeanName;
|
||||
|
||||
private List<String> typeIdentifiers = new LinkedList<String>();
|
||||
private final List<String> typeIdentifiers = new LinkedList<String>();
|
||||
|
||||
|
||||
/**
|
||||
@@ -69,6 +69,7 @@ public class ReplaceOverride extends MethodOverride {
|
||||
this.typeIdentifiers.add(identifier);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matches(Method method) {
|
||||
if (!method.getName().equals(getMethodName())) {
|
||||
|
||||
+7
-7
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -119,7 +119,7 @@ public class SimpleNamingContext implements Context {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Static JNDI lookup: [" + name + "]");
|
||||
}
|
||||
if ("".equals(name)) {
|
||||
if (name.isEmpty()) {
|
||||
return new SimpleNamingContext(this.root, this.boundObjects, this.environment);
|
||||
}
|
||||
Object found = this.boundObjects.get(name);
|
||||
@@ -293,12 +293,12 @@ public class SimpleNamingContext implements Context {
|
||||
}
|
||||
|
||||
|
||||
private static abstract class AbstractNamingEnumeration<T> implements NamingEnumeration<T> {
|
||||
private abstract static class AbstractNamingEnumeration<T> implements NamingEnumeration<T> {
|
||||
|
||||
private Iterator<T> iterator;
|
||||
private final Iterator<T> iterator;
|
||||
|
||||
private AbstractNamingEnumeration(SimpleNamingContext context, String proot) throws NamingException {
|
||||
if (!"".equals(proot) && !proot.endsWith("/")) {
|
||||
if (!proot.isEmpty() && !proot.endsWith("/")) {
|
||||
proot = proot + "/";
|
||||
}
|
||||
String root = context.root + proot;
|
||||
@@ -353,7 +353,7 @@ public class SimpleNamingContext implements Context {
|
||||
}
|
||||
|
||||
|
||||
private static class NameClassPairEnumeration extends AbstractNamingEnumeration<NameClassPair> {
|
||||
private static final class NameClassPairEnumeration extends AbstractNamingEnumeration<NameClassPair> {
|
||||
|
||||
private NameClassPairEnumeration(SimpleNamingContext context, String root) throws NamingException {
|
||||
super(context, root);
|
||||
@@ -366,7 +366,7 @@ public class SimpleNamingContext implements Context {
|
||||
}
|
||||
|
||||
|
||||
private static class BindingEnumeration extends AbstractNamingEnumeration<Binding> {
|
||||
private static final class BindingEnumeration extends AbstractNamingEnumeration<Binding> {
|
||||
|
||||
private BindingEnumeration(SimpleNamingContext context, String root) throws NamingException {
|
||||
super(context, root);
|
||||
|
||||
@@ -292,7 +292,7 @@ public class FastByteArrayOutputStream extends OutputStream {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new buffer and store it in the LinkedList
|
||||
* Create a new buffer and store it in the LinkedList.
|
||||
* <p>Adds a new buffer that can store at least {@code minCapacity} bytes.
|
||||
*/
|
||||
private void addBuffer(int minCapacity) {
|
||||
|
||||
+6
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -64,10 +64,10 @@ class JmsListenerContainerParser extends AbstractListenerContainerParser {
|
||||
|
||||
String containerType = containerEle.getAttribute(CONTAINER_TYPE_ATTRIBUTE);
|
||||
String containerClass = containerEle.getAttribute(CONTAINER_CLASS_ATTRIBUTE);
|
||||
if (!"".equals(containerClass)) {
|
||||
return null; // Not supported
|
||||
if (StringUtils.hasLength(containerClass)) {
|
||||
return null; // not supported
|
||||
}
|
||||
else if ("".equals(containerType) || containerType.startsWith("default")) {
|
||||
else if (!StringUtils.hasLength(containerType) || containerType.startsWith("default")) {
|
||||
factoryDef.setBeanClassName("org.springframework.jms.config.DefaultJmsListenerContainerFactory");
|
||||
}
|
||||
else if (containerType.startsWith("simple")) {
|
||||
@@ -91,10 +91,10 @@ class JmsListenerContainerParser extends AbstractListenerContainerParser {
|
||||
|
||||
String containerType = containerEle.getAttribute(CONTAINER_TYPE_ATTRIBUTE);
|
||||
String containerClass = containerEle.getAttribute(CONTAINER_CLASS_ATTRIBUTE);
|
||||
if (!"".equals(containerClass)) {
|
||||
if (StringUtils.hasLength(containerClass)) {
|
||||
containerDef.setBeanClassName(containerClass);
|
||||
}
|
||||
else if ("".equals(containerType) || containerType.startsWith("default")) {
|
||||
else if (!StringUtils.hasLength(containerType) || containerType.startsWith("default")) {
|
||||
containerDef.setBeanClassName("org.springframework.jms.listener.DefaultMessageListenerContainer");
|
||||
}
|
||||
else if (containerType.startsWith("simple")) {
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -55,7 +55,7 @@ public class MutablePersistenceUnitInfo implements SmartPersistenceUnitInfo {
|
||||
|
||||
private final List<String> mappingFileNames = new LinkedList<String>();
|
||||
|
||||
private List<URL> jarFileUrls = new LinkedList<URL>();
|
||||
private final List<URL> jarFileUrls = new LinkedList<URL>();
|
||||
|
||||
private URL persistenceUnitRootUrl;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -119,7 +119,7 @@ public class SimpleNamingContext implements Context {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Static JNDI lookup: [" + name + "]");
|
||||
}
|
||||
if ("".equals(name)) {
|
||||
if (name.isEmpty()) {
|
||||
return new SimpleNamingContext(this.root, this.boundObjects, this.environment);
|
||||
}
|
||||
Object found = this.boundObjects.get(name);
|
||||
@@ -293,12 +293,12 @@ public class SimpleNamingContext implements Context {
|
||||
}
|
||||
|
||||
|
||||
private static abstract class AbstractNamingEnumeration<T> implements NamingEnumeration<T> {
|
||||
private abstract static class AbstractNamingEnumeration<T> implements NamingEnumeration<T> {
|
||||
|
||||
private Iterator<T> iterator;
|
||||
private final Iterator<T> iterator;
|
||||
|
||||
private AbstractNamingEnumeration(SimpleNamingContext context, String proot) throws NamingException {
|
||||
if (!"".equals(proot) && !proot.endsWith("/")) {
|
||||
if (!proot.isEmpty() && !proot.endsWith("/")) {
|
||||
proot = proot + "/";
|
||||
}
|
||||
String root = context.root + proot;
|
||||
@@ -353,7 +353,7 @@ public class SimpleNamingContext implements Context {
|
||||
}
|
||||
|
||||
|
||||
private static class NameClassPairEnumeration extends AbstractNamingEnumeration<NameClassPair> {
|
||||
private static final class NameClassPairEnumeration extends AbstractNamingEnumeration<NameClassPair> {
|
||||
|
||||
private NameClassPairEnumeration(SimpleNamingContext context, String root) throws NamingException {
|
||||
super(context, root);
|
||||
@@ -366,7 +366,7 @@ public class SimpleNamingContext implements Context {
|
||||
}
|
||||
|
||||
|
||||
private static class BindingEnumeration extends AbstractNamingEnumeration<Binding> {
|
||||
private static final class BindingEnumeration extends AbstractNamingEnumeration<Binding> {
|
||||
|
||||
private BindingEnumeration(SimpleNamingContext context, String root) throws NamingException {
|
||||
super(context, root);
|
||||
|
||||
+10
-20
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -64,9 +64,7 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
|
||||
/**
|
||||
* Load a Spring ApplicationContext from the supplied {@link MergedContextConfiguration}.
|
||||
*
|
||||
* <p>Implementation details:
|
||||
*
|
||||
* <ul>
|
||||
* <li>Calls {@link #validateMergedContextConfiguration(MergedContextConfiguration)}
|
||||
* to allow subclasses to validate the supplied configuration before proceeding.</li>
|
||||
@@ -97,7 +95,6 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
* <li>{@link ConfigurableApplicationContext#refresh Refreshes} the
|
||||
* context and registers a JVM shutdown hook for it.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @return a new application context
|
||||
* @see org.springframework.test.context.SmartContextLoader#loadContext(MergedContextConfiguration)
|
||||
* @see GenericApplicationContext
|
||||
@@ -107,7 +104,7 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
public final ConfigurableApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(String.format("Loading ApplicationContext for merged context configuration [%s].",
|
||||
mergedConfig));
|
||||
mergedConfig));
|
||||
}
|
||||
|
||||
validateMergedContextConfiguration(mergedConfig);
|
||||
@@ -118,6 +115,7 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
if (parent != null) {
|
||||
context.setParent(parent);
|
||||
}
|
||||
|
||||
prepareContext(context);
|
||||
prepareContext(context, mergedConfig);
|
||||
customizeBeanFactory(context.getDefaultListableBeanFactory());
|
||||
@@ -125,8 +123,10 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||
customizeContext(context);
|
||||
customizeContext(context, mergedConfig);
|
||||
|
||||
context.refresh();
|
||||
context.registerShutdownHook();
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
@@ -146,9 +146,7 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
|
||||
/**
|
||||
* Load a Spring ApplicationContext from the supplied {@code locations}.
|
||||
*
|
||||
* <p>Implementation details:
|
||||
*
|
||||
* <ul>
|
||||
* <li>Creates a {@link GenericApplicationContext} instance.</li>
|
||||
* <li>Calls {@link #prepareContext(GenericApplicationContext)} to allow for customizing the context
|
||||
@@ -166,12 +164,10 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
* <li>{@link ConfigurableApplicationContext#refresh Refreshes} the
|
||||
* context and registers a JVM shutdown hook for it.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p><b>Note</b>: this method does not provide a means to set active bean definition
|
||||
* profiles for the loaded context. See {@link #loadContext(MergedContextConfiguration)}
|
||||
* and {@link AbstractContextLoader#prepareContext(ConfigurableApplicationContext, MergedContextConfiguration)}
|
||||
* for an alternative.
|
||||
*
|
||||
* @return a new application context
|
||||
* @see org.springframework.test.context.ContextLoader#loadContext
|
||||
* @see GenericApplicationContext
|
||||
@@ -182,26 +178,28 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
public final ConfigurableApplicationContext loadContext(String... locations) throws Exception {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug(String.format("Loading ApplicationContext for locations [%s].",
|
||||
StringUtils.arrayToCommaDelimitedString(locations)));
|
||||
StringUtils.arrayToCommaDelimitedString(locations)));
|
||||
}
|
||||
|
||||
GenericApplicationContext context = new GenericApplicationContext();
|
||||
|
||||
prepareContext(context);
|
||||
customizeBeanFactory(context.getDefaultListableBeanFactory());
|
||||
createBeanDefinitionReader(context).loadBeanDefinitions(locations);
|
||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||
customizeContext(context);
|
||||
|
||||
context.refresh();
|
||||
context.registerShutdownHook();
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the {@link GenericApplicationContext} created by this {@code ContextLoader}.
|
||||
* Called <i>before</i> bean definitions are read.
|
||||
*
|
||||
* <p>The default implementation is empty. Can be overridden in subclasses to
|
||||
* customize {@code GenericApplicationContext}'s standard settings.
|
||||
*
|
||||
* @param context the context that should be prepared
|
||||
* @see #loadContext(MergedContextConfiguration)
|
||||
* @see #loadContext(String...)
|
||||
@@ -217,10 +215,8 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
/**
|
||||
* Customize the internal bean factory of the ApplicationContext created by
|
||||
* this {@code ContextLoader}.
|
||||
*
|
||||
* <p>The default implementation is empty but can be overridden in subclasses
|
||||
* to customize {@code DefaultListableBeanFactory}'s standard settings.
|
||||
*
|
||||
* @param beanFactory the bean factory created by this {@code ContextLoader}
|
||||
* @see #loadContext(MergedContextConfiguration)
|
||||
* @see #loadContext(String...)
|
||||
@@ -236,18 +232,15 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
/**
|
||||
* Load bean definitions into the supplied {@link GenericApplicationContext context}
|
||||
* from the locations or classes in the supplied {@code MergedContextConfiguration}.
|
||||
*
|
||||
* <p>The default implementation delegates to the {@link BeanDefinitionReader}
|
||||
* returned by {@link #createBeanDefinitionReader(GenericApplicationContext)} to
|
||||
* {@link BeanDefinitionReader#loadBeanDefinitions(String) load} the
|
||||
* bean definitions.
|
||||
*
|
||||
* <p>Subclasses must provide an appropriate implementation of
|
||||
* {@link #createBeanDefinitionReader(GenericApplicationContext)}. Alternatively subclasses
|
||||
* may provide a <em>no-op</em> implementation of {@code createBeanDefinitionReader()}
|
||||
* and override this method to provide a custom strategy for loading or
|
||||
* registering bean definitions.
|
||||
*
|
||||
* @param context the context into which the bean definitions should be loaded
|
||||
* @param mergedConfig the merged context configuration
|
||||
* @see #loadContext(MergedContextConfiguration)
|
||||
@@ -260,7 +253,6 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
/**
|
||||
* Factory method for creating a new {@link BeanDefinitionReader} for loading
|
||||
* bean definitions into the supplied {@link GenericApplicationContext context}.
|
||||
*
|
||||
* @param context the context for which the {@code BeanDefinitionReader}
|
||||
* should be created
|
||||
* @return a {@code BeanDefinitionReader} for the supplied context
|
||||
@@ -275,10 +267,8 @@ public abstract class AbstractGenericContextLoader extends AbstractContextLoader
|
||||
* Customize the {@link GenericApplicationContext} created by this
|
||||
* {@code ContextLoader} <i>after</i> bean definitions have been
|
||||
* loaded into the context but <i>before</i> the context is refreshed.
|
||||
*
|
||||
* <p>The default implementation is empty but can be overridden in subclasses
|
||||
* to customize the application context.
|
||||
*
|
||||
* @param context the newly created application context
|
||||
* @see #loadContext(MergedContextConfiguration)
|
||||
* @see #loadContext(String...)
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
* Copyright 2002-2020 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.
|
||||
@@ -96,7 +96,7 @@ class TxAdviceBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
|
||||
private RootBeanDefinition parseAttributeSource(Element attrEle, ParserContext parserContext) {
|
||||
List<Element> methods = DomUtils.getChildElementsByTagName(attrEle, METHOD_ELEMENT);
|
||||
ManagedMap<TypedStringValue, RuleBasedTransactionAttribute> transactionAttributeMap =
|
||||
new ManagedMap<TypedStringValue, RuleBasedTransactionAttribute>(methods.size());
|
||||
new ManagedMap<TypedStringValue, RuleBasedTransactionAttribute>(methods.size());
|
||||
transactionAttributeMap.setSource(parserContext.extractSource(attrEle));
|
||||
|
||||
for (Element methodEle : methods) {
|
||||
@@ -124,17 +124,17 @@ class TxAdviceBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
|
||||
}
|
||||
}
|
||||
if (StringUtils.hasText(readOnly)) {
|
||||
attribute.setReadOnly(Boolean.valueOf(methodEle.getAttribute(READ_ONLY_ATTRIBUTE)));
|
||||
attribute.setReadOnly(Boolean.parseBoolean(methodEle.getAttribute(READ_ONLY_ATTRIBUTE)));
|
||||
}
|
||||
|
||||
List<RollbackRuleAttribute> rollbackRules = new LinkedList<RollbackRuleAttribute>();
|
||||
if (methodEle.hasAttribute(ROLLBACK_FOR_ATTRIBUTE)) {
|
||||
String rollbackForValue = methodEle.getAttribute(ROLLBACK_FOR_ATTRIBUTE);
|
||||
addRollbackRuleAttributesTo(rollbackRules,rollbackForValue);
|
||||
addRollbackRuleAttributesTo(rollbackRules, rollbackForValue);
|
||||
}
|
||||
if (methodEle.hasAttribute(NO_ROLLBACK_FOR_ATTRIBUTE)) {
|
||||
String noRollbackForValue = methodEle.getAttribute(NO_ROLLBACK_FOR_ATTRIBUTE);
|
||||
addNoRollbackRuleAttributesTo(rollbackRules,noRollbackForValue);
|
||||
addNoRollbackRuleAttributesTo(rollbackRules, noRollbackForValue);
|
||||
}
|
||||
attribute.setRollbackRules(rollbackRules);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user