Skip to content

Commit 2453791

Browse files
committed
Add DataOutputStream::writeBoolean
1 parent f03342b commit 2453791

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

java_runtime/src/classes/java/io/data_output_stream.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ impl DataOutputStream {
1919
methods: vec![
2020
JavaMethodProto::new("<init>", "(Ljava/io/OutputStream;)V", Self::init, Default::default()),
2121
JavaMethodProto::new("write", "(I)V", Self::write, Default::default()),
22-
JavaMethodProto::new("writeByte", "(I)V", Self::write, Default::default()),
22+
JavaMethodProto::new("writeByte", "(I)V", Self::write_byte, Default::default()),
23+
JavaMethodProto::new("writeBoolean", "(Z)V", Self::write_boolean, Default::default()),
2324
JavaMethodProto::new("writeInt", "(I)V", Self::write_int, Default::default()),
2425
JavaMethodProto::new("writeShort", "(I)V", Self::write_short, Default::default()),
2526
JavaMethodProto::new("writeLong", "(J)V", Self::write_long, Default::default()),
@@ -43,10 +44,28 @@ impl DataOutputStream {
4344
}
4445

4546
async fn write(jvm: &Jvm, _: &mut RuntimeContext, this: ClassInstanceRef<Self>, b: i32) -> Result<()> {
46-
tracing::debug!("java.io.DataOutputStream::write({:?}, {:?})", &this, b);
47+
tracing::debug!("java.io.DataOutputStream::write({this:?}, {b:?})");
4748

4849
let out = jvm.get_field(&this, "out", "Ljava/io/OutputStream;").await?;
49-
let _: () = jvm.invoke_virtual(&out, "write", "(I)V", [b.into()]).await?;
50+
let _: () = jvm.invoke_virtual(&out, "write", "(I)V", (b,)).await?;
51+
52+
Ok(())
53+
}
54+
55+
async fn write_byte(jvm: &Jvm, _: &mut RuntimeContext, this: ClassInstanceRef<Self>, v: i32) -> Result<()> {
56+
tracing::debug!("java.io.DataOutputStream::writeByte({this:?}, {v:?})");
57+
58+
let out = jvm.get_field(&this, "out", "Ljava/io/OutputStream;").await?;
59+
let _: () = jvm.invoke_virtual(&out, "write", "(I)V", (v,)).await?;
60+
61+
Ok(())
62+
}
63+
64+
async fn write_boolean(jvm: &Jvm, _: &mut RuntimeContext, this: ClassInstanceRef<Self>, v: bool) -> Result<()> {
65+
tracing::debug!("java.io.DataOutputStream::writeBoolean({this:?}, {v:?})");
66+
67+
let out = jvm.get_field(&this, "out", "Ljava/io/OutputStream;").await?;
68+
let _: () = jvm.invoke_virtual(&out, "writeByte", "(I)V", (v as i32,)).await?;
5069

5170
Ok(())
5271
}

0 commit comments

Comments
 (0)