Skip to content

Commit b82dcac

Browse files
committed
Encode clojure.lang.BigInt correctly
1 parent 753e1b6 commit b82dcac

File tree

9 files changed

+33
-24
lines changed

9 files changed

+33
-24
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ Add Java dependency in POM file:
197197
<dependency>
198198
<groupId>org.scalamolecule</groupId>
199199
<artifactId>datomic-client-api-java-scala</artifactId>
200-
<version>1.0.1</version>
200+
<version>1.0.2</version>
201201
</dependency>
202202
203203
<!-- If using dev-local -->
@@ -218,7 +218,7 @@ Add Java dependency in POM file:
218218
Add Scala dependency in sbt build file (crosscompiles to Scala 2.12 and 2.13):
219219
```
220220
libraryDependencies ++= Seq(
221-
"org.scalamolecule" %% "datomic-client-api-java-scala" % "1.0.1",
221+
"org.scalamolecule" %% "datomic-client-api-java-scala" % "1.0.2",
222222
223223
// If using dev-local
224224
"com.datomic" % "dev-local" % "1.0.238",

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import sbt.url
44

55
lazy val commonSettings = Seq(
66
name := "datomic-client-api-java-scala",
7-
ThisBuild / version := "1.0.1",
7+
ThisBuild / version := "1.0.2",
88
crossScalaVersions := Seq("2.12.15", "2.13.6"),
99
ThisBuild / scalaVersion := "2.13.6",
1010
organization := "org.scalamolecule",

core/src/main/scala/datomicClient/ClojureBridge.scala

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package datomicClient
33
import java.net.URI
44
import java.util.{List => jList, Map => jMap}
55
import clojure.java.api.Clojure
6-
import clojure.lang.{IFn, PersistentVector, Keyword => clKeyword, Symbol => clSymbol}
6+
import clojure.lang.{IFn, PersistentVector, Keyword => clKeyword, Symbol => clSymbol, BigInt => clBigInt}
77
import datomic.Util._
88
import datomic.db.DbId
99
import us.bpsm.edn.printer.Printer.Fn
@@ -37,28 +37,34 @@ trait ClojureBridge {
3737
// Printing edn with us.bpsm.edn
3838
// Adding recognition of clojure Keyword and Datomic DbId
3939

40-
lazy val clPersVec : Fn[PersistentVector] = new Printer.Fn[PersistentVector]() {
40+
lazy val clPersVec: Fn[PersistentVector] = new Printer.Fn[PersistentVector]() {
4141
override def eval(self: PersistentVector, writer: Printer): Unit = {
4242
writer.append('[')
43-
self.forEach(o => writer.printValue(o))
43+
self.forEach(o => writer.printValue(o))
4444
writer.append(']')
4545
}
4646
}
47-
lazy val clKw : Fn[clKeyword] = new Printer.Fn[clKeyword]() {
47+
lazy val clKw : Fn[clKeyword] = new Printer.Fn[clKeyword]() {
4848
override def eval(self: clKeyword, writer: Printer): Unit = {
4949
writer.softspace.append(self.toString).softspace
5050
}
5151
}
52-
lazy val clSym: Fn[clSymbol] = new Printer.Fn[clSymbol]() {
52+
lazy val clSym : Fn[clSymbol] = new Printer.Fn[clSymbol]() {
5353
override def eval(self: clSymbol, writer: Printer): Unit = {
5454
writer.softspace.append(self.toString).softspace
5555
}
5656
}
57-
lazy val uri: Fn[URI] = new Printer.Fn[URI]() {
57+
lazy val clBigInt: Fn[clBigInt] = new Printer.Fn[clBigInt]() {
58+
override def eval(self: clBigInt, writer: Printer): Unit = {
59+
writer.softspace.append(self.toString + "N").softspace
60+
}
61+
}
62+
lazy val uri : Fn[URI] = new Printer.Fn[URI]() {
5863
override def eval(self: URI, writer: Printer): Unit = {
59-
writer.append(s""" #=(new java.net.URI "${self.toString}")""")}
64+
writer.append(s""" #=(new java.net.URI "${self.toString}")""")
65+
}
6066
}
61-
lazy val dbId : Fn[DbId] = new Printer.Fn[DbId]() {
67+
lazy val dbId : Fn[DbId] = new Printer.Fn[DbId]() {
6268
override def eval(self: DbId, writer: Printer): Unit = {
6369
if (self.idx.asInstanceOf[Long] > 0) {
6470
// Entity id
@@ -77,6 +83,7 @@ trait ClojureBridge {
7783
.put(classOf[PersistentVector], clPersVec)
7884
.put(classOf[clKeyword], clKw)
7985
.put(classOf[clSymbol], clSym)
86+
.put(classOf[clBigInt], clBigInt)
8087
.put(classOf[URI], uri)
8188
.put(classOf[DbId], dbId)
8289
.build
@@ -85,6 +92,7 @@ trait ClojureBridge {
8592
.put(classOf[PersistentVector], clPersVec)
8693
.put(classOf[clKeyword], clKw)
8794
.put(classOf[clSymbol], clSym)
95+
.put(classOf[clBigInt], clBigInt)
8896
.put(classOf[URI], uri)
8997
.put(classOf[DbId], dbId)
9098
.build

tests/src/test/java/datomicJava/client/api/async/AsyncDatomicTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public void createClient() throws ExecutionException, InterruptedException {
3535
add path to where you want to save data as per instructions in link above
3636
3737
Add dependency to dev-local in your project
38-
"com.datomic" % "dev-local" % "0.9.229",
38+
"com.datomic" % "dev-local" % "1.0.238",
3939
4040
As long dev-local has a dependency on clojure 1.10.0-alpha4
4141
we also need to import a newer version of clojure
42-
"org.clojure" % "clojure" % "1.10.1",
42+
"org.clojure" % "clojure" % "1.10.3",
4343
4444
(No need to start a transactor)
4545
*/

tests/src/test/java/datomicJava/client/api/sync/DatomicTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ public void createClient() {
3434
add path to where you want to save data as per instructions in link above
3535
3636
Add dependency to dev-local in your project
37-
"com.datomic" % "dev-local" % "0.9.229",
37+
"com.datomic" % "dev-local" % "1.0.238",
3838
3939
As long dev-local has a dependency on clojure 1.10.0-alpha4
4040
we also need to import a newer version of clojure
41-
"org.clojure" % "clojure" % "1.10.1",
41+
"org.clojure" % "clojure" % "1.10.3",
4242
4343
(No need to start a transactor)
4444
*/

tests/src/test/scala-2.13+/datomicScala/client/api/async/AsyncDatomicTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ class AsyncDatomicTest extends SpecAsync with AnomalyWrapper {
2525
add path to where you want to save data as per instructions in link above
2626
2727
Add dependency to dev-local in your project
28-
"com.datomic" % "dev-local" % "0.9.229",
28+
"com.datomic" % "dev-local" % "1.0.238",
2929
3030
As long dev-local has a dependency on clojure 1.10.0-alpha4
3131
we also need to import a newer version of clojure
32-
"org.clojure" % "clojure" % "1.10.1",
32+
"org.clojure" % "clojure" % "1.10.3",
3333
3434
(No need to start a transactor)
3535
*/

tests/src/test/scala-2.13+/datomicScala/client/api/sync/DatomicTest.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datomicScala.client.api.sync
22

33
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain
4+
import datomic.Peer.function
45
import datomic.Util
56
import datomic.Util._
67
import datomicClient.anomaly.{AnomalyWrapper, Forbidden, NotFound}
@@ -21,11 +22,11 @@ class DatomicTest extends Spec with AnomalyWrapper {
2122
add path to where you want to save data as per instructions in link above
2223
2324
Add dependency to dev-local in your project
24-
"com.datomic" % "dev-local" % "0.9.235",
25+
"com.datomic" % "dev-local" % "1.0.238",
2526
2627
As long dev-local has a dependency on clojure 1.10.0-alpha4
2728
we also need to import a newer version of clojure like this:
28-
"org.clojure" % "clojure" % "1.10.1"
29+
"org.clojure" % "clojure" % "1.10.3"
2930
3031
(No need to start a transactor)
3132
*/
@@ -100,7 +101,7 @@ class DatomicTest extends Spec with AnomalyWrapper {
100101
case notFound: NotFound =>
101102
// Is "x" or "x: nodename nor servname provided, or not known"
102103
notFound.msg.startsWith("x") === true
103-
case NonFatal(e) =>
104+
case NonFatal(e) =>
104105
throw new RuntimeException("Unexpectedly didn't throw a `NotFound` exception. Got " + e)
105106
}
106107

tests/src/test/scala-2.13-/datomicScala/client/api/async/AsyncDatomicTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ class AsyncDatomicTest extends SpecAsync with AnomalyWrapper {
2525
add path to where you want to save data as per instructions in link above
2626
2727
Add dependency to dev-local in your project
28-
"com.datomic" % "dev-local" % "0.9.229",
28+
"com.datomic" % "dev-local" % "1.0.238",
2929
3030
As long dev-local has a dependency on clojure 1.10.0-alpha4
3131
we also need to import a newer version of clojure
32-
"org.clojure" % "clojure" % "1.10.1",
32+
"org.clojure" % "clojure" % "1.10.3",
3333
3434
(No need to start a transactor)
3535
*/

tests/src/test/scala-2.13-/datomicScala/client/api/sync/DatomicTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ class DatomicTest extends Spec with AnomalyWrapper {
2121
add path to where you want to save data as per instructions in link above
2222
2323
Add dependency to dev-local in your project
24-
"com.datomic" % "dev-local" % "0.9.229",
24+
"com.datomic" % "dev-local" % "1.0.238",
2525
2626
As long dev-local has a dependency on clojure 1.10.0-alpha4
2727
we also need to import a newer version of clojure
28-
"org.clojure" % "clojure" % "1.10.1",
28+
"org.clojure" % "clojure" % "1.10.3",
2929
3030
(No need to start a transactor)
3131
*/

0 commit comments

Comments
 (0)