@@ -52,11 +52,7 @@ private void serializeAll(CompilationUnit cu, ASTNode node, JsonGenerator jG, Se
5252 } else if (child != null ) {
5353 jG .writeFieldName (descriptor .getId ());
5454 jG .writeString (child .toString ());
55- jG .writeFieldName ("startPosition" );
56- final int position = node .getStartPosition ();
57- jG .writeNumber (position );
58- jG .writeFieldName ("line" );
59- jG .writeNumber (cu .getLineNumber (position ));
55+ serializePosition (cu , node , jG );
6056 }
6157 }
6258
@@ -72,11 +68,7 @@ private void serializeAll(CompilationUnit cu, ASTNode node, JsonGenerator jG, Se
7268 String name = c .nodeClassForType (type ).getName ().substring (25 );
7369 jG .writeFieldName ("internalClass" );
7470 jG .writeString (name );
75- jG .writeFieldName ("startPosition" );
76- final int position = c .getStartPosition ();
77- jG .writeNumber (position );
78- jG .writeFieldName ("line" );
79- jG .writeNumber (cu .getLineNumber (position ));
71+ serializePosition (cu , (ASTNode )c , jG );
8072 jG .writeEndObject ();
8173 }
8274 jG .writeEndArray ();
@@ -102,4 +94,22 @@ private void serializeChild(CompilationUnit cu, ASTNode child, JsonGenerator jG,
10294 jG .writeFieldName (descriptor .getId ());
10395 serializeAll (cu , child , jG , provider );
10496 }
97+
98+ private void serializePosition (CompilationUnit cu , ASTNode node , JsonGenerator jG ) throws IOException {
99+ final int startPosition = node .getStartPosition ();
100+ jG .writeFieldName ("startPosition" );
101+ jG .writeNumber (startPosition );
102+ jG .writeFieldName ("startLine" );
103+ jG .writeNumber (cu .getLineNumber (startPosition ));
104+ jG .writeFieldName ("startColumn" );
105+ jG .writeNumber (cu .getColumnNumber (startPosition ) + 1 ); // 1-based numbering
106+
107+ final int endPosition = startPosition + node .getLength ();
108+ jG .writeFieldName ("endPosition" );
109+ jG .writeNumber (endPosition );
110+ jG .writeFieldName ("endLine" );
111+ jG .writeNumber (cu .getLineNumber (endPosition ));
112+ jG .writeFieldName ("endColumn" );
113+ jG .writeNumber (cu .getColumnNumber (endPosition ) + 1 ); // 1-based numbering
114+ }
105115}
0 commit comments