/*******************************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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
 *
 *   http://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.apache.sling.scripting.sightly.use;

import javax.script.Bindings;

import org.apache.sling.scripting.sightly.render.RenderContext;

import aQute.bnd.annotation.ConsumerType;

/**
 * Provides instances for the use API. Providers are tried in the order
 * of their priority until one is found which can provide a non-null instance
 */
@ConsumerType
public interface UseProvider {

    /**
     * Provide an instance based on the given identifier
     * @param identifier the identifier of the dependency
     * @param renderContext the current rendering context
     * @param arguments Specific arguments provided by the use plugin
     * @return a container with the instance that corresponds to the identifier. If the identifier cannot be
     * handled by this provider, a failed outcome is returned
     */
    ProviderOutcome provide(String identifier, RenderContext renderContext, Bindings arguments);
}

@@ -1220,19 +1220,16 @@
 he order
-%0A *
  of thei
@@ -1233,17 +1233,27 @@
 heir
- priority
+%0A * service ranking
  unt
@@ -1306,16 +1306,360 @@
 nstance%0A
+ * %3Cp%3E%0A * %7B@code UseProvider%7D services are ranked according to the OSGi service%0A * registration propertiy %7B@code service.ranking%7D which is an integer value.%0A * %7B@code UseProvider%7D servies with lower ranking values are tried before%0A * services with higher ranking values. The default value for the ranking if the%0A * property is missing is zero.%0A
  */%0A@Con

Add JavaDoc indicating the use of service.ranking service property to order UseProvider services