This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fury-site.git
The following commit(s) were added to refs/heads/main by this push:
new e42666bb 🔄 synced local 'docs/guide/' with remote 'docs/guide/'
e42666bb is described below
commit e42666bbf27bf47c908358c34f1084ee430aba93
Author: chaokunyang <[email protected]>
AuthorDate: Sun Nov 10 11:38:12 2024 +0000
🔄 synced local 'docs/guide/' with remote 'docs/guide/'
---
docs/guide/scala_guide.md | 36 ++++++++++++++++++++++--------------
1 file changed, 22 insertions(+), 14 deletions(-)
diff --git a/docs/guide/scala_guide.md b/docs/guide/scala_guide.md
index 534667a1..51ef4f03 100644
--- a/docs/guide/scala_guide.md
+++ b/docs/guide/scala_guide.md
@@ -28,6 +28,27 @@ To add a dependency on Fury scala for scala 3 with sbt, use
the following:
libraryDependencies += "org.apache.fury" % "fury-scala_3" % "0.9.0"
```
+## Quict Start
+
+```scala
+case class Person(name: String, id: Long, github: String)
+case class Point(x : Int, y : Int, z : Int)
+
+object ScalaExample {
+ val fury: Fury = Fury.builder().withScalaOptimizationEnabled(true).build()
+ // Register optimized fury serializers for scala
+ ScalaSerializers.registerSerializers(fury)
+ fury.register(classOf[Person])
+ fury.register(classOf[Point])
+
+ def main(args: Array[String]): Unit = {
+ val p = Person("Shawn Yang", 1, "https://github.com/chaokunyang")
+ println(fury.deserialize(fury.serialize(p)))
+ println(fury.deserialize(fury.serialize(Point(1, 2, 3))))
+ }
+}
+```
+
## Fury creation
When using fury for scala serialization, you should create fury at least with
following options:
@@ -35,29 +56,16 @@ When using fury for scala serialization, you should create
fury at least with fo
```scala
import org.apache.fury.Fury
import org.apache.fury.serializer.scala.ScalaSerializers
-import
org.apache.fury.serializer.collection.CollectionSerializers.DefaultJavaCollectionSerializer
-val fury = Fury.builder()
- .withScalaOptimizationEnabled(true)
- .requireClassRegistration(true)
- .withRefTracking(true)
- .build()
+val fury = Fury.builder().withScalaOptimizationEnabled(true).build()
// Register optimized fury serializers for scala
ScalaSerializers.registerSerializers(fury)
-// serialize range as (start, step, end) instead of collection
-// this will be handled in next version automatically.
-fury.registerSerializer(classOf[Range.Inclusive],
classOf[DefaultJavaCollectionSerializer])
-fury.registerSerializer(classOf[Range.Exclusive],
classOf[DefaultJavaCollectionSerializer])
-fury.registerSerializer(classOf[NumericRange],
classOf[DefaultJavaCollectionSerializer])
-fury.registerSerializer(classOf[NumericRange.Inclusive],
classOf[DefaultJavaCollectionSerializer])
-fury.registerSerializer(classOf[NumericRange.Exclusive],
classOf[DefaultJavaCollectionSerializer])
```
Depending on the object types you serialize, you may need to register some
scala internal types:
```scala
-fury.register(Class.forName("scala.collection.generic.DefaultSerializationProxy"))
fury.register(Class.forName("scala.Enumeration.Val"))
```
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]