类org.springframework.core.OrderComparator源码实例Demo

下面列出了怎么用org.springframework.core.OrderComparator的API类实例代码及写法,或者点击链接到github查看源代码。

@Test
public void testMultiplePerTargetAspectsWithOrderAnnotation() throws SecurityException, NoSuchMethodException {
	TestBean target = new TestBean();
	int realAge = 65;
	target.setAge(realAge);

	List<Advisor> advisors = new LinkedList<>();
	PerTargetAspectWithOrderAnnotation10 aspect1 = new PerTargetAspectWithOrderAnnotation10();
	aspect1.count = 100;
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect1, "someBean1")));
	PerTargetAspectWithOrderAnnotation5 aspect2 = new PerTargetAspectWithOrderAnnotation5();
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect2, "someBean2")));
	Collections.sort(advisors, new OrderComparator());

	TestBean itb = (TestBean) createProxy(target, advisors, TestBean.class);
	assertEquals("Around advice must NOT apply", realAge, itb.getAge());

	// Hit the method in the per clause to instantiate the aspect
	itb.getSpouse();

	assertEquals("Around advice must apply", 0, itb.getAge());
	assertEquals("Around advice must apply", 1, itb.getAge());
}
 
@Test
public void testMultiplePerTargetAspectsWithOrderAnnotation() throws SecurityException, NoSuchMethodException {
	TestBean target = new TestBean();
	int realAge = 65;
	target.setAge(realAge);

	List<Advisor> advisors = new LinkedList<>();
	PerTargetAspectWithOrderAnnotation10 aspect1 = new PerTargetAspectWithOrderAnnotation10();
	aspect1.count = 100;
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect1, "someBean1")));
	PerTargetAspectWithOrderAnnotation5 aspect2 = new PerTargetAspectWithOrderAnnotation5();
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect2, "someBean2")));
	Collections.sort(advisors, new OrderComparator());

	TestBean itb = (TestBean) createProxy(target, advisors, TestBean.class);
	assertEquals("Around advice must NOT apply", realAge, itb.getAge());

	// Hit the method in the per clause to instantiate the aspect
	itb.getSpouse();

	assertEquals("Around advice must apply", 0, itb.getAge());
	assertEquals("Around advice must apply", 1, itb.getAge());
}
 
@Test
public void testMultiplePerTargetAspectsWithOrderAnnotation() throws SecurityException, NoSuchMethodException {
	TestBean target = new TestBean();
	int realAge = 65;
	target.setAge(realAge);

	List<Advisor> advisors = new LinkedList<Advisor>();
	PerTargetAspectWithOrderAnnotation10 aspect1 = new PerTargetAspectWithOrderAnnotation10();
	aspect1.count = 100;
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect1, "someBean1")));
	PerTargetAspectWithOrderAnnotation5 aspect2 = new PerTargetAspectWithOrderAnnotation5();
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect2, "someBean2")));
	Collections.sort(advisors, new OrderComparator());

	TestBean itb = (TestBean) createProxy(target, advisors, TestBean.class);
	assertEquals("Around advice must NOT apply", realAge, itb.getAge());

	// Hit the method in the per clause to instantiate the aspect
	itb.getSpouse();

	assertEquals("Around advice must apply", 0, itb.getAge());
	assertEquals("Around advice must apply", 1, itb.getAge());
}
 
源代码4 项目: dhis2-core   文件: AbstractNode.java
@Override
public List<Node> getChildren()
{
    if ( sortedChildren == null )
    {
        final int size = children == null ? 0 : children.size();

        if ( size > 1 )
        {
            List<Node> clone = Lists.newArrayList( children );
            Collections.sort( clone, OrderComparator.INSTANCE );
            sortedChildren = ImmutableList.copyOf( clone );
        }
        else if ( size == 1 )
        {
            sortedChildren = ImmutableList.of( children.get( 0 ) );
        }
        else
        {
            sortedChildren = ImmutableList.of();
        }
    }

    return sortedChildren;
}
 
