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

rombert pushed a commit to annotated tag 
org.apache.sling.scripting.sightly.compiler-1.0.0
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly-compiler.git

commit 97c1c38a1fda0384dfeb6116520c4fbfa3b3caa9
Author: Radu Cotescu <[email protected]>
AuthorDate: Mon Aug 29 16:25:06 2016 +0000

    SLING-5978 - Make Sightly throw compilation errors when unknown data-sly-* 
plugins are used
    
    * also improved other runtime errors reporting
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/bundles/scripting/sightly/compiler@1758254
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../sling/scripting/sightly/compiler/SightlyCompiler.java     |  2 +-
 .../sling/scripting/sightly/impl/compiler/PushStream.java     | 11 ++++++-----
 .../scripting/sightly/impl/compiler/debug/SanityChecker.java  |  3 ++-
 .../sightly/impl/compiler/frontend/ExpressionWrapper.java     |  2 +-
 .../sling/scripting/sightly/impl/html/dom/MarkupHandler.java  |  8 +++++---
 .../sling/scripting/sightly/impl/plugin/AttributePlugin.java  |  2 +-
 .../sling/scripting/sightly/impl/plugin/CallPlugin.java       |  2 +-
 .../sling/scripting/sightly/impl/plugin/TemplatePlugin.java   |  2 +-
 8 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java
 
b/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java
index 53bd744..2025ad9 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java
@@ -145,7 +145,7 @@ public final class SightlyCompiler {
                 backendCompiler.handle(optimizedStream);
             }
             frontend.compile(stream, scriptSource);
