From 7d2a38a482e8f95727fdaa3dea7b6bc543c693c0 Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Fri, 28 Jan 2022 19:53:47 +0800 Subject: [PATCH] added checked-exception-firenldy functional interfaces --- src/main/java/net/woggioni/jwo/BiCon.java | 16 +++++++++++ src/main/java/net/woggioni/jwo/BiFun.java | 16 +++++++++++ src/main/java/net/woggioni/jwo/Con.java | 16 +++++++++++ src/main/java/net/woggioni/jwo/Fun.java | 16 +++++++++++ src/main/java/net/woggioni/jwo/JWO.java | 35 ++++++++++------------- src/main/java/net/woggioni/jwo/Pre.java | 16 +++++++++++ src/main/java/net/woggioni/jwo/Sup.java | 16 +++++++++++ 7 files changed, 111 insertions(+), 20 deletions(-) create mode 100644 src/main/java/net/woggioni/jwo/BiCon.java create mode 100644 src/main/java/net/woggioni/jwo/BiFun.java create mode 100644 src/main/java/net/woggioni/jwo/Con.java create mode 100644 src/main/java/net/woggioni/jwo/Fun.java create mode 100644 src/main/java/net/woggioni/jwo/Pre.java create mode 100644 src/main/java/net/woggioni/jwo/Sup.java diff --git a/src/main/java/net/woggioni/jwo/BiCon.java b/src/main/java/net/woggioni/jwo/BiCon.java new file mode 100644 index 0000000..87320ed --- /dev/null +++ b/src/main/java/net/woggioni/jwo/BiCon.java @@ -0,0 +1,16 @@ +package net.woggioni.jwo; + +import lombok.SneakyThrows; + +import java.util.function.BiConsumer; + +@FunctionalInterface +public interface BiCon extends BiConsumer { + @Override + @SneakyThrows + default void accept(T t, U u) { + exec(t, u); + } + + void exec(T t, U u) throws Exception; +} diff --git a/src/main/java/net/woggioni/jwo/BiFun.java b/src/main/java/net/woggioni/jwo/BiFun.java new file mode 100644 index 0000000..b1d4538 --- /dev/null +++ b/src/main/java/net/woggioni/jwo/BiFun.java @@ -0,0 +1,16 @@ +package net.woggioni.jwo; + +import lombok.SneakyThrows; + +import java.util.function.BiFunction; + +@FunctionalInterface +public interface BiFun extends BiFunction { + @Override + @SneakyThrows + default V apply(T t, U u) { + return exec(t, u); + } + + V exec(T t, U u) throws Exception; +} diff --git a/src/main/java/net/woggioni/jwo/Con.java b/src/main/java/net/woggioni/jwo/Con.java new file mode 100644 index 0000000..6f4724a --- /dev/null +++ b/src/main/java/net/woggioni/jwo/Con.java @@ -0,0 +1,16 @@ +package net.woggioni.jwo; + +import lombok.SneakyThrows; + +import java.util.function.Consumer; + +@FunctionalInterface +public interface Con extends Consumer { + @Override + @SneakyThrows + default void accept(T t) { + exec(t); + } + + void exec(T t) throws Exception; +} diff --git a/src/main/java/net/woggioni/jwo/Fun.java b/src/main/java/net/woggioni/jwo/Fun.java new file mode 100644 index 0000000..2cdb639 --- /dev/null +++ b/src/main/java/net/woggioni/jwo/Fun.java @@ -0,0 +1,16 @@ +package net.woggioni.jwo; + +import lombok.SneakyThrows; + +import java.util.function.Function; + +@FunctionalInterface +public interface Fun extends Function { + @Override + @SneakyThrows + default U apply(T t) { + return exec(t); + } + + U exec(T t) throws Exception; +} diff --git a/src/main/java/net/woggioni/jwo/JWO.java b/src/main/java/net/woggioni/jwo/JWO.java index d0d4137..74d60a8 100644 --- a/src/main/java/net/woggioni/jwo/JWO.java +++ b/src/main/java/net/woggioni/jwo/JWO.java @@ -12,10 +12,8 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.security.cert.X509Certificate; import java.util.*; -import java.util.function.BiConsumer; import java.util.function.Function; import java.util.function.Predicate; -import java.util.function.Supplier; import java.util.regex.Pattern; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -162,12 +160,12 @@ public class JWO { } } - public static Predicate not(Predicate p) { + public static Predicate not(Pre p) { return p.negate(); } public static Stream flatMap(Stream stream, - Function> mappingFunction) { + Fun> mappingFunction) { return stream.map(mappingFunction).filter(Optional::isPresent).map(Optional::get); } @@ -442,7 +440,7 @@ public class JWO { @SneakyThrows public static void writeZipEntry( ZipOutputStream zip, - Supplier source, + Sup source, String destinationFileName, int compressionMethod, byte[] buffer) { @@ -470,7 +468,7 @@ public class JWO { public static void writeZipEntry( ZipOutputStream zip, - Supplier source, + Sup source, String destinationFileName, int compressionMethod) { writeZipEntry(zip, source, destinationFileName, compressionMethod, new byte[0x10000]); @@ -478,7 +476,7 @@ public class JWO { public static void writeZipEntry( ZipOutputStream zip, - Supplier source, + Sup source, String destinationFileName) { writeZipEntry(zip, source, destinationFileName, ZipEntry.DEFLATED); } @@ -486,25 +484,22 @@ public class JWO { @SneakyThrows public static void extractZip(Path sourceArchive, Path destinationFolder) { byte[] buffer = new byte[0x10000]; - expandZip(sourceArchive, new BiConsumer() { - @Override - @SneakyThrows - public void accept(ZipInputStream zipInputStream, ZipEntry zipEntry) { - Path newFile = destinationFolder.resolve(zipEntry.getName()); - Files.createDirectories(newFile.getParent()); - try(OutputStream outputStream = Files.newOutputStream(newFile)) { - while (true) { - int read = zipInputStream.read(buffer); - if (read < 0) break; - outputStream.write(buffer, 0, read); - } + expandZip(sourceArchive, (BiCon) + (ZipInputStream zipInputStream, ZipEntry zipEntry) -> { + Path newFile = destinationFolder.resolve(zipEntry.getName()); + Files.createDirectories(newFile.getParent()); + try(OutputStream outputStream = Files.newOutputStream(newFile)) { + while (true) { + int read = zipInputStream.read(buffer); + if (read < 0) break; + outputStream.write(buffer, 0, read); } } }); } @SneakyThrows - public static void expandZip(Path sourceArchive, BiConsumer consumer) { + public static void expandZip(Path sourceArchive, BiCon consumer) { try(ZipInputStream zis = new ZipInputStream(Files.newInputStream(sourceArchive))) { ZipEntry zipEntry = zis.getNextEntry(); while (zipEntry != null) { diff --git a/src/main/java/net/woggioni/jwo/Pre.java b/src/main/java/net/woggioni/jwo/Pre.java new file mode 100644 index 0000000..958f58c --- /dev/null +++ b/src/main/java/net/woggioni/jwo/Pre.java @@ -0,0 +1,16 @@ +package net.woggioni.jwo; + +import lombok.SneakyThrows; + +import java.util.function.Predicate; + +@FunctionalInterface +public interface Pre extends Predicate { + @Override + @SneakyThrows + default boolean test(T t) { + return exec(t); + } + + boolean exec(T t) throws Exception; +} diff --git a/src/main/java/net/woggioni/jwo/Sup.java b/src/main/java/net/woggioni/jwo/Sup.java new file mode 100644 index 0000000..eb3a056 --- /dev/null +++ b/src/main/java/net/woggioni/jwo/Sup.java @@ -0,0 +1,16 @@ +package net.woggioni.jwo; + +import lombok.SneakyThrows; + +import java.util.function.Supplier; + +@FunctionalInterface +public interface Sup extends Supplier { + @Override + @SneakyThrows + default T get() { + return exec(); + } + + T exec() throws Exception; +}