Skip to content

Commit 36f0b2f

Browse files
committed
Make MessageBufferU constructor public, close msgpack#210
So it can be used to unpack read-only ByteBuffers
1 parent c76aee5 commit 36f0b2f

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

msgpack-core/src/main/java/org/msgpack/core/buffer/MessageBufferU.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313
public class MessageBufferU extends MessageBuffer {
1414

15-
MessageBufferU(ByteBuffer bb) {
15+
public MessageBufferU(ByteBuffer bb) {
1616
super(null, 0L, bb.capacity(), bb.order(ByteOrder.BIG_ENDIAN));
1717
checkNotNull(reference);
1818
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.msgpack.core
2+
3+
import akka.util.ByteString
4+
import org.msgpack.core.buffer.{MessageBufferU, MessageBuffer, MessageBufferInput, ByteBufferInput}
5+
6+
class ByteStringTest extends MessagePackSpec {
7+
8+
val unpackedString = "foo"
9+
val byteString = ByteString(createMessagePackData(_.packString(unpackedString)))
10+
11+
"Regular ByteBufferInput" should {
12+
"fail to read a ByteString's ByteBuffer" in {
13+
14+
val input = new ByteBufferInput(byteString.asByteBuffer)
15+
16+
a[RuntimeException] shouldBe thrownBy(new MessageUnpacker(input).unpackString())
17+
}
18+
}
19+
20+
"A MessageBufferU based ByteBufferInput" should {
21+
"be able to read a ByteString's ByteBuffer" in {
22+
23+
val input = new MessageBufferInput {
24+
25+
private var isRead = false
26+
27+
override def next(): MessageBuffer =
28+
if (isRead) {
29+
null
30+
} else {
31+
isRead = true
32+
new MessageBufferU(byteString.asByteBuffer)
33+
}
34+
35+
override def close(): Unit = {}
36+
}
37+
38+
new MessageUnpacker(input).unpackString() shouldBe unpackedString
39+
}
40+
}
41+
}

project/Build.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ object Build extends Build {
165165
"org.xerial" % "xerial-core" % "3.3.5" % "test",
166166
"org.msgpack" % "msgpack" % "0.6.11" % "test",
167167
junitInterface,
168-
"commons-codec" % "commons-codec" % "1.10" % "test"
168+
"commons-codec" % "commons-codec" % "1.10" % "test",
169+
"com.typesafe.akka" %% "akka-actor"% "2.3.9"
169170
)
170171

171172
val jacksonLib = Seq(

0 commit comments

Comments
 (0)