@Test
public void testMultiplePerTargetAspects() throws SecurityException, NoSuchMethodException {
	TestBean target = new TestBean();
	int realAge = 65;
	target.setAge(realAge);

	List<Advisor> advisors = new LinkedList<>();
	PerTargetAspect aspect1 = new PerTargetAspect();
	aspect1.count = 100;
	aspect1.setOrder(10);
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect1, "someBean1")));
	PerTargetAspect aspect2 = new PerTargetAspect();
	aspect2.setOrder(5);
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect2, "someBean2")));
	Collections.sort(advisors, new OrderComparator());

	TestBean itb = (TestBean) createProxy(target, advisors, TestBean.class);
	assertEquals("Around advice must NOT apply", realAge, itb.getAge());

	// Hit the method in the per clause to instantiate the aspect
	itb.getSpouse();

	assertEquals("Around advice must apply", 0, itb.getAge());
	assertEquals("Around advice must apply", 1, itb.getAge());
}
 
/**
 * Register member (nested) classes that happen to be configuration classes themselves.
 */
private void processMemberClasses(ConfigurationClass configClass, SourceClass sourceClass) throws IOException {
	Collection<SourceClass> memberClasses = sourceClass.getMemberClasses();
	if (!memberClasses.isEmpty()) {
		List<SourceClass> candidates = new ArrayList<>(memberClasses.size());
		for (SourceClass memberClass : memberClasses) {
			if (ConfigurationClassUtils.isConfigurationCandidate(memberClass.getMetadata()) &&
					!memberClass.getMetadata().getClassName().equals(configClass.getMetadata().getClassName())) {
				candidates.add(memberClass);
			}
		}
		OrderComparator.sort(candidates);
		for (SourceClass candidate : candidates) {
			if (this.importStack.contains(configClass)) {
				this.problemReporter.error(new CircularImportProblem(configClass, this.importStack));
			}
			else {
				this.importStack.push(configClass);
				try {
					processConfigurationClass(candidate.asConfigClass(configClass));
				}
				finally {
					this.importStack.pop();
				}
			}
		}
	}
}
 
private static void sortPostProcessors(List<?> postProcessors, ConfigurableListableBeanFactory beanFactory) {
	Comparator<Object> comparatorToUse = null;
	if (beanFactory instanceof DefaultListableBeanFactory) {
		comparatorToUse = ((DefaultListableBeanFactory) beanFactory).getDependencyComparator();
	}
	if (comparatorToUse == null) {
		comparatorToUse = OrderComparator.INSTANCE;
	}
	postProcessors.sort(comparatorToUse);
}
 
@Nullable
private Comparator<Object> adaptDependencyComparator(Map<String, ?> matchingBeans) {
	Comparator<Object> comparator = getDependencyComparator();
	if (comparator instanceof OrderComparator) {
		return ((OrderComparator) comparator).withSourceProvider(
				createFactoryAwareOrderSourceProvider(matchingBeans));
	}
	else {
		return comparator;
	}
}
 
源代码9 项目: Milkomeda   文件: SpringMvcPolyfill.java
/**
 * 动态添加拦截器
 * @param interceptor       拦截器
 * @param order             排序
 * @param includeURLs       需要拦截的URL
 * @param excludeURLs       排除拦截的URL
 * @param handlerMapping    AbstractHandlerMapping实现类
 */
@SuppressWarnings("all")
public static void addDynamicInterceptor(HandlerInterceptor interceptor, int order, List<String> includeURLs, List<String> excludeURLs, AbstractHandlerMapping handlerMapping) {
    String[] include = StringUtils.toStringArray(includeURLs);
    String[] exclude = StringUtils.toStringArray(excludeURLs);
    // HandlerInterceptor -> MappedInterceptor -> HydrogenMappedInterceptor
    HydrogenMappedInterceptor hmi = new HydrogenMappedInterceptor(new MappedInterceptor(include, exclude, interceptor));
    // 内部的处理流程会设置,然而不是最终采纳的拦截器列表
    // handlerMapping.setInterceptors(mappedInterceptor);
    hmi.setOrder(order);
    try {
        findAdaptedInterceptorsField(handlerMapping);
        // 添加到可采纳的拦截器列表,让拦截器处理器Chain流程获取得到这个拦截器
        List<HandlerInterceptor> handlerInterceptors = (List<HandlerInterceptor>) adaptedInterceptorsField.get(handlerMapping);
        // 过滤添加过的拦截器
        boolean mapped = handlerInterceptors.stream().anyMatch(itor -> {
            // 只判断HydrogenMappedInterceptor拦截器类型
            if (itor instanceof HydrogenMappedInterceptor) {
                return itor.equals(hmi);
            }
            return false;
        });
        if (mapped) {
            return;
        }
        handlerInterceptors.add(hmi);
        // 仿Spring MVC源码对拦截器排序
        handlerInterceptors = handlerInterceptors.stream()
                .sorted(OrderComparator.INSTANCE.withSourceProvider(itor -> {
                    if (itor instanceof HydrogenMappedInterceptor) {
                        return (Ordered) ((HydrogenMappedInterceptor) itor)::getOrder;
                    }
                    return null;
                })).collect(Collectors.toList());
        adaptedInterceptorsField.set(handlerMapping, handlerInterceptors);
    } catch (Exception e) {
        log.error("SpringMvcPolyfill invoke AbstractHandlerMapping.adaptedInterceptors error with msg: {}",  e.getMessage(), e);
    }
}
 
