You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2011/03/19 23:06:25 UTC

svn commit: r1083309 - in /wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/parser: XmlPullParser.java XmlTag.java

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;
+		}
+	}
 }