From 2a19ea709b27ceee3c605d58cad046cffa6ed2a8 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Thu, 14 Mar 2019 13:47:57 +0800 Subject: [PATCH] --- src/org/redkale/convert/Convert.java | 2 - .../convert/bson/BsonByteBufferReader.java | 76 +++++++------------ src/org/redkale/convert/bson/BsonConvert.java | 7 -- .../convert/json/JsonByteBufferReader.java | 20 +---- src/org/redkale/convert/json/JsonConvert.java | 6 -- 5 files changed, 29 insertions(+), 82 deletions(-) diff --git a/src/org/redkale/convert/Convert.java b/src/org/redkale/convert/Convert.java index a3032432b..4531d7a95 100644 --- a/src/org/redkale/convert/Convert.java +++ b/src/org/redkale/convert/Convert.java @@ -37,8 +37,6 @@ public abstract class Convert { public abstract T convertFrom(final Type type, final ConvertMask mask, final ByteBuffer... buffers); - public abstract T convertFrom(final Type type, final ConvertMask[] masks, final ByteBuffer... buffers); - public abstract ByteBuffer[] convertTo(final Supplier supplier, final Object value); public abstract ByteBuffer[] convertTo(final Supplier supplier, final Type type, final Object value); diff --git a/src/org/redkale/convert/bson/BsonByteBufferReader.java b/src/org/redkale/convert/bson/BsonByteBufferReader.java index feb214b1a..dea6b38c8 100644 --- a/src/org/redkale/convert/bson/BsonByteBufferReader.java +++ b/src/org/redkale/convert/bson/BsonByteBufferReader.java @@ -26,16 +26,7 @@ public class BsonByteBufferReader extends BsonReader { private ByteBuffer currentBuffer; - protected ConvertMask mask; //mask二选一 - - protected ConvertMask[] masks; //mask二选一 - - protected BsonByteBufferReader(ConvertMask[] masks, ByteBuffer... buffers) { - this.masks = masks; - this.buffers = buffers; - if (buffers != null && buffers.length > 0) this.currentBuffer = buffers[currentIndex]; - if (this.masks.length != buffers.length) throw new RuntimeException("masks.length must equals buffers.length"); - } + protected ConvertMask mask; protected BsonByteBufferReader(ConvertMask mask, ByteBuffer... buffers) { this.mask = mask; @@ -50,15 +41,12 @@ public class BsonByteBufferReader extends BsonReader { this.currentBuffer = null; this.buffers = null; this.mask = null; - this.masks = null; return false; } @Override protected byte currentByte() { - if (mask != null) return mask.unmask(currentBuffer.get(currentBuffer.position())); - if (masks != null) return masks[this.currentIndex].unmask(currentBuffer.get(currentBuffer.position())); - return currentBuffer.get(currentBuffer.position()); + return mask == null ? currentBuffer.get(currentBuffer.position()) : mask.unmask(currentBuffer.get(currentBuffer.position())); } @Override @@ -97,12 +85,6 @@ public class BsonByteBufferReader extends BsonReader { } //------------------------------------------------------------ - protected byte readMaskByte() { - if (mask != null) return mask.unmask(this.currentBuffer.get()); - if (masks != null) return masks[this.currentIndex].unmask(this.currentBuffer.get()); - return this.currentBuffer.get(); - } - @Override public final boolean readBoolean() { return readByte() == 1; @@ -112,17 +94,13 @@ public class BsonByteBufferReader extends BsonReader { public byte readByte() { if (this.currentBuffer.hasRemaining()) { this.position++; - if (mask != null) return mask.unmask(this.currentBuffer.get()); - if (masks != null) return masks[this.currentIndex].unmask(this.currentBuffer.get()); - return this.currentBuffer.get(); + return mask == null ? this.currentBuffer.get() : mask.unmask(this.currentBuffer.get()); } for (;;) { this.currentBuffer = this.buffers[++this.currentIndex]; if (this.currentBuffer.hasRemaining()) { this.position++; - if (mask != null) return mask.unmask(this.currentBuffer.get()); - if (masks != null) return masks[this.currentIndex].unmask(this.currentBuffer.get()); - return this.currentBuffer.get(); + return mask == null ? this.currentBuffer.get() : mask.unmask(this.currentBuffer.get()); } } } @@ -133,10 +111,10 @@ public class BsonByteBufferReader extends BsonReader { int remain = this.currentBuffer.remaining(); if (remain >= 2) { this.position += 2; - if (mask == null && masks == null) { + if (mask == null) { return this.currentBuffer.getChar(); } else { - return (char) ((0xff00 & (readMaskByte() << 8)) | (0xff & readMaskByte())); + return (char) ((0xff00 & (mask.unmask(this.currentBuffer.get()) << 8)) | (0xff & mask.unmask(this.currentBuffer.get()))); } } } @@ -149,10 +127,10 @@ public class BsonByteBufferReader extends BsonReader { int remain = this.currentBuffer.remaining(); if (remain >= 2) { this.position += 2; - if (mask == null && masks == null) { + if (mask == null) { return this.currentBuffer.getShort(); } else { - return (short) ((0xff00 & (readMaskByte() << 8)) | (0xff & readMaskByte())); + return (short) ((0xff00 & (mask.unmask(this.currentBuffer.get()) << 8)) | (0xff & mask.unmask(this.currentBuffer.get()))); } } } @@ -165,13 +143,13 @@ public class BsonByteBufferReader extends BsonReader { int remain = this.currentBuffer.remaining(); if (remain >= 4) { this.position += 4; - if (mask == null && masks == null) { + if (mask == null) { return this.currentBuffer.getInt(); } else { - return ((readMaskByte() & 0xff) << 24) - | ((readMaskByte() & 0xff) << 16) - | ((readMaskByte() & 0xff) << 8) - | (readMaskByte() & 0xff); + return ((mask.unmask(this.currentBuffer.get()) & 0xff) << 24) + | ((mask.unmask(this.currentBuffer.get()) & 0xff) << 16) + | ((mask.unmask(this.currentBuffer.get()) & 0xff) << 8) + | (mask.unmask(this.currentBuffer.get()) & 0xff); } } } @@ -184,17 +162,17 @@ public class BsonByteBufferReader extends BsonReader { int remain = this.currentBuffer.remaining(); if (remain >= 8) { this.position += 8; - if (mask == null && masks == null) { + if (mask == null) { return this.currentBuffer.getLong(); } else { - return ((((long) readMaskByte() & 0xff) << 56) - | (((long) readMaskByte() & 0xff) << 48) - | (((long) readMaskByte() & 0xff) << 40) - | (((long) readMaskByte() & 0xff) << 32) - | (((long) readMaskByte() & 0xff) << 24) - | (((long) readMaskByte() & 0xff) << 16) - | (((long) readMaskByte() & 0xff) << 8) - | (((long) readMaskByte() & 0xff))); + return ((((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 56) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 48) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 40) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 32) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 24) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 16) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff) << 8) + | (((long) mask.unmask(this.currentBuffer.get()) & 0xff))); } } } @@ -222,22 +200,20 @@ public class BsonByteBufferReader extends BsonReader { return; } int len = bs.length - pos; - ConvertMask oneMask = mask; - if (masks != null) oneMask = masks[this.currentIndex]; if (remain >= len) { this.position += len; this.currentBuffer.get(bs, pos, len); - if (oneMask != null) { + if (mask != null) { for (int i = pos, end = pos + len; i < end; i++) { - bs[i] = oneMask.unmask(bs[i]); + bs[i] = mask.unmask(bs[i]); } } return; } this.currentBuffer.get(bs, pos, remain); - if (oneMask != null) { + if (mask != null) { for (int i = pos, end = pos + remain; i < end; i++) { - bs[i] = oneMask.unmask(bs[i]); + bs[i] = mask.unmask(bs[i]); } } this.position += remain; diff --git a/src/org/redkale/convert/bson/BsonConvert.java b/src/org/redkale/convert/bson/BsonConvert.java index 1c6abff04..649dec0b9 100644 --- a/src/org/redkale/convert/bson/BsonConvert.java +++ b/src/org/redkale/convert/bson/BsonConvert.java @@ -130,13 +130,6 @@ public final class BsonConvert extends BinaryConvert { return (T) factory.loadDecoder(type).convertFrom(new BsonByteBufferReader(mask, buffers)); } - @Override - @SuppressWarnings("unchecked") - public T convertFrom(final Type type, final ConvertMask[] masks, final ByteBuffer... buffers) { - if (type == null || buffers.length < 1) return null; - return (T) factory.loadDecoder(type).convertFrom(new BsonByteBufferReader(masks, buffers)); - } - @SuppressWarnings("unchecked") public T convertFrom(final Type type, final BsonReader reader) { if (type == null) return null; diff --git a/src/org/redkale/convert/json/JsonByteBufferReader.java b/src/org/redkale/convert/json/JsonByteBufferReader.java index 0580b3280..9760d7203 100644 --- a/src/org/redkale/convert/json/JsonByteBufferReader.java +++ b/src/org/redkale/convert/json/JsonByteBufferReader.java @@ -29,16 +29,7 @@ public class JsonByteBufferReader extends JsonReader { private ByteBuffer currentBuffer; - protected ConvertMask mask; //mask二选一 - - protected ConvertMask[] masks; //mask二选一 - - protected JsonByteBufferReader(ConvertMask[] masks, ByteBuffer... buffers) { - this.masks = masks; - this.buffers = buffers; - if (buffers != null && buffers.length > 0) this.currentBuffer = buffers[currentIndex]; - if (this.masks.length != buffers.length) throw new RuntimeException("masks.length must equals buffers.length"); - } + protected ConvertMask mask; protected JsonByteBufferReader(ConvertMask mask, ByteBuffer... buffers) { this.mask = mask; @@ -54,24 +45,19 @@ public class JsonByteBufferReader extends JsonReader { this.currentBuffer = null; this.buffers = null; this.mask = null; - this.masks = null; return false; } protected byte nextByte() { if (this.currentBuffer.hasRemaining()) { this.position++; - if (mask != null) return mask.unmask(this.currentBuffer.get()); - if (masks != null) return masks[this.currentIndex].unmask(this.currentBuffer.get()); - return this.currentBuffer.get(); + return mask == null ? this.currentBuffer.get() : mask.unmask(this.currentBuffer.get()); } for (;;) { this.currentBuffer = this.buffers[++this.currentIndex]; if (this.currentBuffer.hasRemaining()) { this.position++; - if (mask != null) return mask.unmask(this.currentBuffer.get()); - if (masks != null) return masks[this.currentIndex].unmask(this.currentBuffer.get()); - return this.currentBuffer.get(); + return mask == null ? this.currentBuffer.get() : mask.unmask(this.currentBuffer.get()); } } } diff --git a/src/org/redkale/convert/json/JsonConvert.java b/src/org/redkale/convert/json/JsonConvert.java index 1630aba58..3588e8bad 100644 --- a/src/org/redkale/convert/json/JsonConvert.java +++ b/src/org/redkale/convert/json/JsonConvert.java @@ -121,12 +121,6 @@ public final class JsonConvert extends TextConvert { return (T) factory.loadDecoder(type).convertFrom(new JsonByteBufferReader(mask, buffers)); } - @Override - public T convertFrom(final Type type, final ConvertMask[] masks, final ByteBuffer... buffers) { - if (type == null || buffers == null || buffers.length == 0) return null; - return (T) factory.loadDecoder(type).convertFrom(new JsonByteBufferReader(masks, buffers)); - } - public T convertFrom(final Type type, final JsonReader reader) { if (type == null) return null; @SuppressWarnings("unchecked")