-            for (PushStream.Warning w : stream.getWarnings()) {
+            for (PushStream.StreamMessage w : stream.getWarnings()) {
                 ScriptError warning = getScriptError(scriptSource, 
w.getCode(), 0, 0, w.getMessage());
                 compilationResult.getWarnings().add(new 
CompilerMessageImpl(scriptName, warning.errorMessage, warning.lineNumber, 
warning
                         .column));
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/PushStream.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/PushStream.java
index 50db598..517408d 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/PushStream.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/PushStream.java
@@ -21,6 +21,7 @@ package org.apache.sling.scripting.sightly.impl.compiler;
 import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.sling.scripting.sightly.compiler.SightlyCompilerException;
 import org.apache.sling.scripting.sightly.compiler.commands.Command;
 import org.apache.sling.scripting.sightly.compiler.commands.CommandHandler;
 import org.apache.sling.scripting.sightly.compiler.commands.CommandStream;
@@ -34,7 +35,7 @@ public final class PushStream implements CommandStream {
     private BroadcastHandler handler = new BroadcastHandler();
     private boolean closed;
     private List<Command> commands = new LinkedList<>();
-    private List<Warning> warnings = new LinkedList<>();
+    private List<StreamMessage> warnings = new LinkedList<>();
 
     @Override
     public void addHandler(CommandHandler handler) {
@@ -46,7 +47,7 @@ public final class PushStream implements CommandStream {
         return commands;
     }
 
-    public List<Warning> getWarnings() {
+    public List<StreamMessage> getWarnings() {
         return warnings;
     }
 
@@ -85,15 +86,15 @@ public final class PushStream implements CommandStream {
         this.handler.onDone();
     }
 
-    public void write(Warning warning) {
+    public void warn(StreamMessage warning) {
         warnings.add(warning);
     }
 
-    public static class Warning {
+    public static class StreamMessage {
         private String message;
         private String code;
 
-        public Warning(String message, String code) {
+        public StreamMessage(String message, String code) {
             this.message = message;
             this.code = code;
         }
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/debug/SanityChecker.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/debug/SanityChecker.java
index 9210670..58eb3c0 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/debug/SanityChecker.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/debug/SanityChecker.java
@@ -20,6 +20,7 @@ package 
org.apache.sling.scripting.sightly.impl.compiler.debug;
 
 import java.util.Stack;
 
+import org.apache.sling.scripting.sightly.compiler.SightlyCompilerException;
 import 
org.apache.sling.scripting.sightly.compiler.commands.AbstractCommandVisitor;
 import org.apache.sling.scripting.sightly.compiler.commands.Command;
 import org.apache.sling.scripting.sightly.compiler.commands.CommandHandler;
@@ -55,7 +56,7 @@ public final class SanityChecker extends 
AbstractCommandVisitor implements Comma
 
     @Override
     public void onError(String errorMessage) {
-        throw new RuntimeException(errorMessage);
+        throw new SightlyCompilerException(errorMessage);
     }
 
     @Override
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ExpressionWrapper.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ExpressionWrapper.java
index 635d579..cf26b1c 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ExpressionWrapper.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ExpressionWrapper.java
@@ -61,7 +61,7 @@ public class ExpressionWrapper {
             //context must not be calculated by merging
             options.remove(Syntax.CONTEXT_OPTION);
         }
-        return new Expression(root, options);
+        return new Expression(root, options, interpolation.getContent());
     }
 
     private Expression applyFilters(Expression expression, ExpressionContext 
expressionContext) {
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 11e83e6..a57c06c 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
@@ -25,6 +25,7 @@ import java.util.Stack;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.sling.scripting.sightly.compiler.RuntimeFunction;
+import org.apache.sling.scripting.sightly.compiler.SightlyCompilerException;
 import org.apache.sling.scripting.sightly.compiler.commands.Conditional;
 import org.apache.sling.scripting.sightly.compiler.commands.OutText;
 import org.apache.sling.scripting.sightly.compiler.commands.OutputVariable;
@@ -363,7 +364,7 @@ public class MarkupHandler {
                     String currentTag = currentElementTag();
                     String warningMessage = String.format("Element %s requires 
that all expressions have an explicit context specified. " +
                             "The expression will be replaced with an empty 
string.", currentTag);
-                    stream.write(new PushStream.Warning(warningMessage, 
fragment.getExpression().getRawText()));
+                    stream.warn(new PushStream.StreamMessage(warningMessage, 
fragment.getExpression().getRawText()));
                     addedFragment = new Fragment.Expr(new 
Expression(StringConstant.EMPTY));
                 }
             }
@@ -384,7 +385,7 @@ public class MarkupHandler {
                 if (!expression.containsOption(Syntax.CONTEXT_OPTION)) {
                     String warningMessage = String.format("Expressions within 
the value of attribute %s need to have an explicit context " +
                             "option. The expression will be replaced with an 
empty string.", attributeName);
-                    stream.write(new PushStream.Warning(warningMessage, 
expression.getRawText()));
+                    stream.warn(new PushStream.StreamMessage(warningMessage, 
expression.getRawText()));
                     addedFragment = new Fragment.Text("");
                 }
             }
@@ -433,7 +434,8 @@ public class MarkupHandler {
     private Plugin obtainPlugin(String name) {
         Plugin plugin = pluginRegistry.get(name);
         if (plugin == null) {
-            throw new UnsupportedOperationException(String.format("Plugin %s 
does not exist", name));
+            throw new SightlyCompilerException(String.format("None of the 
registered plugins can handle the data-sly-%s block element.",
+                    name), "data-sly-" + name);
         }
         return plugin;
     }
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/AttributePlugin.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/AttributePlugin.java
index eab50c0..6243821 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/AttributePlugin.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/AttributePlugin.java
@@ -63,7 +63,7 @@ public class AttributePlugin extends AbstractPlugin {
         String attributeName = decodeAttributeName(callInfo);
         if (attributeName != null && 
MarkupUtils.isSensitiveAttribute(attributeName)) {
             String warningMessage = String.format("Refusing to generate 
attribute '%s' for security reasons.", attributeName);
-            compilerContext.getPushStream().write(new 
PushStream.Warning(warningMessage, expression.getRawText()));
+            compilerContext.getPushStream().warn(new 
PushStream.StreamMessage(warningMessage, expression.getRawText()));
             return new DefaultPluginInvoke(); //no-op invocation
         }
         return (attributeName != null)
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 bc627d2..455612e 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");
+            throw new SightlyCompilerException("Call plugin should have no 
arguments.", "data-sly-call." + callInfo.getArguments()[0]);
         }
         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 c709292..2890c19 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
@@ -84,7 +84,7 @@ public class TemplatePlugin extends AbstractPlugin {
             private String decodeName() {
                 String[] arguments = callInfo.getArguments();
                 if (arguments.length == 0) {
-                    throw new SightlyCompilerException("Template name was not 
provided");
+                    throw new SightlyCompilerException("Template name was not 
provided.", "data-sly-template=");
                 }
                 return arguments[0];
             }

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to