Skip to content

Commit

Permalink
Optimize TypeTree#build(String)
Browse files Browse the repository at this point in the history
Slightly optimize to reduce number of object allocations.
  • Loading branch information
knutwannheden committed Aug 10, 2023
1 parent 087a788 commit 30704de
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions rewrite-java/src/main/java/org/openrewrite/java/tree/TypeTree.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import org.openrewrite.marker.Markers;

import java.util.Collections;
import java.util.Scanner;

import static java.util.Collections.emptyList;
Expand All @@ -28,19 +27,22 @@
* array, or parameterized type).
*/
public interface TypeTree extends NameTree {

static <T extends TypeTree & Expression> T build(String fullyQualifiedName) {
Scanner scanner = new Scanner(fullyQualifiedName.replace('$', '.'));
scanner.useDelimiter("\\.");
Scanner scanner = new Scanner(fullyQualifiedName);
scanner.useDelimiter("[.$]");

String fullName = "";
StringBuilder fullName = new StringBuilder();
Expression expr = null;
String nextLeftPad = "";
for (int i = 0; scanner.hasNext(); i++) {
StringBuilder whitespaceBefore = new StringBuilder();
StringBuilder partBuilder = null;
StringBuilder whitespaceBeforeNext = new StringBuilder();

for (char c : scanner.next().toCharArray()) {
String segment = scanner.next();
for (int j = 0; j < segment.length(); j++) {
char c = segment.charAt(j);
if (!Character.isWhitespace(c)) {
if (partBuilder == null) {
partBuilder = new StringBuilder();
Expand All @@ -59,10 +61,10 @@ static <T extends TypeTree & Expression> T build(String fullyQualifiedName) {
String part = partBuilder.toString();

if (i == 0) {
fullName = part;
fullName.append(part);
expr = new Identifier(randomId(), Space.format(whitespaceBefore.toString()), Markers.EMPTY, emptyList(), part, null, null);
} else {
fullName += "." + part;
fullName.append('.').append(part);
expr = new J.FieldAccess(
randomId(),
Space.EMPTY,
Expand All @@ -75,14 +77,14 @@ static <T extends TypeTree & Expression> T build(String fullyQualifiedName) {
Space.format(whitespaceBefore.toString()),
Markers.EMPTY,
emptyList(),
part.trim(),
part,
null,
null
),
Markers.EMPTY
),
(Character.isUpperCase(part.charAt(0))) ?
JavaType.ShallowClass.build(fullName) :
Character.isUpperCase(part.charAt(0)) ?
JavaType.ShallowClass.build(fullName.toString()) :
null
);
}
Expand Down

0 comments on commit 30704de

Please sign in to comment.