Skip to content

Commit

Permalink
[MNG-7899] Various memory usage improvements
Browse files Browse the repository at this point in the history
- Change static constants to class member in MavenSimpleLogger
- Add a setLength(int) method in MessageBuilder to enable reuse
  • Loading branch information
sebastien-doyon committed Oct 20, 2023
1 parent c1a9476 commit 6888b8e
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,11 @@ public interface MessageBuilder {
*/
@Nonnull
String build();

/**
* Set the buffer length.
*
* @param length the new length
*/
void setLength(int length);
}
Original file line number Diff line number Diff line change
Expand Up @@ -154,4 +154,9 @@ public String build() {
public String toString() {
return build();
}

@Override
public void setLength(int length) {
buffer.setLength(length);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,16 @@
@Experimental
public class JansiMessageBuilder implements MessageBuilder {
private final Ansi ansi;
private StringBuilder sb;

@SuppressWarnings("magicnumber")
public JansiMessageBuilder() {
this.sb = new StringBuilder(80);
this.ansi = Ansi.ansi();
}

public JansiMessageBuilder(StringBuilder sb) {
this.sb = sb;
this.ansi = Ansi.ansi(sb);
}

Expand Down Expand Up @@ -159,4 +163,9 @@ public String build() {
public String toString() {
return build();
}

@Override
public void setLength(int length) {
sb.setLength(length);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,11 @@
*/
public class MavenSimpleLogger extends SimpleLogger {

private static final String TRACE_RENDERED_LEVEL = builder().trace("TRACE").build();
private static final String DEBUG_RENDERED_LEVEL = builder().debug("DEBUG").build();
private static final String INFO_RENDERED_LEVEL = builder().info("INFO").build();
private static final String WARN_RENDERED_LEVEL =
builder().warning("WARNING").build();
private static final String ERROR_RENDERED_LEVEL = builder().error("ERROR").build();
private final String traceRenderedLevel = builder().trace("TRACE").build();
private final String debugRenderedLevel = builder().debug("DEBUG").build();
private final String infoRenderedLevel = builder().info("INFO").build();
private final String warnRenderedLevel = builder().warning("WARNING").build();
private final String errorRenderedLevel = builder().error("ERROR").build();

MavenSimpleLogger(String name) {
super(name);
Expand All @@ -47,16 +46,16 @@ public class MavenSimpleLogger extends SimpleLogger {
protected String renderLevel(int level) {
switch (level) {
case LOG_LEVEL_TRACE:
return TRACE_RENDERED_LEVEL;
return traceRenderedLevel;
case LOG_LEVEL_DEBUG:
return DEBUG_RENDERED_LEVEL;
return debugRenderedLevel;
case LOG_LEVEL_INFO:
return INFO_RENDERED_LEVEL;
return infoRenderedLevel;
case LOG_LEVEL_WARN:
return WARN_RENDERED_LEVEL;
return warnRenderedLevel;
case LOG_LEVEL_ERROR:
default:
return ERROR_RENDERED_LEVEL;
return errorRenderedLevel;
}
}

Expand All @@ -75,18 +74,18 @@ protected void writeThrowable(Throwable t, PrintStream stream) {
}

private void printStackTrace(Throwable t, PrintStream stream, String prefix) {
StringBuilder builder = new StringBuilder();
MessageBuilder builder = builder();
for (StackTraceElement e : t.getStackTrace()) {
builder.append(prefix);
builder.append(" ");
builder(builder).strong("at");
builder.append(" ");
builder.append(e.getClassName());
builder.append(".");
builder.append(e.getMethodName());
builder.append(" (");
builder(builder).strong(getLocation(e));
builder.append(")");
builder.a(prefix);
builder.a(" ");
builder.strong("at");
builder.a(" ");
builder.a(e.getClassName());
builder.a(".");
builder.a(e.getMethodName());
builder.a(" (");
builder.strong(getLocation(e));
builder.a(")");
stream.println(builder);
builder.setLength(0);
}
Expand Down

0 comments on commit 6888b8e

Please sign in to comment.