001package co.codewizards.cloudstore.ls.client.util;
002
003import static java.util.Objects.*;
004
005import co.codewizards.cloudstore.core.io.ByteArrayInputStream;
006import co.codewizards.cloudstore.core.io.IByteArrayInputStream;
007import co.codewizards.cloudstore.core.io.IByteArrayOutputStream;
008import co.codewizards.cloudstore.ls.client.LocalServerClient;
009
010/**
011 * Utility class for creating {@link ByteArrayInputStream}s inside the LocalServer's VM.
012 *
013 * @author Marco หงุ่ยตระกูล-Schulze - marco at codewizards dot co
014 */
015public final class ByteArrayInputStreamLs {
016
017        private ByteArrayInputStreamLs() {
018        }
019
020        public static IByteArrayInputStream create(byte[] data) {
021                requireNonNull(data, "data");
022                return LocalServerClient.getInstance().invokeConstructor(ByteArrayInputStream.class,
023                                new Class<?>[] { byte[].class },
024                                data);
025        }
026
027        public static IByteArrayInputStream create(byte[] data, int offset, int length) {
028                requireNonNull(data, "data");
029                return LocalServerClient.getInstance().invokeConstructor(ByteArrayInputStream.class,
030                                new Class<?>[] { byte[].class, int.class, int.class },
031                                data, offset, length);
032        }
033
034        public static IByteArrayInputStream create(IByteArrayOutputStream bout) {
035                return create(bout.toByteArray());
036        }
037
038        public static IByteArrayInputStream create(IByteArrayOutputStream bout, int offset, int length) {
039                return create(bout.toByteArray(), offset, length);
040        }
041}