| /******************************************************************************* |
| * 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.impl.utils; |
| |
| import javax.script.Bindings; |
| import javax.script.SimpleBindings; |
| |
| import org.apache.sling.api.SlingHttpServletRequest; |
| import org.apache.sling.api.SlingHttpServletResponse; |
| import org.apache.sling.api.resource.Resource; |
| import org.apache.sling.api.scripting.SlingBindings; |
| import org.apache.sling.api.scripting.SlingScriptHelper; |
| |
| /** |
| * {@code BindingsUtils} provides helper methods for retrieving commonly used objects from a {@link javax.script.Bindings} map. |
| */ |
| public class BindingsUtils { |
| |
| /** |
| * Retrieves the {@link Resource} from a {@link Bindings} map. |
| * |
| * @param bindings the bindings map |
| * @return the {@link Resource} if found, {@code null} otherwise |
| */ |
| public static Resource getResource(Bindings bindings) { |
| return (Resource) bindings.get(SlingBindings.RESOURCE); |
| } |
| |
| /** |
| * Retrieves the {@link SlingHttpServletRequest} from a {@link Bindings} map. |
| * |
| * @param bindings the bindings maps |
| * @return the {@link SlingHttpServletRequest} if found, {@code null} otherwise |
| */ |
| public static SlingHttpServletRequest getRequest(Bindings bindings) { |
| return (SlingHttpServletRequest) bindings.get(SlingBindings.REQUEST); |
| } |
| |
| /** |
| * Retrieves the {@link SlingHttpServletResponse} from a {@link Bindings} map. |
| * |
| * @param bindings the bindings maps |
| * @return the {@link SlingHttpServletResponse} if found, {@code null} otherwise |
| */ |
| public static SlingHttpServletResponse getResponse(Bindings bindings) { |
| return (SlingHttpServletResponse) bindings.get(SlingBindings.RESPONSE); |
| } |
| |
| /** |
| * Retrieves the {@link SlingScriptHelper} from a {@link Bindings} map. |
| * |
| * @param bindings the bindings map |
| * @return the {@link SlingScriptHelper} if found, {@code null} otherwise |
| */ |
| public static SlingScriptHelper getHelper(Bindings bindings) { |
| return (SlingScriptHelper) bindings.get(SlingBindings.SLING); |
| } |
| |
| |
| /** |
| * Combine two bindings objects. Priority goes to latter bindings. |
| * |
| * @param former first map of bindings |
| * @param latter second map of bindings, which can override the fist one |
| * @return the merging of the two maps |
| */ |
| public static Bindings merge(Bindings former, Bindings latter) { |
| Bindings bindings = new SimpleBindings(); |
| bindings.putAll(former); |
| bindings.putAll(latter); |
| return bindings; |
| } |
| } |