| /* |
| * 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.jsp.taglib; |
| |
| import javax.jcr.Node; |
| import javax.servlet.jsp.tagext.TagSupport; |
| |
| import org.apache.sling.api.resource.Resource; |
| import org.apache.sling.api.scripting.SlingBindings; |
| import org.apache.sling.api.scripting.SlingScriptHelper; |
| |
| /** |
| */ |
| public class DefineObjectsTag extends TagSupport { |
| |
| private static final long serialVersionUID = -1858674361149195892L; |
| |
| /** |
| * Default name for the scripting variable referencing the |
| * <code>SlingHttpServletRequest</code> object (value is "slingRequest"). |
| */ |
| public static final String DEFAULT_REQUEST_NAME = "slingRequest"; |
| |
| /** |
| * Default name for the scripting variable referencing the |
| * <code>SlingHttpServletResponse</code> object (value is |
| * "slingResponse"). |
| */ |
| public static final String DEFAULT_RESPONSE_NAME = "slingResponse"; |
| |
| /** |
| * Default name for the scripting variable referencing the current |
| * <code>Resource</code> object (value is "resource"). |
| */ |
| public static final String DEFAULT_RESOURCE_NAME = "resource"; |
| |
| /** |
| * Default name for the scripting variable referencing the JCR node |
| * underlying the current <code>Resource</code> object if it is based on a |
| * JCR node (value is "currentNode"). |
| */ |
| public static final String DEFAULT_NODE_NAME = "currentNode"; |
| |
| /** |
| * Default name for the scripting variable referencing the log |
| * <code>org.slf4j.Logger</code> (value is "log"). |
| */ |
| public static final String DEFAULT_LOG_NAME = "log"; |
| |
| /** |
| * Default name for the scripting variable referencing the current |
| * <code>SlingScriptHelper</code> (value is "sling"). |
| */ |
| public static final String DEFAULT_SLING_NAME = "sling"; |
| |
| /** |
| * Default name for the scripting variable referencing the current |
| * <code>ResourceResolver</code> (value is "resourceResolver"). |
| */ |
| public static final String DEFAULT_RESOURCE_RESOLVER_NAME = "resourceResolver"; |
| |
| private String requestName = DEFAULT_REQUEST_NAME; |
| |
| private String responseName = DEFAULT_RESPONSE_NAME; |
| |
| private String resourceName = DEFAULT_RESOURCE_NAME; |
| |
| private String nodeName = DEFAULT_NODE_NAME; |
| |
| private String slingName = DEFAULT_SLING_NAME; |
| |
| private String logName = DEFAULT_LOG_NAME; |
| |
| private String resourceResolverName = DEFAULT_RESOURCE_RESOLVER_NAME; |
| |
| /** |
| * Default constructor. |
| */ |
| public DefineObjectsTag() { |
| } |
| |
| /** |
| * Creates Scripting variables for: |
| * <ul> |
| * <li><code>SlingHttpServletRequest</code> |
| * <li><code>SlingHttpServletResponse</code> |
| * <li>current <code>Resource</code> |
| * <li>current <code>Node</code> (if resource is adaptable to a node) |
| * <li>current <code>Logger</code> |
| * <li>current <code>SlingScriptHelper</code> |
| * </ul> |
| * |
| * @return always {@link #EVAL_PAGE}. |
| */ |
| public int doEndTag() { |
| final SlingBindings bindings = (SlingBindings)pageContext.getRequest().getAttribute(SlingBindings.class.getName()); |
| final SlingScriptHelper scriptHelper = bindings.getSling(); |
| |
| pageContext.setAttribute(requestName, scriptHelper.getRequest()); |
| pageContext.setAttribute(responseName, scriptHelper.getResponse()); |
| final Resource resource = scriptHelper.getRequest().getResource(); |
| pageContext.setAttribute(resourceName, resource); |
| pageContext.setAttribute(resourceResolverName, scriptHelper.getRequest().getResourceResolver()); |
| pageContext.setAttribute(slingName, scriptHelper); |
| pageContext.setAttribute(logName, bindings.getLog()); |
| final Node node = resource.adaptTo(Node.class); |
| if (node != null) { |
| pageContext.setAttribute(nodeName, node); |
| } |
| |
| return EVAL_PAGE; |
| } |
| |
| // --------------------------< setter methonds >---------------------------- |
| |
| public void setRequestName(String requestName) { |
| this.requestName = requestName; |
| } |
| |
| public void setResponseName(String responseName) { |
| this.responseName = responseName; |
| } |
| |
| public void setResourceName(String name) { |
| this.resourceName = name; |
| } |
| |
| public void setNodeName(String name) { |
| this.nodeName = name; |
| } |
| |
| public void setLogName(String name) { |
| this.logName = name; |
| } |
| |
| public void setSlingName(String name) { |
| this.slingName = name; |
| } |
| |
| public void setResourceResolverName(String name) { |
| this.resourceResolverName = name; |
| } |
| } |