@Test
public void testMultiplePerTargetAspects() throws SecurityException, NoSuchMethodException {
	TestBean target = new TestBean();
	int realAge = 65;
	target.setAge(realAge);

	List<Advisor> advisors = new LinkedList<>();
	PerTargetAspect aspect1 = new PerTargetAspect();
	aspect1.count = 100;
	aspect1.setOrder(10);
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect1, "someBean1")));
	PerTargetAspect aspect2 = new PerTargetAspect();
	aspect2.setOrder(5);
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect2, "someBean2")));
	Collections.sort(advisors, new OrderComparator());

	TestBean itb = (TestBean) createProxy(target, advisors, TestBean.class);
	assertEquals("Around advice must NOT apply", realAge, itb.getAge());

	// Hit the method in the per clause to instantiate the aspect
	itb.getSpouse();

	assertEquals("Around advice must apply", 0, itb.getAge());
	assertEquals("Around advice must apply", 1, itb.getAge());
}
 
/**
 * Register member (nested) classes that happen to be configuration classes themselves.
 */
private void processMemberClasses(ConfigurationClass configClass, SourceClass sourceClass) throws IOException {
	Collection<SourceClass> memberClasses = sourceClass.getMemberClasses();
	if (!memberClasses.isEmpty()) {
		List<SourceClass> candidates = new ArrayList<>(memberClasses.size());
		for (SourceClass memberClass : memberClasses) {
			if (ConfigurationClassUtils.isConfigurationCandidate(memberClass.getMetadata()) &&
					!memberClass.getMetadata().getClassName().equals(configClass.getMetadata().getClassName())) {
				candidates.add(memberClass);
			}
		}
		OrderComparator.sort(candidates);
		for (SourceClass candidate : candidates) {
			if (this.importStack.contains(configClass)) {
				this.problemReporter.error(new CircularImportProblem(configClass, this.importStack));
			}
			else {
				this.importStack.push(configClass);
				try {
					processConfigurationClass(candidate.asConfigClass(configClass));
				}
				finally {
					this.importStack.pop();
				}
			}
		}
	}
}
 
private static void sortPostProcessors(List<?> postProcessors, ConfigurableListableBeanFactory beanFactory) {
	Comparator<Object> comparatorToUse = null;
	if (beanFactory instanceof DefaultListableBeanFactory) {
		comparatorToUse = ((DefaultListableBeanFactory) beanFactory).getDependencyComparator();
	}
	if (comparatorToUse == null) {
		comparatorToUse = OrderComparator.INSTANCE;
	}
	postProcessors.sort(comparatorToUse);
}
 
@Nullable
private Comparator<Object> adaptDependencyComparator(Map<String, ?> matchingBeans) {
	Comparator<Object> comparator = getDependencyComparator();
	if (comparator instanceof OrderComparator) {
		return ((OrderComparator) comparator).withSourceProvider(
				createFactoryAwareOrderSourceProvider(matchingBeans));
	}
	else {
		return comparator;
	}
}
 
@Test
public void predicateFilterAfterRegistryFilter() {
	SocketAcceptorFilter predicateFilter = new SocketAcceptorPredicateFilter(
			Collections.emptyList());
	SocketAcceptorFilter registryFilter = new RoutingTableSocketAcceptorFilter(
			mock(RoutingTable.class));
	List<SocketAcceptorFilter> filters = Arrays.asList(predicateFilter,
			registryFilter);
	OrderComparator.sort(filters);

	assertThat(filters).containsExactly(registryFilter, predicateFilter);
}
 
