Skip to content

Commit bc9f4ca

Browse files
authored
Merge pull request #178 from cquiroz/serialization-removed
Remove custom serialization format
2 parents a3107ac + f5c371f commit bc9f4ca

File tree

86 files changed

+62
-5005
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+62
-5005
lines changed

.github/workflows/scala.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ jobs:
88

99
steps:
1010
- uses: actions/checkout@v1
11-
- name: Set up JDK 13
11+
- name: Set up JDK 14
1212
uses: olafurpg/setup-scala@v2
1313
with:
14-
java-version: 13
14+
java-version: 14
1515
- name: Cache Coursier
1616
uses: actions/cache@v1
1717
with:

build.sbt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ lazy val scalajavatime = crossProject(JVMPlatform, JSPlatform)
128128
.in(file("core"))
129129
.settings(commonSettings: _*)
130130
.settings(
131-
name := "scala-java-time"
131+
name := "scala-java-time",
132+
libraryDependencies += "org.portable-scala" %%% "portable-scala-reflect" % "1.0.0"
132133
)
133134
.jsSettings(
134135
scalacOptions ++= {
@@ -172,11 +173,13 @@ lazy val scalajavatimeTZDB = crossProject(JVMPlatform, JSPlatform)
172173
}.taskValue
173174
)
174175
.jvmSettings(
176+
includeTTBP := true,
177+
jsOptimized := false,
175178
skip.in(publish) := scalaJSVersion06
176179
)
177180
.dependsOn(scalajavatime)
178181

179-
lazy val scalajavatimeTZDBJVM = scalajavatimeTZDB.jvm
182+
lazy val scalajavatimeTZDBJVM = scalajavatimeTZDB.jvm.enablePlugins(TzdbPlugin)
180183
lazy val scalajavatimeTZDBJS = scalajavatimeTZDB.js.enablePlugins(TzdbPlugin)
181184

182185
lazy val scalajavatimeTests = crossProject(JVMPlatform, JSPlatform)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.threeten.bp.zone
2+
3+
import org.threeten.bp.ZoneOffset
4+
5+
/**
6+
* Minimal provider for UTC
7+
*/
8+
final class DefaultTzdbZoneRulesProvider extends ZoneRulesProvider {
9+
10+
override protected def provideZoneIds: java.util.Set[String] = {
11+
val zones = new java.util.HashSet[String]()
12+
zones.add("UTC")
13+
zones.add("GMT")
14+
zones
15+
}
16+
17+
override protected def provideRules(regionId: String, forCaching: Boolean): ZoneRules =
18+
ZoneRules.of(ZoneOffset.UTC,
19+
ZoneOffset.UTC,
20+
new java.util.ArrayList(),
21+
new java.util.ArrayList(),
22+
new java.util.ArrayList())
23+
24+
override protected def provideVersions(
25+
zoneId: String
26+
): java.util.NavigableMap[String, ZoneRules] = {
27+
val r = new ZoneMap[String, ZoneRules]
28+
// FIXME the version should be provided by the db
29+
r.put("2017c", provideRules("UTC", true))
30+
r
31+
}
32+
}

core/jvm/src/main/scala/org/threeten/bp/zone/ServiceLoaderZoneRulesInitializer.scala

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,25 @@
3131
*/
3232
package org.threeten.bp.zone
3333

34-
import java.util.ServiceConfigurationError
35-
import java.util.ServiceLoader
36-
import scala.collection.JavaConverters._
34+
import org.portablescala.reflect._
3735

3836
/**
39-
* Try to load time zone rules from implementations provided by {@link ServiceLoader}.
37+
* Try to load time zone rules from implementations via reflefction
4038
*/
4139
class ServiceLoaderZoneRulesInitializer extends ZoneRulesInitializer {
4240

4341
override def initializeProviders(): Unit = {
44-
val loader: ServiceLoader[ZoneRulesProvider] =
45-
ServiceLoader.load(classOf[ZoneRulesProvider], ZoneRulesProvider.getClass.getClassLoader())
46-
loader.iterator.asScala.foreach { provider =>
47-
try {
48-
ZoneRulesProvider.registerProvider(provider)
49-
} catch {
50-
case ex: ServiceConfigurationError =>
51-
if (!(ex.getCause().isInstanceOf[SecurityException])) {
52-
throw ex
53-
}
42+
// Load via reflection the tzdb
43+
// find the package name dynamically to support both org.threeten.bp and java.time packages
44+
val packageName = this.getClass.getName.split("\\.").init.mkString(".")
45+
val optClassData = Reflect.lookupInstantiatableClass(s"$packageName.TzdbZoneRulesProvider")
46+
println(packageName)
47+
println(optClassData)
48+
optClassData
49+
.fold(List[ZoneRulesProvider](new DefaultTzdbZoneRulesProvider())) { c =>
50+
val instance = c.newInstance().asInstanceOf[ZoneRulesProvider]
51+
List[ZoneRulesProvider](instance)
5452
}
55-
}
53+
.foreach(provider => ZoneRulesProvider.registerProvider(provider))
5654
}
5755
}

0 commit comments

Comments
 (0)