From 85ca2b7701d30c420f7aa05ccedac52c26a8688f Mon Sep 17 00:00:00 2001 From: GuilhermeWerner <26710260+GuilhermeWerner@users.noreply.github.com> Date: Sat, 12 Jun 2021 11:25:00 -0300 Subject: [PATCH] Migrate Library to Kotlin --- android/build.gradle | 2 + build.gradle | 2 +- library/build.gradle | 27 +++++------ .../com/tribufu/sdk/Handler.kt} | 2 +- .../com/tribufu/sdk/System.kt} | 2 +- .../main/kotlin/com/tribufu/sdk/TribuFu.kt | 13 ++++++ .../kotlin/com/tribufu/sdk/models/Email.kt | 10 +++++ .../com/tribufu/sdk/models/User.kt} | 45 ++++++++++++------- .../main/scala/com/tribufu/sdk/TribuFu.scala | 17 ------- .../scala/com/tribufu/sdk/models/Email.scala | 11 ----- .../test/kotlin/library/kotlin/TribuFuTest.kt | 13 ++++++ .../scala/com/tribufu/sdk/TribuFuSuite.scala | 16 ------- 12 files changed, 81 insertions(+), 79 deletions(-) rename library/src/main/{scala/com/tribufu/sdk/System.scala => kotlin/com/tribufu/sdk/Handler.kt} (76%) rename library/src/main/{scala/com/tribufu/sdk/Handler.scala => kotlin/com/tribufu/sdk/System.kt} (77%) create mode 100644 library/src/main/kotlin/com/tribufu/sdk/TribuFu.kt create mode 100644 library/src/main/kotlin/com/tribufu/sdk/models/Email.kt rename library/src/main/{scala/com/tribufu/sdk/models/User.scala => kotlin/com/tribufu/sdk/models/User.kt} (56%) delete mode 100644 library/src/main/scala/com/tribufu/sdk/TribuFu.scala delete mode 100644 library/src/main/scala/com/tribufu/sdk/models/Email.scala create mode 100644 library/src/test/kotlin/library/kotlin/TribuFuTest.kt delete mode 100644 library/src/test/scala/com/tribufu/sdk/TribuFuSuite.scala diff --git a/android/build.gradle b/android/build.gradle index ed7b61d..c4bc308 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -41,7 +41,9 @@ dependencies { implementation "androidx.core:core-ktx:1.3.2" implementation "androidx.appcompat:appcompat:1.2.0" implementation "com.google.android.material:material:1.3.0" + testImplementation "junit:junit:4.+" + androidTestImplementation "androidx.test.ext:junit:1.1.2" androidTestImplementation "androidx.test.espresso:espresso-core:3.3.0" } diff --git a/build.gradle b/build.gradle index df59b28..e0fdd81 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = "1.3.72" + ext.kotlin_version = "1.4.31" repositories { google() diff --git a/library/build.gradle b/library/build.gradle index 9744b03..0594fdc 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,6 +1,6 @@ plugins { - // Apply the scala Plugin to add support for Scala. - id "scala" + // Apply the org.jetbrains.kotlin.jvm Plugin to add support for Kotlin. + id "org.jetbrains.kotlin.jvm" // Apply the java-library plugin for API and implementation separation. id "java-library" @@ -15,26 +15,21 @@ repositories { } dependencies { - // Use Scala 2.13 in our library project - implementation "org.scala-lang:scala-library:2.13.3" + // Align versions of all Kotlin components + implementation platform("org.jetbrains.kotlin:kotlin-bom") + + // Use the Kotlin JDK 8 standard library. + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation "com.google.guava:guava:30.0-jre" - // Use Scalatest for testing our library - testImplementation "junit:junit:4.13.1" - testImplementation "org.scalatest:scalatest_2.13:3.2.3" - testImplementation "org.scalatestplus:junit-4-13_2.13:3.2.2.0" + // Use the Kotlin test library. + testImplementation "org.jetbrains.kotlin:kotlin-test" - // Need scala-xml at test runtime - testRuntimeOnly "org.scala-lang.modules:scala-xml_2.13:1.2.0" + // Use the Kotlin JUnit integration. + testImplementation "org.jetbrains.kotlin:kotlin-test-junit" // This dependency is exported to consumers, that is to say found on their compile classpath. api "org.apache.commons:commons-math3:3.6.1" } - -tasks.named("jar") { - manifest { - attributes("Implementation-Title": "TribuFu", "Implementation-Version": project.version) - } -} diff --git a/library/src/main/scala/com/tribufu/sdk/System.scala b/library/src/main/kotlin/com/tribufu/sdk/Handler.kt similarity index 76% rename from library/src/main/scala/com/tribufu/sdk/System.scala rename to library/src/main/kotlin/com/tribufu/sdk/Handler.kt index 868226e..0909661 100644 --- a/library/src/main/scala/com/tribufu/sdk/System.scala +++ b/library/src/main/kotlin/com/tribufu/sdk/Handler.kt @@ -2,4 +2,4 @@ package com.tribufu.sdk -class System {} +interface IHandler {} diff --git a/library/src/main/scala/com/tribufu/sdk/Handler.scala b/library/src/main/kotlin/com/tribufu/sdk/System.kt similarity index 77% rename from library/src/main/scala/com/tribufu/sdk/Handler.scala rename to library/src/main/kotlin/com/tribufu/sdk/System.kt index 812ca9a..3070ab4 100644 --- a/library/src/main/scala/com/tribufu/sdk/Handler.scala +++ b/library/src/main/kotlin/com/tribufu/sdk/System.kt @@ -2,4 +2,4 @@ package com.tribufu.sdk -class Handler {} +interface ISystem {} diff --git a/library/src/main/kotlin/com/tribufu/sdk/TribuFu.kt b/library/src/main/kotlin/com/tribufu/sdk/TribuFu.kt new file mode 100644 index 0000000..36eb096 --- /dev/null +++ b/library/src/main/kotlin/com/tribufu/sdk/TribuFu.kt @@ -0,0 +1,13 @@ +// Copyright (c) TribuFu. All Rights Reserved + +package com.tribufu.sdk + +class TribuFu { + // Used to load the 'TribuFu' library on application startup. + init { + System.loadLibrary("TribuFu_Jvm") + } + + /** A native method that is implemented by the 'TribuFu' native library. */ + external fun Hello(input: String ): String +} diff --git a/library/src/main/kotlin/com/tribufu/sdk/models/Email.kt b/library/src/main/kotlin/com/tribufu/sdk/models/Email.kt new file mode 100644 index 0000000..94d879d --- /dev/null +++ b/library/src/main/kotlin/com/tribufu/sdk/models/Email.kt @@ -0,0 +1,10 @@ +// Copyright (c) TribuFu. All Rights Reserved + +package com.tribufu.sdk.models + +class Email { + var address = "" + var user_id = "1" + var confirmed = false + var primary = true +} diff --git a/library/src/main/scala/com/tribufu/sdk/models/User.scala b/library/src/main/kotlin/com/tribufu/sdk/models/User.kt similarity index 56% rename from library/src/main/scala/com/tribufu/sdk/models/User.scala rename to library/src/main/kotlin/com/tribufu/sdk/models/User.kt index a9b6fed..cc528f6 100644 --- a/library/src/main/scala/com/tribufu/sdk/models/User.scala +++ b/library/src/main/kotlin/com/tribufu/sdk/models/User.kt @@ -1,11 +1,12 @@ -// Copyright (c) TribuFu. All Rights Reserved. +// Copyright (c) TribuFu. All Rights Reserved package com.tribufu.sdk.models class User { - val id = "" - val name = "" + var id = "" + var name = "" var display_name = "" + var password_hash = "" var role = Role.User var confirmed = false var two_factor_enabled = false @@ -15,15 +16,15 @@ class User { var parental_control = false var profile_url = "" var public_birthday = false - var birthday = "" + var Birthday = "" var location = "" var timezone = "" var language = "" var currency = "" var theme = Theme.Light var ip_address = "" - val registration_ip_address = "" - val Joined = "" + var registration_ip_address = "" + var Joined = "" var Updated = "" var failed_logins = 0 var about = "" @@ -32,21 +33,33 @@ class User { var avatar_url = "" var background_url = "" var status = Status.Offline - var last_online = "" - var last_activity = "" - var last_post = "" + var LastOnline = "" + var LastActivity = "" + var LastPost = "" var warnings = 0 - var last_warn = "" + var LastWarn = "" } -object Role extends Enumeration { - val User, Bot, Helper, Tester, Developer, Moderator, Admin, Root = Value +enum class Role { + User, + Bot, + Helper, + Tester, + Developer, + Moderator, + Admin, + Root } -object Theme extends Enumeration { - val Light, Dark = Value +enum class Theme { + Light, + Dark } -object Status extends Enumeration { - val Offline, Away, Disturb, Online, Playing = Value +enum class Status { + Offline, + Away, + Disturb, + Online, + Playing } diff --git a/library/src/main/scala/com/tribufu/sdk/TribuFu.scala b/library/src/main/scala/com/tribufu/sdk/TribuFu.scala deleted file mode 100644 index 91bc7cd..0000000 --- a/library/src/main/scala/com/tribufu/sdk/TribuFu.scala +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) TribuFu. All Rights Reserved. - -package com.tribufu.sdk - -class TribuFu { - Init() - - // Used to load the 'TribuFu' library on application startup. - private def Init() { - System.loadLibrary("TribuFu_Jvm") - } - - /** - * A native method that is implemented by the 'TribuFu' native library. - */ - @native def Hello(input: String): String -} diff --git a/library/src/main/scala/com/tribufu/sdk/models/Email.scala b/library/src/main/scala/com/tribufu/sdk/models/Email.scala deleted file mode 100644 index 33ade6a..0000000 --- a/library/src/main/scala/com/tribufu/sdk/models/Email.scala +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) TribuFu. All Rights Reserved. - -package com.tribufu.sdk.models - -class Email() { - val address = "" - val added = "" - var updated = "" - var confirmed = false - var primary = true -} diff --git a/library/src/test/kotlin/library/kotlin/TribuFuTest.kt b/library/src/test/kotlin/library/kotlin/TribuFuTest.kt new file mode 100644 index 0000000..09721ce --- /dev/null +++ b/library/src/test/kotlin/library/kotlin/TribuFuTest.kt @@ -0,0 +1,13 @@ +// Copyright (c) TribuFu. All Rights Reserved + +package com.tribufu.sdk + +import kotlin.test.Test +import kotlin.test.assertTrue + +class LibraryTest { + @Test fun testSomeLibraryMethod() { + //val library = TribuFu() + assertTrue(true, "someLibraryMethod should return 'true'") + } +} diff --git a/library/src/test/scala/com/tribufu/sdk/TribuFuSuite.scala b/library/src/test/scala/com/tribufu/sdk/TribuFuSuite.scala deleted file mode 100644 index 0db85bd..0000000 --- a/library/src/test/scala/com/tribufu/sdk/TribuFuSuite.scala +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) TribuFu. All Rights Reserved. - -package com.tribufu.sdk - -import org.junit.runner.RunWith -import org.scalatest.funsuite.AnyFunSuite -import org.scalatestplus.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -class TribuFuSuite extends AnyFunSuite { - test("Hello is always true") { - //def library = new TribuFu() - //assert(library.Hello("Scala") == "Scala") - assert(true) - } -}