remove log4j-CloseShieldOutputStream usage (#779)

pull/774/merge
Björn Bilger 2024-01-10 00:14:28 +01:00 zatwierdzone przez GitHub
rodzic d2b267aa2e
commit df804879ef
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
6 zmienionych plików z 148 dodań i 17 usunięć

Wyświetl plik

@ -3,6 +3,7 @@ package com.onthegomap.planetiler.stream;
import com.onthegomap.planetiler.archive.WriteableTileArchive;
import com.onthegomap.planetiler.geo.TileOrder;
import com.onthegomap.planetiler.stats.Counter;
import com.onthegomap.planetiler.util.CloseShieldOutputStream;
import com.onthegomap.planetiler.util.CountingOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@ -12,7 +13,6 @@ import java.nio.file.OpenOption;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.logging.log4j.core.util.CloseShieldOutputStream;
/**
* Base archive for all kinds of simple file streams. This is primarily useful when the file is a named pipe. In that

Wyświetl plik

@ -0,0 +1,19 @@
package com.onthegomap.planetiler.util;
import java.io.IOException;
import java.io.OutputStream;
/**
* {@link OutputStream} decorator that suppresses {@link #close()}.
*/
public class CloseShieldOutputStream extends DelegatingOutputStream {
public CloseShieldOutputStream(OutputStream wrapped) {
super(wrapped);
}
@Override
public void close() throws IOException {
// suppress closing
}
}

Wyświetl plik

@ -7,41 +7,30 @@ import java.util.function.LongConsumer;
/**
* {@link OutputStream} decorator that notifies the callback about the written bytes.
*/
public class CountingOutputStream extends OutputStream {
public class CountingOutputStream extends DelegatingOutputStream {
private final OutputStream wrapped;
private final LongConsumer writtenBytesConsumer;
public CountingOutputStream(OutputStream wrapped, LongConsumer writtenBytesConsumer) {
this.wrapped = wrapped;
super(wrapped);
this.writtenBytesConsumer = writtenBytesConsumer;
}
@Override
public void write(int i) throws IOException {
wrapped.write(i);
super.write(i);
writtenBytesConsumer.accept(1L);
}
@Override
public void write(byte[] b) throws IOException {
wrapped.write(b);
super.write(b);
writtenBytesConsumer.accept(b.length);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
wrapped.write(b, off, len);
super.write(b, off, len);
writtenBytesConsumer.accept(len);
}
@Override
public void flush() throws IOException {
wrapped.flush();
}
@Override
public void close() throws IOException {
wrapped.close();
}
}

Wyświetl plik

@ -0,0 +1,38 @@
package com.onthegomap.planetiler.util;
import java.io.IOException;
import java.io.OutputStream;
abstract class DelegatingOutputStream extends OutputStream {
private final OutputStream delegate;
protected DelegatingOutputStream(OutputStream wrapped) {
this.delegate = wrapped;
}
@Override
public void write(int i) throws IOException {
delegate.write(i);
}
@Override
public void write(byte[] b) throws IOException {
delegate.write(b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
delegate.write(b, off, len);
}
@Override
public void flush() throws IOException {
delegate.flush();
}
@Override
public void close() throws IOException {
delegate.close();
}
}

Wyświetl plik

@ -0,0 +1,38 @@
package com.onthegomap.planetiler.util;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import java.io.IOException;
import java.io.OutputStream;
import org.junit.jupiter.api.Test;
class CloseShieldOutputStreamTest {
@Test
void test() throws IOException {
final OutputStream delegate = mock(OutputStream.class);
final OutputStream os = new CloseShieldOutputStream(delegate);
os.close();
verifyNoMoreInteractions(delegate);
os.write(1);
verify(delegate).write(1);
verifyNoMoreInteractions(delegate);
os.write(new byte[]{2});
verify(delegate).write(new byte[]{2});
verifyNoMoreInteractions(delegate);
os.write(new byte[]{3}, 4, 5);
verify(delegate).write(new byte[]{3}, 4, 5);
verifyNoMoreInteractions(delegate);
os.flush();
verify(delegate).flush();
verifyNoMoreInteractions(delegate);
}
}

Wyświetl plik

@ -0,0 +1,47 @@
package com.onthegomap.planetiler.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import com.onthegomap.planetiler.stats.Counter;
import java.io.IOException;
import java.io.OutputStream;
import org.junit.jupiter.api.Test;
class CountingOutputStreamTest {
@Test
void test() throws IOException {
final OutputStream delegate = mock(OutputStream.class);
final var c = Counter.newSingleThreadCounter();
final OutputStream os = new CountingOutputStream(delegate, c::incBy);
os.close();
verify(delegate).close();
assertEquals(0, c.get());
os.write(1);
verify(delegate).write(1);
verifyNoMoreInteractions(delegate);
assertEquals(1L, c.get());
os.write(new byte[]{2, 3});
verify(delegate).write(new byte[]{2, 3});
verifyNoMoreInteractions(delegate);
assertEquals(1L + 2L, c.get());
os.write(new byte[]{4, 5, 6}, 7, 8);
verify(delegate).write(new byte[]{4, 5, 6}, 7, 8);
verifyNoMoreInteractions(delegate);
assertEquals(1L + 2L + 8L, c.get());
os.flush();
verify(delegate).flush();
verifyNoMoreInteractions(delegate);
assertEquals(1L + 2L + 8L, c.get());
}
}