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]>.
