com.liferay.jenkins.results.parser.SecurePrintStream Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.jenkins.results.parser
Show all versions of com.liferay.jenkins.results.parser
Liferay Jenkins Results Parser
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.jenkins.results.parser;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Arrays;
/**
* @author Peter Yoo
*/
public class SecurePrintStream extends PrintStream {
public SecurePrintStream(PrintStream printStream) {
super(printStream, true);
_printStream = printStream;
}
@Override
public PrintStream append(char c) {
_printStream.append(c);
return this;
}
@Override
public PrintStream append(CharSequence charSequence) {
String redactedString = _redact(charSequence.toString());
if (redactedString != null) {
_printStream.append(redactedString);
}
else {
_printStream.append(charSequence);
}
return this;
}
@Override
public PrintStream append(CharSequence charSequence, int start, int end) {
return append(charSequence.subSequence(start, end));
}
@Override
public void flush() {
_printStream.flush();
}
@Override
public void print(boolean b) {
_printStream.print(b);
}
@Override
public void print(char c) {
_printStream.print(c);
}
@Override
public void print(char[] chars) {
String redactedString = _redact(new String(chars));
if (redactedString != null) {
_print(redactedString, false);
return;
}
_printStream.print(chars);
}
@Override
public void print(double d) {
String redactedString = _redact(String.valueOf(d));
if (redactedString != null) {
_printStream.print(redactedString);
return;
}
_printStream.print(d);
}
@Override
public void print(float f) {
String redactedString = _redact(String.valueOf(f));
if (redactedString != null) {
_printStream.print(redactedString);
return;
}
_printStream.print(f);
}
@Override
public void print(int i) {
String redactedString = _redact(String.valueOf(i));
if (redactedString != null) {
_printStream.print(redactedString);
return;
}
_printStream.print(i);
}
@Override
public void print(long l) {
String redactedString = _redact(String.valueOf(l));
if (redactedString != null) {
_printStream.println(redactedString);
return;
}
_printStream.print(l);
}
@Override
public void print(Object object) {
if (object == null) {
_printStream.print("null");
}
String redactedString = _redact(object.toString());
if (redactedString != null) {
_print(redactedString, false);
return;
}
_printStream.print(object);
}
@Override
public void print(String string) {
String redactedString = _redact(string);
if (redactedString != null) {
_print(redactedString, false);
return;
}
_print(string, false);
}
@Override
public void println() {
_printStream.println();
}
@Override
public void println(boolean b) {
_printStream.println(b);
}
@Override
public void println(char c) {
_printStream.println(c);
}
@Override
public void println(char[] chars) {
String redactedString = _redact(new String(chars));
if (redactedString != null) {
_print(redactedString, true);
return;
}
_printStream.println(chars);
}
@Override
public void println(double d) {
String redactedString = _redact(String.valueOf(d));
if (redactedString != null) {
_printStream.println(redactedString);
return;
}
_printStream.println(d);
}
@Override
public void println(float f) {
String redactedString = _redact(String.valueOf(f));
if (redactedString != null) {
_printStream.println(redactedString);
return;
}
_printStream.println(f);
}
@Override
public void println(int i) {
String redactedString = _redact(String.valueOf(i));
if (redactedString != null) {
_printStream.println(redactedString);
return;
}
_printStream.println(i);
}
@Override
public void println(long l) {
String redactedString = _redact(String.valueOf(l));
if (redactedString != null) {
_printStream.println(redactedString);
return;
}
_printStream.println(l);
}
@Override
public void println(Object object) {
if (object == null) {
_printStream.println("null");
return;
}
String redactedString = _redact(object.toString());
if (redactedString != null) {
println(redactedString);
return;
}
_printStream.println(object);
}
@Override
public void println(String string) {
String redactedString = _redact(string);
if (redactedString != null) {
_print(redactedString, true);
}
else {
_print(string, true);
}
}
@Override
public void write(byte[] bytes) throws IOException {
String redactedString = _redact(new String(bytes));
if (redactedString != null) {
_print(redactedString, false);
return;
}
_printStream.write(bytes);
}
@Override
public void write(byte[] buffer, int offset, int length) {
String redactedString = _redact(
new String(Arrays.copyOfRange(buffer, offset, offset + length)));
if (redactedString != null) {
_print(redactedString, false);
return;
}
_printStream.write(buffer, offset, length);
}
@Override
public void write(int b) {
String redactedString = _redact(String.valueOf(b));
if (redactedString != null) {
_print(redactedString, false);
return;
}
_printStream.write(b);
}
private void _print(String string, boolean appendNewLine) {
if ((string == null) && appendNewLine) {
_printStream.println();
return;
}
String[] lines = string.split("\n");
if (lines.length == 0) {
if (!string.isEmpty()) {
_printStream.print(string);
}
if (appendNewLine) {
_printStream.println();
}
return;
}
String lastLine = lines[lines.length - 1];
for (String line : lines) {
if (line.length() > _MAX_PRINT_LINE_LENGTH) {
_printStream.print(line.substring(0, _MAX_PRINT_LINE_LENGTH));
_printStream.print(
JenkinsResultsParserUtil.combine(
"[TRUNCATED ",
String.valueOf(line.length() - _MAX_PRINT_LINE_LENGTH),
" CHARACTERS]"));
_printStream.flush();
}
else {
_printStream.print(line);
}
if ((line != lastLine) || ((line == lastLine) && appendNewLine)) {
_printStream.println();
}
}
}
private String _redact(String string) {
if (string == null) {
return null;
}
String redactedString = JenkinsResultsParserUtil.redact(string);
if (string.equals(redactedString)) {
return null;
}
return redactedString;
}
private static final int _MAX_PRINT_LINE_LENGTH = 25000;
private final PrintStream _printStream;
}