Skip to content

Commit 3663530

Browse files
committed
Add java.util.TimeZone
1 parent ea5249d commit 3663530

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

java_runtime/src/classes/java/util.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ mod hashtable;
1313
mod properties;
1414
mod random;
1515
mod stack;
16+
mod time_zone;
1617
mod timer;
1718
mod timer_task;
1819
mod vector;
1920

2021
pub use self::{
2122
abstract_collection::AbstractCollection, abstract_list::AbstractList, calendar::Calendar, date::Date, dictionary::Dictionary,
2223
empty_stack_exception::EmptyStackException, enumeration::Enumeration, gregorian_calendar::GregorianCalendar, hashtable::Hashtable,
23-
properties::Properties, random::Random, stack::Stack, timer::Timer, timer_task::TimerTask, vector::Vector,
24+
properties::Properties, random::Random, stack::Stack, time_zone::TimeZone, timer::Timer, timer_task::TimerTask, vector::Vector,
2425
};
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
use alloc::vec;
2+
3+
use java_class_proto::JavaMethodProto;
4+
use java_constants::MethodAccessFlags;
5+
use jvm::{ClassInstanceRef, Jvm, Result};
6+
7+
use crate::{RuntimeClassProto, RuntimeContext, classes::java::lang::String};
8+
9+
// class java.util.TimeZone
10+
pub struct TimeZone;
11+
12+
impl TimeZone {
13+
pub fn as_proto() -> RuntimeClassProto {
14+
RuntimeClassProto {
15+
name: "java/util/TimeZone",
16+
parent_class: Some("java/lang/Object"),
17+
interfaces: vec![],
18+
methods: vec![
19+
JavaMethodProto::new("<init>", "()V", Self::init, Default::default()),
20+
JavaMethodProto::new(
21+
"getTimeZone",
22+
"(Ljava/lang/String;)Ljava/util/TimeZone;",
23+
Self::get_time_zone,
24+
MethodAccessFlags::STATIC,
25+
),
26+
],
27+
fields: vec![],
28+
}
29+
}
30+
31+
async fn init(jvm: &Jvm, _: &mut RuntimeContext, this: ClassInstanceRef<Self>) -> Result<()> {
32+
tracing::debug!("java.util.TimeZone::<init>({:?})", &this);
33+
34+
let _: () = jvm.invoke_special(&this, "java/lang/Object", "<init>", "()V", ()).await?;
35+
36+
Ok(())
37+
}
38+
39+
async fn get_time_zone(jvm: &Jvm, _: &mut RuntimeContext, id: ClassInstanceRef<String>) -> Result<ClassInstanceRef<Self>> {
40+
tracing::warn!("stub java.util.TimeZone::getTimeZone({id:?})");
41+
42+
let result = jvm.new_class("java/util/TimeZone", "()V", ()).await?;
43+
44+
Ok(result.into())
45+
}
46+
}

java_runtime/src/loader.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ pub fn get_runtime_class_proto(name: &str) -> Option<RuntimeClassProto> {
7676
crate::classes::java::util::Stack::as_proto(),
7777
crate::classes::java::util::Timer::as_proto(),
7878
crate::classes::java::util::TimerTask::as_proto(),
79+
crate::classes::java::util::TimeZone::as_proto(),
7980
crate::classes::java::util::Vector::as_proto(),
8081
crate::classes::java::util::jar::Attributes::as_proto(),
8182
crate::classes::java::util::jar::JarEntry::as_proto(),

0 commit comments

Comments
 (0)