源代码15 项目: spring-cloud-gray   文件: SimpleGrayTrackHolder.java
private void initGrayInfoTrackers(List<GrayInfoTracker<? extends GrayTrackInfo, ?>> trackers) {
    if (trackers == null) {
        return;
    }
    OrderComparator.sort(trackers);
    this.trackers = trackers;
}
 
源代码16 项目: spring-cloud-gray   文件: AbstractGrayManager.java
private void putTypeAllTo(Map<String, List<RequestInterceptor>> requestInterceptorMap, List<RequestInterceptor> all) {
    if (all.isEmpty()) {
        return;
    }
    requestInterceptorMap.values().forEach(list -> {
        list.addAll(all);
        OrderComparator.sort(list);
    });
}
 
源代码17 项目: spring-init   文件: FunctionalInstallerListener.java
private void apply(GenericApplicationContext context) {
	List<ApplicationContextInitializer<GenericApplicationContext>> initializers = new ArrayList<>();
	for (ApplicationContextInitializer<GenericApplicationContext> result : this.initializers) {
		initializers.add(result);
	}
	OrderComparator.sort(initializers);
	if (logger.isDebugEnabled()) {
		logger.debug("Applying initializers: " + initializers);
	}
	for (ApplicationContextInitializer<GenericApplicationContext> initializer : initializers) {
		initializer.initialize(context);
	}
}
 
源代码18 项目: swagger-brake   文件: ApiFilenameCheckerFactory.java
/**
 * Creates an {@link ApiFileNameChecker} instance based on the provided configuredApiFilename argument.
 * @param configuredApiFilename the filename that is used to construct a proper instance f {@link ApiFileNameChecker}
 * @return the {@link ApiFileNameChecker}
 */
public ApiFileNameChecker create(String configuredApiFilename) {
    Collection<ApiFileNameChecker> checkers = new TreeSet<>(OrderComparator.INSTANCE);
    checkers.add(new SwaggerApiFileNameChecker());
    if (StringUtils.isNotBlank(configuredApiFilename)) {
        checkers.add(new ConfigurableApiFileNameChecker(configuredApiFilename));
    }
    return new ApiFileNameCheckerChain(checkers);
}
 
源代码19 项目: lams   文件: PostProcessorRegistrationDelegate.java
private static void sortPostProcessors(List<?> postProcessors, ConfigurableListableBeanFactory beanFactory) {
	Comparator<Object> comparatorToUse = null;
	if (beanFactory instanceof DefaultListableBeanFactory) {
		comparatorToUse = ((DefaultListableBeanFactory) beanFactory).getDependencyComparator();
	}
	if (comparatorToUse == null) {
		comparatorToUse = OrderComparator.INSTANCE;
	}
	Collections.sort(postProcessors, comparatorToUse);
}
 
源代码20 项目: lams   文件: DefaultListableBeanFactory.java
private Comparator<Object> adaptDependencyComparator(Map<String, Object> matchingBeans) {
	Comparator<Object> comparator = getDependencyComparator();
	if (comparator instanceof OrderComparator) {
		return ((OrderComparator) comparator).withSourceProvider(
				createFactoryAwareOrderSourceProvider(matchingBeans));
	}
	else {
		return comparator;
	}
}
 
@Test
public void testMultiplePerTargetAspects() throws SecurityException, NoSuchMethodException {
	TestBean target = new TestBean();
	int realAge = 65;
	target.setAge(realAge);

	List<Advisor> advisors = new LinkedList<Advisor>();
	PerTargetAspect aspect1 = new PerTargetAspect();
	aspect1.count = 100;
	aspect1.setOrder(10);
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect1, "someBean1")));
	PerTargetAspect aspect2 = new PerTargetAspect();
	aspect2.setOrder(5);
	advisors.addAll(
			getFixture().getAdvisors(new SingletonMetadataAwareAspectInstanceFactory(aspect2, "someBean2")));
	Collections.sort(advisors, new OrderComparator());

	TestBean itb = (TestBean) createProxy(target, advisors, TestBean.class);
	assertEquals("Around advice must NOT apply", realAge, itb.getAge());

	// Hit the method in the per clause to instantiate the aspect
	itb.getSpouse();

	assertEquals("Around advice must apply", 0, itb.getAge());
	assertEquals("Around advice must apply", 1, itb.getAge());
}
 
