SLING-6866 - HTL doesn't allow to overwrite the context for data-sly-text
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1797789 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TextPlugin.java b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TextPlugin.java
index a2c03fb..f7dda86 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TextPlugin.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TextPlugin.java
@@ -18,8 +18,11 @@
******************************************************************************/
package org.apache.sling.scripting.sightly.impl.plugin;
+import org.apache.sling.scripting.sightly.compiler.RuntimeFunction;
import org.apache.sling.scripting.sightly.compiler.commands.OutputVariable;
+import org.apache.sling.scripting.sightly.compiler.expression.ExpressionNode;
import org.apache.sling.scripting.sightly.compiler.expression.MarkupContext;
+import org.apache.sling.scripting.sightly.compiler.expression.nodes.RuntimeCall;
import org.apache.sling.scripting.sightly.impl.compiler.Patterns;
import org.apache.sling.scripting.sightly.compiler.commands.VariableBinding;
import org.apache.sling.scripting.sightly.impl.compiler.PushStream;
@@ -45,7 +48,7 @@
public void beforeChildren(PushStream stream) {
String variable = compilerContext.generateVariable("textContent");
stream.write(new VariableBinding.Start(variable,
- compilerContext.adjustToContext(expression, MarkupContext.TEXT, ExpressionContext.TEXT).getRoot()));
+ adjustContext(compilerContext, expression, MarkupContext.TEXT, ExpressionContext.TEXT).getRoot()));
stream.write(new OutputVariable(variable));
stream.write(VariableBinding.END);
Patterns.beginStreamIgnore(stream);
@@ -57,4 +60,16 @@
}
};
}
+
+ private Expression adjustContext(CompilerContext compilerContext, Expression expression, MarkupContext markupContext,
+ ExpressionContext expressionContext) {
+ ExpressionNode root = expression.getRoot();
+ if (root instanceof RuntimeCall) {
+ RuntimeCall runtimeCall = (RuntimeCall) root;
+ if (runtimeCall.getFunctionName().equals(RuntimeFunction.XSS)) {
+ return expression;
+ }
+ }
+ return compilerContext.adjustToContext(expression, markupContext, expressionContext);
+ }
}