Kotlin conversion: ArmoredInputStreamFactory

This commit is contained in:
Paul Schaub 2023-09-29 14:05:21 +02:00
parent 6b397a0d56
commit e16376ca68
Signed by: vanitasvitae
GPG Key ID: 62BEE9264BF17311
2 changed files with 36 additions and 43 deletions

View File

@ -1,43 +0,0 @@
// SPDX-FileCopyrightText: 2021 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0
package org.pgpainless.util;
import java.io.IOException;
import java.io.InputStream;
import org.bouncycastle.bcpg.ArmoredInputStream;
import javax.annotation.Nonnull;
/**
* Factory class for instantiating preconfigured {@link ArmoredInputStream ArmoredInputStreams}.
* {@link #get(InputStream)} will return an {@link ArmoredInputStream} that is set up to properly detect CRC errors.
*/
public final class ArmoredInputStreamFactory {
private ArmoredInputStreamFactory() {
}
/**
* Return an instance of {@link ArmoredInputStream} which will detect CRC errors.
*
* @param inputStream input stream
* @return armored input stream
* @throws IOException in case of an IO error
*/
@Nonnull
public static ArmoredInputStream get(@Nonnull InputStream inputStream) throws IOException {
if (inputStream instanceof CRCingArmoredInputStreamWrapper) {
return (ArmoredInputStream) inputStream;
}
if (inputStream instanceof ArmoredInputStream) {
return new CRCingArmoredInputStreamWrapper((ArmoredInputStream) inputStream);
}
ArmoredInputStream armorIn = new ArmoredInputStream(inputStream);
return new CRCingArmoredInputStreamWrapper(armorIn);
}
}

View File

@ -0,0 +1,36 @@
// SPDX-FileCopyrightText: 2023 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0
package org.pgpainless.util
import org.bouncycastle.bcpg.ArmoredInputStream
import java.io.IOException
import java.io.InputStream
/**
* Factory class for instantiating preconfigured [ArmoredInputStream] instances.
* [get] will return an [ArmoredInputStream] that is set up to properly detect CRC errors v4 style.
*/
class ArmoredInputStreamFactory {
companion object {
/**
* Return an instance of [ArmoredInputStream] which will detect CRC errors.
*
* @param inputStream input stream
* @return armored input stream
* @throws IOException in case of an IO error
*/
@JvmStatic
@Throws(IOException::class)
fun get(inputStream: InputStream): ArmoredInputStream {
return when (inputStream) {
is CRCingArmoredInputStreamWrapper -> inputStream
is ArmoredInputStream -> CRCingArmoredInputStreamWrapper(inputStream)
else -> CRCingArmoredInputStreamWrapper(ArmoredInputStream(inputStream))
}
}
}
}