Skip to content

Commit 195667d

Browse files
committed
Performance with Immutable CharSequence
Signed-off-by: azerr <azerr@redhat.com>
1 parent 5ec1767 commit 195667d

File tree

57 files changed

+1417
-703
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1417
-703
lines changed

org.eclipse.lemminx/src/main/java/com/thaiopensource/relaxng/pattern/CMRelaxNGDocument.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,6 @@ DOMNode findNodeAt(Locator locator) {
317317
private static String getTextContent(DOMElement element) {
318318
int start = element.getStartTagCloseOffset() + 1;
319319
int end = element.getEndTagOpenOffset();
320-
return element.getOwnerDocument().getText().substring(start, end);
320+
return element.getOwnerDocument().getTextSequence().subSequence(start, end).toString();
321321
}
322322
}

org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/CodeActionFactory.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.eclipse.lsp4j.Range;
2929
import org.eclipse.lsp4j.ResourceOperation;
3030
import org.eclipse.lsp4j.TextDocumentEdit;
31-
import org.eclipse.lsp4j.TextDocumentItem;
3231
import org.eclipse.lsp4j.TextEdit;
3332
import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
3433
import org.eclipse.lsp4j.WorkspaceEdit;
@@ -49,7 +48,7 @@ public class CodeActionFactory {
4948
* @param diagnostic
5049
* @return
5150
*/
52-
public static CodeAction remove(String title, Range range, TextDocumentItem document, Diagnostic diagnostic) {
51+
public static CodeAction remove(String title, Range range, TextDocument document, Diagnostic diagnostic) {
5352
return replace(title, range, "", document, diagnostic);
5453
}
5554

@@ -64,7 +63,7 @@ public static CodeAction remove(String title, Range range, TextDocumentItem docu
6463
*
6564
* @return the CodeAction to insert a new content at the end of the given range.
6665
*/
67-
public static CodeAction insert(String title, Position position, String insertText, TextDocumentItem document,
66+
public static CodeAction insert(String title, Position position, String insertText, TextDocument document,
6867
Diagnostic diagnostic) {
6968
CodeAction insertContentAction = new CodeAction(title);
7069
insertContentAction.setKind(CodeActionKind.QuickFix);
@@ -84,7 +83,7 @@ public static CodeAction insert(String title, Position position, String insertTe
8483
*
8584
* @return the text edit to insert a new content at the end of the given range.
8685
*/
87-
public static TextDocumentEdit insertEdit(String insertText, Position position, TextDocumentItem document) {
86+
public static TextDocumentEdit insertEdit(String insertText, Position position, TextDocument document) {
8887
TextEdit edit = insertEdit(insertText, position);
8988
return insertEdits(document, Collections.singletonList(edit));
9089
}
@@ -93,19 +92,19 @@ public static TextEdit insertEdit(String insertText, Position position) {
9392
return new TextEdit(new Range(position, position), insertText);
9493
}
9594

96-
public static TextDocumentEdit insertEdits(TextDocumentItem document, List<TextEdit> edits) {
95+
public static TextDocumentEdit insertEdits(TextDocument document, List<TextEdit> edits) {
9796
VersionedTextDocumentIdentifier versionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(
9897
document.getUri(), document.getVersion());
9998
return new TextDocumentEdit(versionedTextDocumentIdentifier, edits);
10099
}
101100

102-
public static CodeAction replace(String title, Range range, String replaceText, TextDocumentItem document,
101+
public static CodeAction replace(String title, Range range, String replaceText, TextDocument document,
103102
Diagnostic diagnostic) {
104103
TextEdit replace = new TextEdit(range, replaceText);
105104
return replace(title, Collections.singletonList(replace), document, diagnostic);
106105
}
107106

108-
public static CodeAction replace(String title, List<TextEdit> replace, TextDocumentItem document,
107+
public static CodeAction replace(String title, List<TextEdit> replace, TextDocument document,
109108
Diagnostic diagnostic) {
110109

111110
CodeAction insertContentAction = new CodeAction(title);
@@ -128,7 +127,7 @@ public static CodeAction replace(String title, List<TextEdit> replace, TextDocum
128127
* @param document
129128
* @return the workspace edit of a given replacement text and range.
130129
*/
131-
public static WorkspaceEdit getReplaceWorkspaceEdit(String replaceText, Range range, TextDocumentItem document) {
130+
public static WorkspaceEdit getReplaceWorkspaceEdit(String replaceText, Range range, TextDocument document) {
132131
TextEdit replace = new TextEdit(range, replaceText);
133132
VersionedTextDocumentIdentifier versionedTextDocumentIdentifier = new VersionedTextDocumentIdentifier(
134133
document.getUri(), document.getVersion());
@@ -137,8 +136,8 @@ public static WorkspaceEdit getReplaceWorkspaceEdit(String replaceText, Range ra
137136
return new WorkspaceEdit(Collections.singletonList(Either.forLeft(textDocumentEdit)));
138137
}
139138

140-
public static CodeAction replaceAt(String title, String replaceText, TextDocumentItem document,
141-
Diagnostic diagnostic, Collection<Range> ranges) {
139+
public static CodeAction replaceAt(String title, String replaceText, TextDocument document, Diagnostic diagnostic,
140+
Collection<Range> ranges) {
142141
CodeAction insertContentAction = new CodeAction(title);
143142
insertContentAction.setKind(CodeActionKind.QuickFix);
144143
insertContentAction.setDiagnostics(Arrays.asList(diagnostic));

org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/ILineTracker.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public interface ILineTracker {
5656
* @param text the text whose number of lines should be computed
5757
* @return the number of lines in the given text
5858
*/
59-
int computeNumberOfLines(String text);
59+
int computeNumberOfLines(CharSequence text);
6060

6161
/**
6262
* Returns the number of lines.
@@ -135,14 +135,14 @@ public interface ILineTracker {
135135
* @param text the substitution text
136136
* @exception BadLocationException if specified range is unknown to this tracker
137137
*/
138-
void replace(int offset, int length, String text) throws BadLocationException;
138+
void replace(int offset, int length, CharSequence text) throws BadLocationException;
139139

140140
/**
141141
* Sets the tracked text to the specified text.
142142
*
143143
* @param text the new tracked text
144144
*/
145-
void set(String text);
145+
void set(CharSequence text);
146146

147147
Position getPositionAt(int position) throws BadLocationException;
148148

org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/ListLineTracker.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ public final int getNumberOfLines(int position, int length) throws BadLocationEx
304304
}
305305

306306
@Override
307-
public final int computeNumberOfLines(String text) {
307+
public final int computeNumberOfLines(CharSequence text) {
308308
int count = 0;
309309
int start = 0;
310310
DelimiterInfo delimiterInfo = nextDelimiterInfo(text, start);
@@ -343,7 +343,7 @@ public final String getLineDelimiter(int line) throws BadLocationException {
343343
* @param offset the offset in the given text
344344
* @return the information of the first found delimiter or <code>null</code>
345345
*/
346-
protected DelimiterInfo nextDelimiterInfo(String text, int offset) {
346+
protected DelimiterInfo nextDelimiterInfo(CharSequence text, int offset) {
347347
char ch;
348348
int length = text.length();
349349
for (int i = offset; i < length; i++) {
@@ -389,7 +389,7 @@ protected DelimiterInfo nextDelimiterInfo(String text, int offset) {
389389
* @param offset the offset of all newly created lines
390390
* @return the number of newly created lines
391391
*/
392-
private int createLines(String text, int insertPosition, int offset) {
392+
private int createLines(CharSequence text, int insertPosition, int offset) {
393393

394394
int count = 0;
395395
int start = 0;
@@ -427,12 +427,12 @@ private int createLines(String text, int insertPosition, int offset) {
427427
}
428428

429429
@Override
430-
public final void replace(int position, int length, String text) throws BadLocationException {
430+
public final void replace(int position, int length, CharSequence text) throws BadLocationException {
431431
throw new UnsupportedOperationException();
432432
}
433433

434434
@Override
435-
public final void set(String text) {
435+
public final void set(CharSequence text) {
436436
fLines.clear();
437437
if (text != null) {
438438
fTextLength = text.length();

org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/commons/ModelTextDocument.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@ private synchronized T getSynchronizedModel() {
9797
return model;
9898
}
9999

100-
@Override
100+
/*@Override
101101
public void setText(String text) {
102102
super.setText(text);
103103
// text changed, cancel the completable future which load the model
104104
cancelModel();
105-
}
105+
}*/
106106

107107
@Override
108108
public void setVersion(int version) {

0 commit comments

Comments
 (0)