增加对IntStream、LongStream、DoubleStream的序列化支持

This commit is contained in:
Redkale
2017-12-14 18:37:54 +08:00
parent 5bef900b76
commit be816088f5
4 changed files with 73 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
import java.util.regex.Pattern;
import java.util.stream.Stream;
import java.util.stream.*;
import org.redkale.convert.ext.InetAddressSimpledCoder.InetSocketAddressSimpledCoder;
import org.redkale.convert.ext.*;
import org.redkale.util.*;
@@ -108,9 +108,12 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
this.register(short[].class, ShortArraySimpledCoder.instance);
this.register(char[].class, CharArraySimpledCoder.instance);
this.register(int[].class, IntArraySimpledCoder.instance);
this.register(IntStream.class, IntArraySimpledCoder.IntStreamSimpledCoder.instance);
this.register(long[].class, LongArraySimpledCoder.instance);
this.register(LongStream.class, LongArraySimpledCoder.LongStreamSimpledCoder.instance);
this.register(float[].class, FloatArraySimpledCoder.instance);
this.register(double[].class, DoubleArraySimpledCoder.instance);
this.register(DoubleStream.class, DoubleArraySimpledCoder.DoubleStreamSimpledCoder.instance);
this.register(String[].class, StringArraySimpledCoder.instance);
//---------------------------------------------------------
this.register(AnyValue.class, Creator.create(AnyValue.DefaultAnyValue.class));

View File

@@ -5,6 +5,7 @@
*/
package org.redkale.convert.ext;
import java.util.stream.DoubleStream;
import org.redkale.convert.Reader;
import org.redkale.convert.SimpledCoder;
import org.redkale.convert.Writer;
@@ -12,7 +13,9 @@ import org.redkale.convert.Writer;
/**
* double[] 的SimpledCoder实现
*
* <p> 详情见: https://redkale.org
* <p>
* 详情见: https://redkale.org
*
* @author zhangjx
* @param <R> Reader输入的子类型
* @param <W> Writer输出的子类型
@@ -66,4 +69,24 @@ public final class DoubleArraySimpledCoder<R extends Reader, W extends Writer> e
}
}
public final static class DoubleStreamSimpledCoder<R extends Reader, W extends Writer> extends SimpledCoder<R, W, DoubleStream> {
public static final DoubleStreamSimpledCoder instance = new DoubleStreamSimpledCoder();
@Override
public void convertTo(W out, DoubleStream values) {
if (values == null) {
out.writeNull();
return;
}
DoubleArraySimpledCoder.instance.convertTo(out, values.toArray());
}
@Override
public DoubleStream convertFrom(R in) {
double[] value = DoubleArraySimpledCoder.instance.convertFrom(in);
return value == null ? null : DoubleStream.of(value);
}
}
}

View File

@@ -5,6 +5,7 @@
*/
package org.redkale.convert.ext;
import java.util.stream.IntStream;
import org.redkale.convert.Reader;
import org.redkale.convert.SimpledCoder;
import org.redkale.convert.Writer;
@@ -12,7 +13,9 @@ import org.redkale.convert.Writer;
/**
* int[] 的SimpledCoder实现
*
* <p> 详情见: https://redkale.org
* <p>
* 详情见: https://redkale.org
*
* @author zhangjx
* @param <R> Reader输入的子类型
* @param <W> Writer输出的子类型
@@ -66,4 +69,24 @@ public final class IntArraySimpledCoder<R extends Reader, W extends Writer> exte
}
}
public final static class IntStreamSimpledCoder<R extends Reader, W extends Writer> extends SimpledCoder<R, W, IntStream> {
public static final IntStreamSimpledCoder instance = new IntStreamSimpledCoder();
@Override
public void convertTo(W out, IntStream values) {
if (values == null) {
out.writeNull();
return;
}
IntArraySimpledCoder.instance.convertTo(out, values.toArray());
}
@Override
public IntStream convertFrom(R in) {
int[] value = IntArraySimpledCoder.instance.convertFrom(in);
return value == null ? null : IntStream.of(value);
}
}
}

View File

@@ -5,6 +5,7 @@
*/
package org.redkale.convert.ext;
import java.util.stream.LongStream;
import org.redkale.convert.Reader;
import org.redkale.convert.SimpledCoder;
import org.redkale.convert.Writer;
@@ -68,4 +69,24 @@ public final class LongArraySimpledCoder<R extends Reader, W extends Writer> ext
}
}
public final static class LongStreamSimpledCoder<R extends Reader, W extends Writer> extends SimpledCoder<R, W, LongStream> {
public static final LongStreamSimpledCoder instance = new LongStreamSimpledCoder();
@Override
public void convertTo(W out, LongStream values) {
if (values == null) {
out.writeNull();
return;
}
LongArraySimpledCoder.instance.convertTo(out, values.toArray());
}
@Override
public LongStream convertFrom(R in) {
long[] value = LongArraySimpledCoder.instance.convertFrom(in);
return value == null ? null : LongStream.of(value);
}
}
}