Author: jdonnerstag
Date: Sat Mar 19 22:06:25 2011
New Revision: 1083309
URL: http://svn.apache.org/viewvc?rev=1083309&view=rev
Log:
XmlTag: move immutable information in separate class (and avoid data
duplication)
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java?rev=1083309&r1=1083308&r2=1083309&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlPullParser.java
Sat Mar 19 22:06:25 2011
@@ -24,6 +24,7 @@ import java.text.ParseException;
import org.apache.wicket.markup.MarkupElement;
import org.apache.wicket.markup.parser.XmlTag.TagType;
+import org.apache.wicket.markup.parser.XmlTag.TextSegment;
import org.apache.wicket.util.io.FullyBufferedReader;
import org.apache.wicket.util.io.IOUtils;
import org.apache.wicket.util.io.XmlReader;
@@ -273,10 +274,8 @@ public final class XmlPullParser impleme
{
// Populate tag fields
lastTag.type = type;
- lastTag.pos = openBracketIndex;
- lastTag.text = lastText;
- lastTag.lineNumber = input.getLineNumber();
- lastTag.columnNumber = input.getColumnNumber();
+ lastTag.text = new TextSegment(lastText,
openBracketIndex, input.getLineNumber(),
+ input.getColumnNumber());
// Move to position after the tag
input.setPosition(closeBracketIndex + 1);
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlTag.java?rev=1083309&r1=1083308&r2=1083309&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser/XmlTag.java
Sat Mar 19 22:06:25 2011
@@ -62,27 +62,17 @@ public class XmlTag extends MarkupElemen
}
}
+ TextSegment text;
+
/** Attribute map. */
private IValueMap attributes;
- /** Column number. */
- int columnNumber;
-
- /** Line number. */
- int lineNumber;
-
/** Name of tag, such as "img" or "input". */
String name;
/** Namespace of the tag, if available, such as <wicket:link ...>
*/
String namespace;
- /** Position of this tag in the input that was parsed. */
- int pos;
-
- /** Full text of tag. */
- CharSequence text;
-
/** The tag type (OPEN, CLOSE or OPEN_CLOSE). */
TagType type;
@@ -170,7 +160,7 @@ public class XmlTag extends MarkupElemen
*/
public int getColumnNumber()
{
- return columnNumber;
+ return (text != null ? text.columnNumber : 0);
}
/**
@@ -180,7 +170,7 @@ public class XmlTag extends MarkupElemen
*/
public int getLength()
{
- return text.length();
+ return (text != null ? text.text.length() : 0);
}
/**
@@ -190,7 +180,7 @@ public class XmlTag extends MarkupElemen
*/
public int getLineNumber()
{
- return lineNumber;
+ return (text != null ? text.lineNumber : 0);
}
/**
@@ -230,7 +220,7 @@ public class XmlTag extends MarkupElemen
*/
public int getPos()
{
- return pos;
+ return (text != null ? text.pos : 0);
}
/**
@@ -367,7 +357,6 @@ public class XmlTag extends MarkupElemen
{
dest.namespace = namespace;
dest.name = name;
- dest.pos = pos;
dest.text = text;
dest.type = type;
dest.isMutable = true;
@@ -543,7 +532,7 @@ public class XmlTag extends MarkupElemen
*/
public String toDebugString()
{
- return "[Tag name = " + name + ", pos = " + pos + ", line = " +
lineNumber +
+ return "[Tag name = " + name + ", pos = " + text.pos + ", line
= " + text.lineNumber +
", attributes = [" + getAttributes() + "], type = " +
type + "]";
}
@@ -563,7 +552,7 @@ public class XmlTag extends MarkupElemen
{
if (!isMutable && (text != null))
{
- return text;
+ return text.text;
}
return toXmlString(null);
@@ -577,7 +566,8 @@ public class XmlTag extends MarkupElemen
@Override
public String toUserDebugString()
{
- return " '" + toString() + "' (line " + lineNumber + ", column
" + columnNumber + ")";
+ return " '" + toString() + "' (line " + getLineNumber() + ",
column " + getColumnNumber() +
+ ")";
}
/**
@@ -640,4 +630,27 @@ public class XmlTag extends MarkupElemen
buffer.append('>');
return buffer;
}
+
+ static class TextSegment
+ {
+ /** Column number. */
+ final int columnNumber;
+
+ /** Line number. */
+ final int lineNumber;
+
+ /** Position of this tag in the input that was parsed. */
+ final int pos;
+
+ /** Full text of tag. */
+ final CharSequence text;
+
+ TextSegment(CharSequence text, int pos, int line, int col)
+ {
+ this.text = text;
+ this.pos = pos;
+ lineNumber = line;
+ columnNumber = col;
+ }
+ }
}