InspectingOutputStream Class — spring-boot Architecture
Architecture documentation for the InspectingOutputStream class in InspectedContent.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
buildpack/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/io/InspectedContent.java lines 134–185
private static final class InspectingOutputStream extends OutputStream {
private final Inspector[] inspectors;
private int size;
private OutputStream delegate;
private @Nullable File tempFile;
private final byte[] singleByteBuffer = new byte[1];
private InspectingOutputStream(Inspector[] inspectors) {
this.inspectors = inspectors;
this.delegate = new ByteArrayOutputStream();
}
@Override
public void write(int b) throws IOException {
this.singleByteBuffer[0] = (byte) (b & 0xFF);
write(this.singleByteBuffer);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
int size = len - off;
if (this.tempFile == null && (this.size + size) > MEMORY_LIMIT) {
convertToTempFile();
}
this.delegate.write(b, off, len);
for (Inspector inspector : this.inspectors) {
inspector.update(b, off, len);
}
this.size += size;
}
private void convertToTempFile() throws IOException {
this.tempFile = File.createTempFile("buildpack", ".tmp");
byte[] bytes = ((ByteArrayOutputStream) this.delegate).toByteArray();
this.delegate = new FileOutputStream(this.tempFile);
StreamUtils.copy(bytes, this.delegate);
}
private Object getContent() {
return (this.tempFile != null) ? this.tempFile : ((ByteArrayOutputStream) this.delegate).toByteArray();
}
private int getSize() {
return this.size;
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free