Skip to content

Commit 4d04711

Browse files
authored
KAFKA-15602: revert KAFKA-4852 (apache#14617)
This PR reverts - apache@51dbd17 - apache@496ae05 Reviewers: Philip Nee <pnee@confluent.io>, Guozhang Wang <guozhang@confluent.io>
1 parent 2e2f32c commit 4d04711

File tree

2 files changed

+15
-36
lines changed

2 files changed

+15
-36
lines changed

clients/src/main/java/org/apache/kafka/common/serialization/ByteBufferSerializer.java

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,34 @@
1616
*/
1717
package org.apache.kafka.common.serialization;
1818

19-
import org.apache.kafka.common.utils.Utils;
20-
2119
import java.nio.ByteBuffer;
2220

2321
/**
24-
* Do not need to flip before call <i>serialize(String, ByteBuffer)</i>. For example:
25-
*
26-
* <blockquote>
27-
* <pre>
28-
* ByteBufferSerializer serializer = ...; // Create Serializer
29-
* ByteBuffer buffer = ...; // Allocate ByteBuffer
30-
* buffer.put(data); // Put data into buffer, do not need to flip
31-
* serializer.serialize(topic, buffer); // Serialize buffer
32-
* </pre>
33-
* </blockquote>
22+
* {@code ByteBufferSerializer} always {@link ByteBuffer#rewind() rewinds} the position of the input buffer to zero for
23+
* serialization. A manual rewind is not necessary.
24+
* <p>
25+
* Note: any existing buffer position is ignored.
26+
* <p>
27+
* The position is also rewound back to zero before {@link #serialize(String, ByteBuffer)}
28+
* returns.
3429
*/
3530
public class ByteBufferSerializer implements Serializer<ByteBuffer> {
36-
37-
@Override
3831
public byte[] serialize(String topic, ByteBuffer data) {
39-
if (data == null) {
32+
if (data == null)
4033
return null;
41-
}
34+
35+
data.rewind();
4236

4337
if (data.hasArray()) {
44-
final byte[] arr = data.array();
38+
byte[] arr = data.array();
4539
if (data.arrayOffset() == 0 && arr.length == data.remaining()) {
4640
return arr;
4741
}
4842
}
4943

50-
data.flip();
51-
return Utils.toArray(data);
44+
byte[] ret = new byte[data.remaining()];
45+
data.get(ret, 0, ret.length);
46+
data.rewind();
47+
return ret;
5248
}
5349
}

clients/src/test/java/org/apache/kafka/common/serialization/SerializationTest.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -406,23 +406,6 @@ private Serde<String> getStringSerde(String encoder) {
406406
return Serdes.serdeFrom(serializer, deserializer);
407407
}
408408

409-
@Test
410-
public void testByteBufferSerializer() {
411-
final byte[] bytes = "Hello".getBytes(UTF_8);
412-
final ByteBuffer heapBuffer0 = ByteBuffer.allocate(bytes.length + 1).put(bytes);
413-
final ByteBuffer heapBuffer1 = ByteBuffer.allocate(bytes.length).put(bytes);
414-
final ByteBuffer heapBuffer2 = ByteBuffer.wrap(bytes);
415-
final ByteBuffer directBuffer0 = ByteBuffer.allocateDirect(bytes.length + 1).put(bytes);
416-
final ByteBuffer directBuffer1 = ByteBuffer.allocateDirect(bytes.length).put(bytes);
417-
try (final ByteBufferSerializer serializer = new ByteBufferSerializer()) {
418-
assertArrayEquals(bytes, serializer.serialize(topic, heapBuffer0));
419-
assertArrayEquals(bytes, serializer.serialize(topic, heapBuffer1));
420-
assertArrayEquals(bytes, serializer.serialize(topic, heapBuffer2));
421-
assertArrayEquals(bytes, serializer.serialize(topic, directBuffer0));
422-
assertArrayEquals(bytes, serializer.serialize(topic, directBuffer1));
423-
}
424-
}
425-
426409
@ParameterizedTest
427410
@ValueSource(booleans = { true, false })
428411
public void testBooleanSerializer(Boolean dataToSerialize) {

0 commit comments

Comments
 (0)