A mix of random small libraries for Kotlin, the smallest reside here until big enough for their own repository.
Kotlin
Permalink
Failed to load latest commit information.
aws-core-jdk6 Create README.md Aug 21, 2015
aws-core * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
aws-s3-jdk6 drop prezi pride from project, slows builds, not used. Oct 12, 2015
aws-s3 Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
config-typesafe-jdk6 * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
config-typesafe-jdk7 drop prezi pride from project, slows builds, not used. Oct 12, 2015
config-typesafe-jdk8 drop prezi pride from project, slows builds, not used. Oct 12, 2015
config-typesafe Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
core-jdk6 toImmutable makes best copy for Random access while retaining the ran… Jun 24, 2016
core-jdk7 drop prezi pride from project, slows builds, not used. Oct 12, 2015
core-jdk8 drop prezi pride from project, slows builds, not used. Oct 12, 2015
core-jodatime-jdk6 drop prezi pride from project, slows builds, not used. Oct 12, 2015
core-jodatime Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
core regenerate KDOC given updated DOKKA with markdown fixes Jun 25, 2016
db-jdbi-v2-jdk6 release v1.16.0 Feb 29, 2016
db-jdbi-v2 release v1.16.0 Feb 29, 2016
db-jdbi-v3-jdk8 release v1.16.0 Feb 29, 2016
db-jdbi-v3 release v1.16.0 Feb 29, 2016
docs/markdown regenerate KDOC given updated DOKKA with markdown fixes Jun 25, 2016
elasticsearch-jdk7 Mainly for the Kotlin 1.0 release candidate binary compatibility Feb 2, 2016
elasticsearch Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
gradle/wrapper * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
json-jackson-jdk6 * Kotlin to 1.0.0-beta-1038 Oct 21, 2015
json-jackson-jdk8 * Kotlin to 1.0.0-beta-1038 Oct 21, 2015
json-jackson Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
netflix-graph-jdk6 Mainly for the Kotlin 1.0 release candidate binary compatibility Feb 2, 2016
netflix-graph Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
reflect-core-jdk6 * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
reflect-core-jdk7 drop prezi pride from project, slows builds, not used. Oct 12, 2015
reflect-core-jdk8 * Kotlin to BETA 3 1.0.0-beta-3595 Dec 8, 2015
reflect-full-jdk6 * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
reflect-lite-jdk6 Mainly for the Kotlin 1.0 release candidate binary compatibility Feb 2, 2016
reflect Get rid of internal use of URI for generating a string from UriBuilder. Dec 30, 2015
vertx3-jdk8 * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
vertx3 * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
.gitignore Collecting everything together into Klutter for ramping up towards a … Aug 20, 2015
CHANGELOG.md * BREAKING CHANGE: from 1.19.x renamed `asImmutable()` to `asReadOnly()` Jun 24, 2016
LICENSE Collecting everything together into Klutter for ramping up towards a … Aug 20, 2015
README.md changes to unit tests for immutable / readonly collections Jun 24, 2016
build.gradle regenerate KDOC given updated DOKKA with markdown fixes Jun 25, 2016
circle.yml setup develop branch for future snapshot development Oct 21, 2015
gradle.properties regenerate KDOC given updated DOKKA with markdown fixes Jun 25, 2016
gradlew * Added more Kovenant Promise versions of vert.x SharedData and Async… May 18, 2016
gradlew.bat * Injekt to 1.11 Jan 20, 2016
settings.gradle release v1.16.0 Feb 29, 2016

README.md

Kotlin Maven Version CircleCI branch Issues DUB Kotlin Slack

klutter

Random small libraries, usually extensions making other libraries happier.

Please send contributions, fork the repo, issue a pull request and write a comment in the pull request granting the rights for the code to be used in Klutter.

Maven Dependency

Each module has its own set of dependencies. There is a main dependency which is always the most current JDK version of the module, and also a version suffixed by the JDK version for which it is compatible (that version or newer). Include the dependency in your Gradle / Maven projects, ones that already have Kotlin configured.

Gradle:

compile "uy.klutter:klutter-all:1.20.+"

Maven:

<dependency>
    <groupId>uy.klutter</groupId>
    <artifactId>klutter-all</artifactId>
    <version>[1.20.0,1.21.0)</version>
</dependency>

See all modules and current versions on Maven Central search (or the raw repo)

Modules

     Maven‑Artifact      Size Topic Injekt
aws-s3 tiny Amazon AWS SDK S3 helper extensions Yes
aws-core tiny Amazon AWS SDK helper extensions No
config-typesafe medium Typesafe Config easier loader and access to configuration No
core small Core extension methods on strings, numbers, dates, URI Builder, better URL Encoding/Decoding No
db-jdbi-v2 small Adds Kotlin parameter binding and RestulSet mapping to JDBI versions 2.x No
db-jdbi-v3 small Adds Kotlin parameter binding and RestulSet mapping to JDBI versions 3.x No
elasticsearch medium Extensions to ElasticSearch client library No
json-jackson tiny Jackson JSON Data Binding extensions + loading of Kotlin module Yes
netflix-graph medium In memory graph building and compression/serialization. A wrapper adding schema, ordinal tracking, serialization with ordinals, and is much easier to use API No
reflect small Helpers for Kotlin reflection No
vertx3 medium Vert.x-3 helpers and integration with Kovenant Promises Yes

Modules marked with "yes" for Injekt, are modules that have intergration with Kohesive/Injekt and provide prebuild injectable modules that you can easily import providing factories or singletons for dependency injection. Using an Injekt module looks something like:

class MyApp {
    companion object : InjektMain() {
        // my app starts here with a static main()
        platformStatic public fun main(args: Array<String>) {
            MyApp().run()
        }

        // the Injekt system will call me back here on a method I override.  And all my functions for registration are
        // easy to find on the receiver class
        override fun InjektRegistrar.registerInjectables() {
            // add my singletons, factories, keyed factories, per-thread factories, ...
            ...

            // import prebuilt Injekt modules
            importModule(AmazonS3Injektables)  
            importModule(JacksonWithKotlinAndJdk8Injektables)
        }
    }

    ...
    // later, use them in properties in any class
    val s3: AmazonS3Client by Delegates.injectLazy()
    // or use them anywhere in code
    val myObject: CoolObject = Inject.get<ObjectMapper>().readValue(jsonString)
    // or another form of the same
    val mapper: ObjectMapper = Inject.get()
    // or within constructor or method definitions as default values
    public fun doSomethingWithS3(s3: AmazonS3Client = Inject.get()) { ... }
}

Some of these modules are "tiny" and may not be overly useful yet, but they carry no extra weight, only have required dependencies and can be expanded over time by anyone that wants to send pull requests. Submitted modules or changes to existing module consist of things not conflicting with Kotlin runtime libraries, and things useful to most Kotlin developers.

Recommended libraries:

Other libraries that we recommend a building blocks for Kotlin applications:

  • Injekt - Injekt is a crazyily easy Dependency Injection for Kotlin.
  • Kovenant - promises for Kotlin, easy, fun, and async! (JVM / Android)
  • Kovert - invisible REST framework for Kotlin + Vert.x

With help from...

Collokia Logo