Browse Source

optimized OrderComparator usage

conversation
Juergen Hoeller 16 years ago
parent
commit
43caa57296
  1. 3
      org.springframework.aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJProxyFactory.java
  2. 16
      org.springframework.aop/src/main/java/org/springframework/aop/aspectj/autoproxy/AspectJPrecedenceComparator.java
  3. 8
      org.springframework.aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java
  4. 3
      org.springframework.aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAdvisorAutoProxyCreator.java
  5. 6
      org.springframework.beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
  6. 9
      org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java
  7. 7
      org.springframework.transaction/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java
  8. 8
      org.springframework.web.portlet/src/main/java/org/springframework/web/portlet/DispatcherPortlet.java
  9. 8
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/DispatcherServlet.java
  10. 2
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java

3
org.springframework.aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJProxyFactory.java

@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
package org.springframework.aop.aspectj.annotation;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -121,7 +120,7 @@ public class AspectJProxyFactory extends ProxyCreatorSupport { @@ -121,7 +120,7 @@ public class AspectJProxyFactory extends ProxyCreatorSupport {
List<Advisor> advisors = this.aspectFactory.getAdvisors(instanceFactory);
advisors = AopUtils.findAdvisorsThatCanApply(advisors, getTargetClass());
AspectJProxyUtils.makeAdvisorChainAspectJCapableIfNecessary(advisors);
Collections.sort(advisors, new OrderComparator());
OrderComparator.sort(advisors);
addAdvisors(advisors);
}

16
org.springframework.aop/src/main/java/org/springframework/aop/aspectj/autoproxy/AspectJPrecedenceComparator.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2006 the original author or authors.
* Copyright 2002-2009 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,14 +55,14 @@ class AspectJPrecedenceComparator implements Comparator { @@ -55,14 +55,14 @@ class AspectJPrecedenceComparator implements Comparator {
private static final int LOWER_PRECEDENCE = 1;
private static final int NOT_COMPARABLE = 0;
private final Comparator advisorComparator;
private final Comparator<? super Advisor> advisorComparator;
/**
* Create a default AspectJPrecedenceComparator.
*/
public AspectJPrecedenceComparator() {
this.advisorComparator = new OrderComparator();
this.advisorComparator = OrderComparator.INSTANCE;
}
/**
@ -70,7 +70,7 @@ class AspectJPrecedenceComparator implements Comparator { @@ -70,7 +70,7 @@ class AspectJPrecedenceComparator implements Comparator {
* for comparing {@link org.springframework.aop.Advisor} instances.
* @param advisorComparator the Comparator to use for Advisors
*/
public AspectJPrecedenceComparator(Comparator advisorComparator) {
public AspectJPrecedenceComparator(Comparator<? super Advisor> advisorComparator) {
Assert.notNull(advisorComparator, "Advisor comparator must not be null");
this.advisorComparator = advisorComparator;
}
@ -138,12 +138,8 @@ class AspectJPrecedenceComparator implements Comparator { @@ -138,12 +138,8 @@ class AspectJPrecedenceComparator implements Comparator {
}
private boolean declaredInSameAspect(Advisor advisor1, Advisor advisor2) {
if (!(hasAspectName(advisor1) && hasAspectName(advisor2))) {
return false;
}
else {
return getAspectName(advisor1).equals(getAspectName(advisor2));
}
return (hasAspectName(advisor1) && hasAspectName(advisor2) &&
getAspectName(advisor1).equals(getAspectName(advisor2)));
}
private boolean hasAspectName(Advisor anAdvisor) {

8
org.springframework.aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2009 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.
@ -21,9 +21,7 @@ import java.io.ObjectInputStream; @@ -21,9 +21,7 @@ import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@ -474,7 +472,7 @@ public class ProxyFactoryBean extends ProxyCreatorSupport @@ -474,7 +472,7 @@ public class ProxyFactoryBean extends ProxyCreatorSupport
* We need to do this every time a new prototype instance is returned,
* to return distinct instances of prototype Advisors and Advices.
*/
private List freshAdvisorChain() {
private List<Advisor> freshAdvisorChain() {
Advisor[] advisors = getAdvisors();
List<Advisor> freshAdvisors = new ArrayList<Advisor>(advisors.length);
for (Advisor advisor : advisors) {
@ -521,7 +519,7 @@ public class ProxyFactoryBean extends ProxyCreatorSupport @@ -521,7 +519,7 @@ public class ProxyFactoryBean extends ProxyCreatorSupport
beans.add(bean);
names.put(bean, name);
}
Collections.sort(beans, new OrderComparator());
OrderComparator.sort(beans);
for (Object bean : beans) {
String name = names.get(bean);
if (name.startsWith(prefix)) {

3
org.springframework.aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAdvisorAutoProxyCreator.java

@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
package org.springframework.aop.framework.autoproxy;
import java.util.Collections;
import java.util.List;
import org.springframework.aop.Advisor;
@ -141,7 +140,7 @@ public abstract class AbstractAdvisorAutoProxyCreator extends AbstractAutoProxyC @@ -141,7 +140,7 @@ public abstract class AbstractAdvisorAutoProxyCreator extends AbstractAutoProxyC
* @see org.springframework.core.OrderComparator
*/
protected List<Advisor> sortAdvisors(List<Advisor> advisors) {
Collections.sort(advisors, new OrderComparator());
OrderComparator.sort(advisors);
return advisors;
}

6
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2009 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.
@ -522,8 +522,8 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp @@ -522,8 +522,8 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
aliases.add(fullBeanName);
}
String[] retrievedAliases = super.getAliases(beanName);
for (String retrievedAliase : retrievedAliases) {
String alias = (factoryPrefix ? FACTORY_BEAN_PREFIX : "") + retrievedAliase;
for (String retrievedAlias : retrievedAliases) {
String alias = (factoryPrefix ? FACTORY_BEAN_PREFIX : "") + retrievedAlias;
if (!alias.equals(name)) {
aliases.add(alias);
}

9
org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java

@ -19,7 +19,6 @@ package org.springframework.context.support; @@ -19,7 +19,6 @@ package org.springframework.context.support;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
@ -515,7 +514,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader @@ -515,7 +514,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
}
// First, invoke the BeanFactoryPostProcessors that implement PriorityOrdered.
Collections.sort(priorityOrderedPostProcessors, new OrderComparator());
OrderComparator.sort(priorityOrderedPostProcessors);
invokeBeanFactoryPostProcessors(beanFactory, priorityOrderedPostProcessors);
// Next, invoke the BeanFactoryPostProcessors that implement Ordered.
@ -523,7 +522,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader @@ -523,7 +522,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
for (String postProcessorName : orderedPostProcessorNames) {
orderedPostProcessors.add(getBean(postProcessorName, BeanFactoryPostProcessor.class));
}
Collections.sort(orderedPostProcessors, new OrderComparator());
OrderComparator.sort(orderedPostProcessors);
invokeBeanFactoryPostProcessors(beanFactory, orderedPostProcessors);
// Finally, invoke all other BeanFactoryPostProcessors.
@ -577,7 +576,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader @@ -577,7 +576,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
}
// First, register the BeanPostProcessors that implement PriorityOrdered.
Collections.sort(priorityOrderedPostProcessors, new OrderComparator());
OrderComparator.sort(priorityOrderedPostProcessors);
registerBeanPostProcessors(beanFactory, priorityOrderedPostProcessors);
// Next, register the BeanPostProcessors that implement Ordered.
@ -585,7 +584,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader @@ -585,7 +584,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader
for (String postProcessorName : orderedPostProcessorNames) {
orderedPostProcessors.add(getBean(postProcessorName, BeanPostProcessor.class));
}
Collections.sort(orderedPostProcessors, new OrderComparator());
OrderComparator.sort(orderedPostProcessors);
registerBeanPostProcessors(beanFactory, orderedPostProcessors);
// Finally, register all other BeanPostProcessors.

7
org.springframework.transaction/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2009 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.
@ -18,7 +18,6 @@ package org.springframework.transaction.support; @@ -18,7 +18,6 @@ package org.springframework.transaction.support;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@ -77,8 +76,6 @@ public abstract class TransactionSynchronizationManager { @@ -77,8 +76,6 @@ public abstract class TransactionSynchronizationManager {
private static final Log logger = LogFactory.getLog(TransactionSynchronizationManager.class);
private static final Comparator<Object> synchronizationComparator = new OrderComparator();
private static final ThreadLocal<Map<Object, Object>> resources =
new NamedThreadLocal<Map<Object, Object>>("Transactional resources");
@ -295,7 +292,7 @@ public abstract class TransactionSynchronizationManager { @@ -295,7 +292,7 @@ public abstract class TransactionSynchronizationManager {
}
List<TransactionSynchronization> synchs = synchronizations.get();
// Sort lazily here, not in registerSynchronization.
Collections.sort(synchs, synchronizationComparator);
OrderComparator.sort(synchs);
// Return unmodifiable snapshot, to avoid ConcurrentModificationExceptions
// while iterating and invoking synchronization callbacks that in turn
// might register further synchronizations.

8
org.springframework.web.portlet/src/main/java/org/springframework/web/portlet/DispatcherPortlet.java

@ -378,7 +378,7 @@ public class DispatcherPortlet extends FrameworkPortlet { @@ -378,7 +378,7 @@ public class DispatcherPortlet extends FrameworkPortlet {
if (!matchingBeans.isEmpty()) {
this.handlerMappings = new ArrayList<HandlerMapping>(matchingBeans.values());
// We keep HandlerMappings in sorted order.
Collections.sort(this.handlerMappings, new OrderComparator());
OrderComparator.sort(this.handlerMappings);
}
}
else {
@ -416,7 +416,7 @@ public class DispatcherPortlet extends FrameworkPortlet { @@ -416,7 +416,7 @@ public class DispatcherPortlet extends FrameworkPortlet {
if (!matchingBeans.isEmpty()) {
this.handlerAdapters = new ArrayList<HandlerAdapter>(matchingBeans.values());
// We keep HandlerAdapters in sorted order.
Collections.sort(this.handlerAdapters, new OrderComparator());
OrderComparator.sort(this.handlerAdapters);
}
}
else {
@ -454,7 +454,7 @@ public class DispatcherPortlet extends FrameworkPortlet { @@ -454,7 +454,7 @@ public class DispatcherPortlet extends FrameworkPortlet {
if (!matchingBeans.isEmpty()) {
this.handlerExceptionResolvers = new ArrayList<HandlerExceptionResolver>(matchingBeans.values());
// We keep HandlerExceptionResolvers in sorted order.
Collections.sort(this.handlerExceptionResolvers, new OrderComparator());
OrderComparator.sort(this.handlerExceptionResolvers);
}
}
else {
@ -493,7 +493,7 @@ public class DispatcherPortlet extends FrameworkPortlet { @@ -493,7 +493,7 @@ public class DispatcherPortlet extends FrameworkPortlet {
if (!matchingBeans.isEmpty()) {
this.viewResolvers = new ArrayList<ViewResolver>(matchingBeans.values());
// We keep ViewResolvers in sorted order.
Collections.sort(this.viewResolvers, new OrderComparator());
OrderComparator.sort(this.viewResolvers);
}
}
else {

8
org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

@ -471,7 +471,7 @@ public class DispatcherServlet extends FrameworkServlet { @@ -471,7 +471,7 @@ public class DispatcherServlet extends FrameworkServlet {
if (!matchingBeans.isEmpty()) {
this.handlerMappings = new ArrayList<HandlerMapping>(matchingBeans.values());
// We keep HandlerMappings in sorted order.
Collections.sort(this.handlerMappings, new OrderComparator());
OrderComparator.sort(this.handlerMappings);
}
}
else {
@ -509,7 +509,7 @@ public class DispatcherServlet extends FrameworkServlet { @@ -509,7 +509,7 @@ public class DispatcherServlet extends FrameworkServlet {
if (!matchingBeans.isEmpty()) {
this.handlerAdapters = new ArrayList<HandlerAdapter>(matchingBeans.values());
// We keep HandlerAdapters in sorted order.
Collections.sort(this.handlerAdapters, new OrderComparator());
OrderComparator.sort(this.handlerAdapters);
}
}
else {
@ -547,7 +547,7 @@ public class DispatcherServlet extends FrameworkServlet { @@ -547,7 +547,7 @@ public class DispatcherServlet extends FrameworkServlet {
if (!matchingBeans.isEmpty()) {
this.handlerExceptionResolvers = new ArrayList<HandlerExceptionResolver>(matchingBeans.values());
// We keep HandlerExceptionResolvers in sorted order.
Collections.sort(this.handlerExceptionResolvers, new OrderComparator());
OrderComparator.sort(this.handlerExceptionResolvers);
}
}
else {
@ -609,7 +609,7 @@ public class DispatcherServlet extends FrameworkServlet { @@ -609,7 +609,7 @@ public class DispatcherServlet extends FrameworkServlet {
if (!matchingBeans.isEmpty()) {
this.viewResolvers = new ArrayList<ViewResolver>(matchingBeans.values());
// We keep ViewResolvers in sorted order.
Collections.sort(this.viewResolvers, new OrderComparator());
OrderComparator.sort(this.viewResolvers);
}
}
else {

2
org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java

@ -156,7 +156,7 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport @@ -156,7 +156,7 @@ public class ContentNegotiatingViewResolver extends WebApplicationObjectSupport
logger.warn("Did not find any ViewResolvers to delegate to; please configure them using the " +
"'viewResolvers' property on the ContentNegotiatingViewResolver");
}
Collections.sort(this.viewResolvers, new OrderComparator());
OrderComparator.sort(this.viewResolvers);
}
/**

Loading…
Cancel
Save