You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2018/06/06 13:57:55 UTC

[sling-org-apache-sling-scripting-sightly-compiler] branch master updated: SLING-7710 - [HTL] Enhance error reporting for plugin errors

This is an automated email from the ASF dual-hosted git repository.

radu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly-compiler.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a7f099  SLING-7710 - [HTL] Enhance error reporting for plugin errors
5a7f099 is described below

commit 5a7f0996aa6ca8475c447fa517c3bca92f8bf441
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Wed Jun 6 15:52:48 2018 +0200

    SLING-7710 - [HTL] Enhance error reporting for plugin errors
---
 .../sightly/impl/html/dom/MarkupHandler.java         | 12 ++++++++++--
 .../scripting/sightly/impl/plugin/CallPlugin.java    |  2 +-
 .../sightly/impl/plugin/TemplatePlugin.java          | 20 +++++++++++---------
 3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java b/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java
index 58c6ccb..0e41724 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java
@@ -32,6 +32,7 @@ import org.apache.sling.scripting.sightly.compiler.commands.OutputVariable;
 import org.apache.sling.scripting.sightly.compiler.commands.VariableBinding;
 import org.apache.sling.scripting.sightly.compiler.expression.Expression;
 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.BinaryOperation;
 import org.apache.sling.scripting.sightly.compiler.expression.nodes.BinaryOperator;
 import org.apache.sling.scripting.sightly.compiler.expression.nodes.BooleanConstant;
@@ -51,7 +52,6 @@ import org.apache.sling.scripting.sightly.impl.compiler.util.SymbolGenerator;
 import org.apache.sling.scripting.sightly.impl.filter.ExpressionContext;
 import org.apache.sling.scripting.sightly.impl.filter.Filter;
 import org.apache.sling.scripting.sightly.impl.html.MarkupUtils;
-import org.apache.sling.scripting.sightly.compiler.expression.MarkupContext;
 import org.apache.sling.scripting.sightly.impl.plugin.Plugin;
 import org.apache.sling.scripting.sightly.impl.plugin.PluginCallInfo;
 import org.apache.sling.scripting.sightly.impl.plugin.PluginInvoke;
@@ -85,7 +85,15 @@ public class MarkupHandler {
     public void onAttribute(String name, String value, char quoteChar) {
         ElementContext context = elementStack.peek();
         if (Syntax.isPluginAttribute(name)) {
-            handlePlugin(name, StringUtils.defaultString(value, ""), context);
+            try {
+                handlePlugin(name, StringUtils.defaultString(value, ""), context);
+            } catch (SightlyCompilerException e) {
+                if (StringUtils.isEmpty(e.getOffendingInput())) {
+                    throw new SightlyCompilerException(e.getMessage(),
+                            name + (StringUtils.isNotEmpty(value) ? "=" + quoteChar + value + quoteChar : ""));
+                }
+                throw e;
+            }
         } else {
             context.addAttribute(name, value, quoteChar);
         }
diff --git a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/CallPlugin.java b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/CallPlugin.java
index 455612e..b666575 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/CallPlugin.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/CallPlugin.java
@@ -39,7 +39,7 @@ public class CallPlugin extends AbstractPlugin {
                                final PluginCallInfo callInfo,
                                final CompilerContext compilerContext) {
         if (callInfo.getArguments().length > 0) {
-            throw new SightlyCompilerException("Call plugin should have no arguments.", "data-sly-call." + callInfo.getArguments()[0]);
+            throw new SightlyCompilerException("Call plugin should have no arguments.");
         }
         return new DefaultPluginInvoke() {
 
diff --git a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TemplatePlugin.java b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TemplatePlugin.java
index 2890c19..a22116f 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TemplatePlugin.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/TemplatePlugin.java
@@ -41,6 +41,8 @@ public class TemplatePlugin extends AbstractPlugin {
 
     @Override
     public PluginInvoke invoke(final Expression expressionNode, final PluginCallInfo callInfo, CompilerContext compilerContext) {
+        final String templateName = decodeName(callInfo);
+
         return new DefaultPluginInvoke() {
 
             @Override
@@ -51,9 +53,8 @@ public class TemplatePlugin extends AbstractPlugin {
 
             @Override
             public void beforeElement(PushStream stream, String tagName) {
-                String name = decodeName();
                 Set<String> parameters = extractParameters();
-                stream.write(new Procedure.Start(name, parameters));
+                stream.write(new Procedure.Start(templateName, parameters));
             }
 
             @Override
@@ -81,13 +82,14 @@ public class TemplatePlugin extends AbstractPlugin {
                 return options.keySet();
             }
 
-            private String decodeName() {
-                String[] arguments = callInfo.getArguments();
-                if (arguments.length == 0) {
-                    throw new SightlyCompilerException("Template name was not provided.", "data-sly-template=");
-                }
-                return arguments[0];
-            }
         };
     }
+
+    private String decodeName(PluginCallInfo callInfo) {
+        String[] arguments = callInfo.getArguments();
+        if (arguments.length == 0) {
+            throw new SightlyCompilerException("Template name was not provided.");
+        }
+        return arguments[0];
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
radu@apache.org.