Converting Java to Scala durations

Is there an elegant way to convert java.time.Duration to scala.concurrent.duration.FiniteDuration?

I am trying to do the following simple use of Config in Scala:

val d = ConfigFactory.load().getDuration("application.someTimeout")

However I don't see any simple way to use the result in Scala. Certainly hope the good people of Typesafe didn't expect me to do this:

FiniteDuration(d.getNano, TimeUnit.NANOSECONDS)

Edit: Note the line has a bug, which proves the point. See the selected answer below.

Answers


I don't know whether an explicit conversion is the only way, but if you want to do it right

FiniteDuration(d.toNanos, TimeUnit.NANOSECONDS)

toNanos will return the total duration, while getNano will only the nanoseconds component, which is not what you want.

E.g.

import java.time.Duration
import jata.time.temporal.ChronoUnit
Duration.of(1, ChronoUnit.HOURS).getNano // 0
Duration.of(1, ChronoUnit.HOURS).toNanos  // 3600000000000L

That being said, you can also roll your own implicit conversion

implicit def asFiniteDuration(d: java.time.Duration) =
  scala.concurrent.duration.Duration.fromNanos(d.toNanos)

and when you have it in scope:

val d: FiniteDuration = ConfigFactory.load().getDuration("application.someTimeout")

Need Your Help

Return UTF-16 encoded gzip content response to browser

.net asp.net-mvc asp.net-mvc-3 http browser

I have a number of files that are saved to disc and compressed using gzip as they in the end are going to be displayed in a browser. I use ASP.NET MVC and by adding the below header in code

jQuery nav bar with auth user name

jquery css ajax twitter-bootstrap

I want to add a nav bar to the top of all my pages (using twitter bootstrap)

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.