Author: jdonnerstag
Date: Thu Oct 22 14:07:13 2009
New Revision: 828704
URL: http://svn.apache.org/viewvc?rev=828704&view=rev
Log:
fixed Improve consistency of ParseException error messages
Issue: WICKET-2535
Added:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/WicketParseException.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlProblemFinder.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketRemoveTagHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/PanelTest.java
Added:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/WicketParseException.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/WicketParseException.java?rev=828704&view=auto
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/WicketParseException.java
(added)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/WicketParseException.java
Thu Oct 22 14:07:13 2009
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.wicket.markup;
+
+import java.text.ParseException;
+
+import org.apache.wicket.markup.parser.XmlTag;
+
+/**
+ *
+ * @author Juergen Donnerstag
+ */
+public class WicketParseException extends ParseException
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param message
+ * @param tag
+ */
+ public WicketParseException(final String message, final XmlTag tag)
+ {
+ super(message + tag.toUserDebugString(), tag.getPos());
+ }
+
+ /**
+ * Construct.
+ *
+ * @param message
+ * @param tag
+ */
+ public WicketParseException(final String message, final ComponentTag
tag)
+ {
+ this(message, tag.xmlTag);
+ }
+}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
Thu Oct 22 14:07:13 2009
@@ -151,8 +151,8 @@
pos = input.find("</", pos + 1);
if ((pos == -1) || ((pos + (tagNameLen + 2)) >=
input.size()))
{
- throw new ParseException(skipUntilText + " tag
not closed (line " +
- input.getLineNumber() + ", column " +
input.getColumnNumber() + ")", startIndex);
+ throw new ParseException(
+ skipUntilText + " tag not closed" +
getLineAndColumnText(), startIndex);
}
lastPos = pos + 2;
@@ -167,8 +167,7 @@
lastPos = input.find('>', lastPos + tagNameLen);
if (lastPos == -1)
{
- throw new ParseException("Script tag not closed (line "
+ input.getLineNumber() +
- ", column " + input.getColumnNumber() + ")",
startIndex);
+ throw new ParseException("Script tag not closed" +
getLineAndColumnText(), startIndex);
}
// Reset the state variable
@@ -176,6 +175,15 @@
}
/**
+ *
+ * @return line and column number
+ */
+ private String getLineAndColumnText()
+ {
+ return " (line " + input.getLineNumber() + ", column " +
input.getColumnNumber() + ")";
+ }
+
+ /**
* @return XXX
* @throws ParseException
*/
@@ -221,7 +229,7 @@
int closeBracketIndex = input.find('>', openBracketIndex + 1);
if (closeBracketIndex == -1)
{
- throw new ParseException("No matching close bracket at
position " + openBracketIndex,
+ throw new ParseException("No matching close bracket at"
+ getLineAndColumnText(),
input.getPosition());
}
@@ -232,7 +240,7 @@
String tagText = lastText.subSequence(1, lastText.length() -
1).toString();
if (tagText.length() == 0)
{
- throw new ParseException("Found empty tag: '<>' at
position " + openBracketIndex,
+ throw new ParseException("Found empty tag: '<>' at" +
getLineAndColumnText(),
input.getPosition());
}
@@ -303,8 +311,7 @@
}
else
{
- throw new ParseException("Malformed tag (line " +
input.getLineNumber() + ", column " +
- input.getColumnNumber() + ")",
openBracketIndex);
+ throw new ParseException("Malformed tag" +
getLineAndColumnText(), openBracketIndex);
}
}
@@ -329,8 +336,8 @@
int pos = input.find("-->", openBracketIndex + 1);
if (pos == -1)
{
- throw new ParseException("Unclosed comment
beginning at line:" +
- input.getLineNumber() + " column:" +
input.getColumnNumber(), openBracketIndex);
+ throw new ParseException("Unclosed comment
beginning at" + getLineAndColumnText(),
+ openBracketIndex);
}
pos += 3;
@@ -378,9 +385,8 @@
if (closeBracketIndex == -1)
{
- throw new ParseException("No
matching close bracket at line:" +
- input.getLineNumber() +
" column:" + input.getColumnNumber(),
- input.getPosition());
+ throw new ParseException("No
matching close bracket at" +
+ getLineAndColumnText(),
input.getPosition());
}
// Get the tagtext between open and
close brackets
@@ -654,8 +660,8 @@
// Put the attribute in the attributes hash
if (null !=
((TagAttributes)tag.getAttributes()).putInternal(key, value))
{
- throw new ParseException("Same
attribute found twice: " + key,
- input.getPosition());
+ throw new ParseException("Same
attribute found twice: " + key +
+ getLineAndColumnText(),
input.getPosition());
}
// The input has to match exactly (no left over
junk after
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlTag.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
Thu Oct 22 14:07:13 2009
@@ -616,7 +616,7 @@
@Override
public String toUserDebugString()
{
- return "'" + toString() + "' (line " + lineNumber + ", column "
+ columnNumber + ")";
+ return " '" + toString() + "' (line " + lineNumber + ", column
" + columnNumber + ")";
}
/**
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/EnclosureHandler.java
Thu Oct 22 14:07:13 2009
@@ -23,6 +23,7 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.WicketParseException;
import org.apache.wicket.markup.WicketTag;
import org.apache.wicket.markup.html.internal.Enclosure;
import org.apache.wicket.markup.resolver.IComponentResolver;
@@ -96,8 +97,7 @@
{
if (stack == null)
{
- throw new ParseException("Missing open
tag for Enclosure: " + tag.toString(),
- tag.getPos());
+ throw new WicketParseException("Missing
open tag for Enclosure:", tag);
}
// Remove the open tag from the stack
@@ -119,8 +119,7 @@
}
else
{
- throw new ParseException("Open-close tag not
allowed for Enclosure: " +
- tag.toString(), tag.getPos());
+ throw new WicketParseException("Open-close tag
not allowed for Enclosure:", tag);
}
}
// Are we inside a wicket:enclosure tag?
@@ -137,9 +136,8 @@
// isVisible() to => Exception
if (childId != null)
{
- throw new ParseException(
- "Use <wicket:enclosure
child='xxx'> to name the child component",
- tag.getPos());
+ throw new WicketParseException(
+ "Use <wicket:enclosure
child='xxx'> to name the child component:", tag);
}
// Remember the child id. The open tag will be
updated
// once the close tag is found. See above.
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHandler.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHandler.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHandler.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHandler.java
Thu Oct 22 14:07:13 2009
@@ -22,6 +22,7 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupElement;
+import org.apache.wicket.markup.WicketParseException;
import org.apache.wicket.markup.parser.AbstractMarkupFilter;
import org.apache.wicket.util.collections.ArrayListStack;
import org.slf4j.Logger;
@@ -85,8 +86,7 @@
}
else
{
- throw new ParseException("Tag " + top +
" at " + top.getPos() +
- " did not have a close tag",
top.getPos());
+ throw new WicketParseException("Tag
does not have a close tag:", top);
}
}
@@ -151,8 +151,7 @@
}
else
{
- throw new ParseException("Tag " +
tag.toUserDebugString() +
- " does not have a matching open tag",
tag.getPos());
+ throw new WicketParseException("Tag does not
have a matching open tag:", tag);
}
}
else if (tag.isOpenClose())
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlProblemFinder.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlProblemFinder.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlProblemFinder.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/HtmlProblemFinder.java
Thu Oct 22 14:07:13 2009
@@ -21,6 +21,7 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupElement;
+import org.apache.wicket.markup.WicketParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -123,9 +124,10 @@
* The message
* @param tag
* The current tag
- * @throws ParseException
+ * @throws WicketParseException
*/
- private void escalateWarning(final String msg, final ComponentTag tag)
throws ParseException
+ private void escalateWarning(final String msg, final ComponentTag tag)
+ throws WicketParseException
{
if (problemEscalation == ERR_LOG_WARN)
{
@@ -142,7 +144,7 @@
else
// if (problemEscalation == ERR_THROW_EXCEPTION)
{
- throw new ParseException(msg + tag.toUserDebugString(),
tag.getPos());
+ throw new WicketParseException(msg, tag);
}
}
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketRemoveTagHandler.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketRemoveTagHandler.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketRemoveTagHandler.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketRemoveTagHandler.java
Thu Oct 22 14:07:13 2009
@@ -20,6 +20,7 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupElement;
+import org.apache.wicket.markup.WicketParseException;
import org.apache.wicket.markup.WicketTag;
@@ -60,8 +61,7 @@
// remove tag must not be open-close tags
if (tag.isOpenClose())
{
- throw new ParseException("Wicket remove tag must not be
an open-close tag: " +
- tag.toUserDebugString(), tag.getPos());
+ throw new WicketParseException("Wicket remove tag must
not be an open-close tag:", tag);
}
// Find the corresponding close tag and remove all tags in
between
@@ -85,12 +85,11 @@
return tag;
}
- throw new ParseException(
- "Markup remove regions must not contain Wicket
component tags. tag: " +
- closeTag.toUserDebugString(),
closeTag.getPos());
+ throw new WicketParseException(
+ "Markup remove regions must not contain Wicket
component tags:", closeTag);
}
- throw new ParseException("Did not find close tag for markup
remove region. Open tag: " +
- tag.toUserDebugString(), tag.getPos());
+ throw new WicketParseException(
+ "Did not find close tag for markup remove region. Open
tag:", tag);
}
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/parser/filter/WicketTagIdentifier.java
Thu Oct 22 14:07:13 2009
@@ -24,6 +24,7 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.MarkupResourceStream;
+import org.apache.wicket.markup.WicketParseException;
import org.apache.wicket.markup.WicketTag;
import org.apache.wicket.markup.parser.AbstractMarkupFilter;
import org.apache.wicket.markup.parser.XmlTag;
@@ -98,9 +99,9 @@
if (!isWellKnown(xmlTag))
{
// give up
- throw new ParseException("Unknown tag name with
Wicket namespace: '" +
+ throw new WicketParseException("Unknown tag
name with Wicket namespace: '" +
xmlTag.getName() +
- "'. Might be you haven't installed the
appropriate resolver?", tag.getPos());
+ "'. Might be you haven't installed the
appropriate resolver?", tag);
}
}
else
@@ -115,9 +116,9 @@
{
if (value.trim().length() == 0)
{
- throw new ParseException(
+ throw new WicketParseException(
"The wicket:id attribute value must not
be empty. May be unmatched quotes?!?",
- tag.getPos());
+ tag);
}
// Make it a wicket component. Otherwise it would be
RawMarkup
tag.setId(value);
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
Thu Oct 22 14:07:13 2009
@@ -304,7 +304,9 @@
}
catch (MarkupException ex)
{
- // ignore
+ assertTrue(ex.getMessage()
+ .startsWith(
+ "Wicket remove tag must not be an
open-close tag: '<wicket:remove/>' (line 1, column 1)"));
}
IMarkupFragment markup = new MarkupParser("<wicket:remove>
</wicket:remove>").parse();
@@ -327,7 +329,9 @@
}
catch (MarkupException ex)
{
- // ignore
+ assertTrue(ex.getMessage()
+ .startsWith(
+ "Markup remove regions must not contain
Wicket component tags: '<wicket:remove>' (line 1, column 17)"));
}
new MarkupParser(
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/PanelTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/PanelTest.java?rev=828704&r1=828703&r2=828704&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/PanelTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/panel/PanelTest.java
Thu Oct 22 14:07:13 2009
@@ -56,7 +56,7 @@
hit = true;
assertNotNull(mex.getMarkupStream());
- assertTrue(mex.getMessage().indexOf("did not have a
close tag") != -1);
+ assertTrue(mex.getMessage().indexOf("does not have a
close tag") != -1);
assertTrue(mex.getMessage().indexOf("SimplePanel_1.html") != -1);
}
assertTrue("Did expect a MarkupException", hit);