private static void sortPostProcessors(ConfigurableListableBeanFactory beanFactory, List<?> postProcessors) {
	Comparator<Object> comparatorToUse = null;
	if (beanFactory instanceof DefaultListableBeanFactory) {
		comparatorToUse = ((DefaultListableBeanFactory) beanFactory).getDependencyComparator();
	}
	if (comparatorToUse == null) {
		comparatorToUse = OrderComparator.INSTANCE;
	}
	Collections.sort(postProcessors, comparatorToUse);
}
 
private Comparator<Object> adaptDependencyComparator(Map<String, Object> matchingBeans) {
	Comparator<Object> comparator = getDependencyComparator();
	if (comparator instanceof OrderComparator) {
		return ((OrderComparator) comparator).withSourceProvider(
				createFactoryAwareOrderSourceProvider(matchingBeans));
	}
	else {
		return comparator;
	}
}
 
/**
 * This method retrieves the currently configured {@link IProcessor} instances
 * from our superclass, and returns them in a sorted order.
 */
@Override
protected List<IProcessor> getProcessors() {
	List<IProcessor> result = new ArrayList<IProcessor>(super.getProcessors());
	result.sort(new OrderComparator());
	return result;
}
 
源代码25 项目: cuba   文件: AppContext.java
static void startContext() {
    if (started)
        return;

    started = true;
    listeners.sort(new OrderComparator());
    for (Listener listener : listeners) {
        listener.applicationStarted();
    }

    Events events = (Events) getApplicationContext().getBean(Events.NAME);
    events.publish(new AppContextStartedEvent(context));

    listenersNotified = true;
}
 
源代码26 项目: cuba   文件: PersistenceImplSupport.java
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    Map<String, BeforeCommitTransactionListener> beforeCommitMap = applicationContext.getBeansOfType(BeforeCommitTransactionListener.class);
    beforeCommitTxListeners = new ArrayList<>(beforeCommitMap.values());
    beforeCommitTxListeners.sort(new OrderComparator());

    Map<String, AfterCompleteTransactionListener> afterCompleteMap = applicationContext.getBeansOfType(AfterCompleteTransactionListener.class);
    afterCompleteTxListeners = new ArrayList<>(afterCompleteMap.values());
    afterCompleteTxListeners.sort(new OrderComparator());
}
 
源代码27 项目: dhis2-core   文件: DefaultSchemaService.java
@Override
public List<Schema> getSortedSchemas()
{
    List<Schema> schemas = Lists.newArrayList( classSchemaMap.values() );
    schemas.sort( OrderComparator.INSTANCE );

    return schemas;
}
 
源代码28 项目: dhis2-core   文件: DefaultSchemaService.java
@Override
public List<Schema> getMetadataSchemas()
{
    List<Schema> schemas = getSchemas();

    schemas.removeIf( schema -> !schema.isMetadata() );
    schemas.sort( OrderComparator.INSTANCE );

    return schemas;
}
 
源代码29 项目: onetwo   文件: ExtRequestMappingHandlerMapping.java
@Override
protected void detectMappedInterceptors(List<HandlerInterceptor> mappedInterceptors) {
	super.detectMappedInterceptors(mappedInterceptors);
	CUtils.stripNull(mappedInterceptors);
	Collections.sort(mappedInterceptors, new Comparator<HandlerInterceptor>() {

		@Override
		public int compare(HandlerInterceptor o1, HandlerInterceptor o2) {
			return OrderComparator.INSTANCE.compare(o1, o2);
		}
		
	});
}
 
源代码30 项目: sakai   文件: ScoringServiceImpl.java
public void register(ScoringAgent agent, boolean isDefault) {
    if (agent == null) {
        throw new RuntimeException("can't register a null agent");
    }
    if (agent.getAgentId() == null) {
        throw new RuntimeException("the scoring agentId is null");
    }
    scoringAgentMap.put(agent.getAgentId(), agent);
    sortedScoringAgents = new ArrayList<ScoringAgent>(scoringAgentMap.values());
    Collections.sort(sortedScoringAgents, new OrderComparator());

    if (isDefault) {
        defaultScoringAgent = agent;
    }
}
 
 类所在包
 类方法
 同包方法