summaryrefslogtreecommitdiffstats
path: root/theme-compiler
diff options
context:
space:
mode:
authorHaijian Wang <haijian@vaadin.com>2013-02-14 09:59:41 +0200
committerHaijian Wang <haijian@vaadin.com>2013-02-14 09:59:41 +0200
commit9b37af6bfa2b1d15317f3d79890b2a609d935f7c (patch)
tree59d0b53eaf375e4172df9c5a90909a3663559847 /theme-compiler
parentc96cb1d955c2bc805e01d9561d108185d7fc1911 (diff)
downloadvaadin-framework-9b37af6bfa2b1d15317f3d79890b2a609d935f7c.tar.gz
vaadin-framework-9b37af6bfa2b1d15317f3d79890b2a609d935f7c.zip
ParseException does not output file name (Ticket #10967)
Change-Id: I16a1993284cfb8d73596ec8c2b8956d8e7f9dc8e
Diffstat (limited to 'theme-compiler')
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java12
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java34
2 files changed, 45 insertions, 1 deletions
diff --git a/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java b/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java
index fd00dbff2c..64279ad1e7 100644
--- a/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java
+++ b/theme-compiler/src/com/vaadin/sass/internal/ScssStylesheet.java
@@ -32,7 +32,9 @@ import org.w3c.css.sac.InputSource;
import com.vaadin.sass.internal.handler.SCSSDocumentHandler;
import com.vaadin.sass.internal.handler.SCSSDocumentHandlerImpl;
import com.vaadin.sass.internal.handler.SCSSErrorHandler;
+import com.vaadin.sass.internal.parser.ParseException;
import com.vaadin.sass.internal.parser.Parser;
+import com.vaadin.sass.internal.parser.SCSSParseException;
import com.vaadin.sass.internal.resolver.ScssStylesheetResolver;
import com.vaadin.sass.internal.resolver.VaadinResolver;
import com.vaadin.sass.internal.tree.BlockNode;
@@ -103,6 +105,7 @@ public class ScssStylesheet extends Node {
* imported children scss node will have the same encoding as their
* parent, ultimately the root scss file. The root scss node has this
* "encoding" parameter to be null. Its encoding is determined by the
+ *
* @charset declaration, the default one is ASCII.
*/
File file = new File(identifier);
@@ -120,7 +123,14 @@ public class ScssStylesheet extends Node {
Parser parser = new Parser();
parser.setErrorHandler(new SCSSErrorHandler());
parser.setDocumentHandler(handler);
- parser.parseStyleSheet(source);
+
+ try {
+ parser.parseStyleSheet(source);
+ } catch (ParseException e) {
+ // catch ParseException, re-throw a SCSSParseException which has
+ // file name info.
+ throw new SCSSParseException(e, identifier);
+ }
stylesheet.setCharset(parser.getInputSource().getEncoding());
return stylesheet;
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java b/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java
new file mode 100644
index 0000000000..6d56c8128e
--- /dev/null
+++ b/theme-compiler/src/com/vaadin/sass/internal/parser/SCSSParseException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed 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 com.vaadin.sass.internal.parser;
+
+public class SCSSParseException extends ParseException {
+ private ParseException parseException;
+ private String fileName;
+
+ public SCSSParseException(ParseException parseException, String fileName) {
+ this.parseException = parseException;
+ this.fileName = fileName;
+ }
+
+ @Override
+ public String getMessage() {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Error when parsing file ").append(fileName)
+ .append("\n").append(parseException.getMessage());
+ return builder.toString();
+ }
+}