All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.harmonysoft.oss.common.time.clock.ClockProviderImpl.kt Maven / Gradle / Ivy

package tech.harmonysoft.oss.common.time.clock

import java.time.Clock
import java.time.ZoneId
import javax.inject.Named

@Named
class ClockProviderImpl : ClockProvider {

    private val delegate: ClockProvider by lazy {
        val zone = System.getProperty(TIME_ZONE_KEY).takeUnless { it.isNullOrBlank() }?.let {
            ZoneId.of(it)
        } ?: ZoneId.systemDefault()
        ZonedSystemClockProvider(zone)
    }

    override fun getData(): Clock {
        return delegate.data
    }

    override fun withZone(zone: ZoneId): ClockProvider {
        return delegate.withZone(zone)
    }

    override fun refresh() {
    }

    override fun probe(): Clock {
        return data
    }

    override fun equals(other: Any?): Boolean {
        return delegate == (other as? ClockProviderImpl)?.delegate
    }

    override fun hashCode(): Int {
        return delegate.hashCode()
    }

    override fun toString(): String {
        return delegate.toString()
    }

    companion object {

        const val TIME_ZONE_KEY = "APP_TIME_ZONE"
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy