/*
 * Copyright 2002-2015 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.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.core;

/**
 * Extension of the {@link Ordered} interface, expressing a <em>priority</em>
 * ordering: order values expressed by {@code PriorityOrdered} objects
 * always apply before same order values expressed by <em>plain</em>
 * {@link Ordered} objects.
 *
 * <p>This is primarily a special-purpose interface, used for objects where
 * it is particularly important to recognize <em>prioritized</em> objects
 * first, without even obtaining the remaining objects. A typical example:
 * prioritized post-processors in a Spring
 * {@link org.springframework.context.ApplicationContext}.
 *
 * <p>Note: {@code PriorityOrdered} post-processor beans are initialized in
 * a special phase, ahead of other post-processor beans. This subtly
 * affects their autowiring behavior: they will only be autowired against
 * beans which do not require eager initialization for type matching.
 *
 * @author Juergen Hoeller
 * @since 2.5
 * @see org.springframework.beans.factory.config.PropertyOverrideConfigurer
 * @see org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
 */
public interface PriorityOrdered extends Ordered {

}

@@ -17,17 +17,17 @@
 2002-201
-5
+9
  the ori
@@ -750,33 +750,197 @@
 ng: 
-order values expressed by
+%7B@code PriorityOrdered%7D objects are always applied before%0A * %3Cem%3Eplain%3C/em%3E %7B@link Ordered%7D objects regardless of their order values.%0A *%0A * %3Cp%3EWhen sorting a set of %7B@code Ordered%7D objects,
  %7B@c
@@ -959,24 +959,27 @@
 Ordered%7D
+%0A *
  objects
 %0A * alwa
@@ -974,62 +974,175 @@
 ects
-%0A * always apply before same order values expressed by
+ and %3Cem%3Eplain%3C/em%3E %7B@code Ordered%7D objects are effectively treated as%0A * two separate subsets, with the set of %7B@code PriorityOrdered%7D objects preceding%0A * the set of
  %3Cem
@@ -1152,26 +1152,23 @@
 ain%3C/em%3E
-%0A * %7B@link
+ %7B@code
  Ordered
@@ -1176,16 +1176,75 @@
  objects
+ and with relative%0A * ordering applied within those subsets
 .%0A *%0A * 
@@ -1298,16 +1298,47 @@
 e, used 
+within the framework%0A * itself 
 for obje
@@ -1346,19 +1346,16 @@
 ts where
-%0A *
  it is p
@@ -1388,16 +1388,19 @@
 ecognize
+%0A *
  %3Cem%3Epri
@@ -1424,18 +1424,27 @@
 ects
-%0A *
  first,
+ potentially
  wit
@@ -1466,16 +1466,19 @@
 ning the
+%0A *
  remaini
@@ -1507,19 +1507,16 @@
 example:
-%0A *
  priorit
@@ -1929,16 +1929,39 @@
 Hoeller%0A
+ * @author Sam Brannen%0A
  * @sinc
@@ -2176,11 +2176,10 @@
 dered %7B%0A
-%0A
 %7D%0A

Clarify semantics of the PriorityOrdered interface