SLING-3038 - take context service property into account for BindingsValuesProvider services
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1520565 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index f2b1726..c3de71d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@
javax.script
</Import-Package>
<Export-Package>
- org.apache.sling.scripting.api;version=2.1.0
+ org.apache.sling.scripting.api;version=2.2.0
</Export-Package>
</instructions>
</configuration>
diff --git a/src/main/java/org/apache/sling/scripting/api/BindingsValuesProvidersByContext.java b/src/main/java/org/apache/sling/scripting/api/BindingsValuesProvidersByContext.java
new file mode 100644
index 0000000..ece2cc6
--- /dev/null
+++ b/src/main/java/org/apache/sling/scripting/api/BindingsValuesProvidersByContext.java
@@ -0,0 +1,58 @@
+/*
+ * 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.api;
+
+import java.util.Collection;
+
+import javax.script.ScriptEngineFactory;
+
+import org.apache.sling.scripting.api.BindingsValuesProvider;
+
+/** Provides {@link BindingsValuesProvider} for specific contexts, based on
+ * their "context" service property.
+ * */
+public interface BindingsValuesProvidersByContext {
+
+ /** The name of the multi-value service property that defines the context(s) to which
+ * a BindingsValuesProvider applies.
+ */
+ String CONTEXT = "context";
+
+ /** The default value of the CONTEXT service property, used for compatibility with
+ * previous versions of this bundle that didn't require it.
+ */
+ String DEFAULT_CONTEXT = "request";
+
+ /** Retrieve the current {@link BindingsValuesProvider} for
+ * the supplied ScriptEngineFactory and context.
+ *
+ * @param scriptEngineFactory metadata of the ScriptEngine that's being used
+ * @param context Only BindingsValuesProviders that have this value in their CONTEXT
+ * service property are considered. For backwards compatibility, BindingsValuesProviders
+ * which do not have a CONTEXT service property are considered to have CONTEXT=request.
+ * @return The returned Collection of BindingsValuesProvider is sorted
+ * so as to give preference to more specific BindingsValuesProvider
+ * over those that match a compatible.javax.script.name ScriptEngineFactory property,
+ * for example, in the same way that the SlingScriptAdapterFactory did before
+ * this service was implemented.
+ */
+ Collection<BindingsValuesProvider> getBindingsValuesProviders(
+ ScriptEngineFactory scriptEngineFactory,
+ String context);
+}