You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by js...@apache.org on 2016/04/12 08:45:17 UTC
svn commit: r1738701 - in /sling/trunk: bundles/scripting/jsp-taglib/
bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/
bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/
launchpad/...
Author: jsedding
Date: Tue Apr 12 06:45:16 2016
New Revision: 1738701
URL: http://svn.apache.org/viewvc?rev=1738701&view=rev
Log:
SLING-5653 - adaptTo tag fails when adaptTo parameter is an expression
Added:
sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/
sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEITest.java (with props)
Modified:
sling/trunk/bundles/scripting/jsp-taglib/pom.xml
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AbstractVarTEI.java
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEI.java
sling/trunk/launchpad/builder/src/main/provisioning/sling.txt
sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp
Modified: sling/trunk/bundles/scripting/jsp-taglib/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/pom.xml?rev=1738701&r1=1738700&r2=1738701&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp-taglib/pom.xml (original)
+++ sling/trunk/bundles/scripting/jsp-taglib/pom.xml Tue Apr 12 06:45:16 2016
@@ -53,7 +53,10 @@
!org.apache.log4j.*,
*
</Import-Package>
- <Embed-Dependency>esapi;inline=true</Embed-Dependency>
+ <Embed-Dependency>
+ esapi;inline=true,
+ org.apache.sling.scripting.core;inline=org/apache/sling/scripting/core/servlet/CaptureResponseWrapper.class
+ </Embed-Dependency>
</instructions>
</configuration>
</plugin>
Modified: sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AbstractVarTEI.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AbstractVarTEI.java?rev=1738701&r1=1738700&r2=1738701&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AbstractVarTEI.java (original)
+++ sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AbstractVarTEI.java Tue Apr 12 06:45:16 2016
@@ -32,6 +32,8 @@ import javax.servlet.jsp.tagext.Variable
*/
public abstract class AbstractVarTEI extends TagExtraInfo {
+ static final String OBJECT_CLASS_NAME = Object.class.getName();
+
protected static final String ATTR_VAR = "var";
private final String variableNameAttribute;
@@ -69,6 +71,19 @@ public abstract class AbstractVarTEI ext
*/
protected abstract String getClassName(TagData data);
+ static String safeGetStringAttribute(TagData data, String attributeName) {
+ final Object attribute = data.getAttribute(attributeName);
+ if (attribute == TagData.REQUEST_TIME_VALUE) {
+ return null;
+ }
+ return data.getAttributeString(attributeName);
+ }
+
+ static String safeGetStringAttribute(TagData data, String attributeName, String defaultValue) {
+ final String attribute = safeGetStringAttribute(data, attributeName);
+ return attribute == null ? defaultValue : attribute;
+ }
+
@Override
public VariableInfo[] getVariableInfo(TagData data) {
final String variableName = getVariableName(data);
Modified: sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEI.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEI.java?rev=1738701&r1=1738700&r2=1738701&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEI.java (original)
+++ sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEI.java Tue Apr 12 06:45:16 2016
@@ -23,6 +23,6 @@ public class AdaptToTEI extends Abstract
@Override
protected String getClassName(TagData data) {
- return data.getAttributeString(ATTR_ADAPT_TO);
+ return safeGetStringAttribute(data, ATTR_ADAPT_TO, OBJECT_CLASS_NAME);
}
}
Added: sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEITest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEITest.java?rev=1738701&view=auto
==============================================================================
--- sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEITest.java (added)
+++ sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEITest.java Tue Apr 12 06:45:16 2016
@@ -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.jsp.taglib.tei;
+
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.jsp.tagext.TagData;
+import javax.servlet.jsp.tagext.VariableInfo;
+
+import java.util.Hashtable;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class AdaptToTEITest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AdaptToTEITest.class);
+
+ @Test
+ public void typeInference() {
+ final AdaptToTEI adaptToTEI = new AdaptToTEI();
+ final String className = "org.foo.Bar";
+ final VariableInfo[] variableInfo = adaptToTEI.getVariableInfo(tagData(className));
+ assertEquals(1, variableInfo.length);
+ assertEquals(className, variableInfo[0].getClassName());
+ }
+
+ @Test
+ public void typeInferenceNotPossible() {
+ final AdaptToTEI adaptToTEI = new AdaptToTEI();
+ final Object className = TagData.REQUEST_TIME_VALUE;
+ final VariableInfo[] variableInfo = adaptToTEI.getVariableInfo(tagData(className));
+ assertEquals(1, variableInfo.length);
+ assertEquals(Object.class.getName(), variableInfo[0].getClassName());
+ }
+
+ private TagData tagData(final Object className) {
+ final Hashtable<String, Object> map = new Hashtable<String, Object>();
+ map.put(AdaptToTEI.ATTR_VAR, "foo");
+ map.put(AdaptToTEI.ATTR_ADAPT_TO, className);
+ return new TagData(map);
+ }
+}
Propchange: sling/trunk/bundles/scripting/jsp-taglib/src/test/java/org/apache/sling/scripting/jsp/taglib/tei/AdaptToTEITest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: sling/trunk/launchpad/builder/src/main/provisioning/sling.txt
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/builder/src/main/provisioning/sling.txt?rev=1738701&r1=1738700&r2=1738701&view=diff
==============================================================================
--- sling/trunk/launchpad/builder/src/main/provisioning/sling.txt (original)
+++ sling/trunk/launchpad/builder/src/main/provisioning/sling.txt Tue Apr 12 06:45:16 2016
@@ -69,7 +69,7 @@
org.apache.sling/org.apache.sling.scripting.core/2.0.36
org.apache.sling/org.apache.sling.scripting.javascript/2.0.28
org.apache.sling/org.apache.sling.scripting.jsp/2.1.8
- org.apache.sling/org.apache.sling.scripting.jsp.taglib/2.2.4
+ org.apache.sling/org.apache.sling.scripting.jsp.taglib/2.2.5-SNAPSHOT
org.apache.sling/org.apache.sling.scripting.sightly/1.0.16
org.apache.sling/org.apache.sling.scripting.sightly.js.provider/1.0.10
org.apache.sling/org.apache.sling.scripting.sightly.models.provider/1.0.0
Modified: sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp?rev=1738701&r1=1738700&r2=1738701&view=diff
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp (original)
+++ sling/trunk/launchpad/integration-tests/src/main/resources/integration-test/taglib-test.jsp Tue Apr 12 06:45:16 2016
@@ -13,6 +13,11 @@ AdaptTo Tag
Test 3: Test Non-Adaptable Handling
result: <c:catch var="adaptionException"><sling:adaptTo adaptable="res" adaptTo="org.apache.sling.api.resource.ValueMap" var="props3" /></c:catch><c:choose><c:when test="${not empty adaptionException}">SUCCESS: ${adaptionException}</c:when><c:otherwise>ERROR<c:set var="success" value="false" /></c:otherwise></c:choose>
+ Test 4: Test adapting when the class name is a run-time expression
+ <c:set var="dest" value="org.apache.sling.api.resource.ValueMap"/>
+ <sling:adaptTo adaptable="${resource}" adaptTo="${dest}" var="props5"/>
+ result: <c:choose><c:when test="${not empty props5 and props5['jcr:primaryType'] eq 'nt:unstructured'}">SUCCESS</c:when><c:otherwise>ERROR<c:set var="success" value="false" /></c:otherwise></c:choose>
+
Encode Tag
Test 1: HTML Encode
Result: HTML_ENCODE:<sling:encode value="&Hello World!<script></script>" mode="HTML" />