← All recipes
Moderne licensed

Migrate @AutoValue classes to Kotlin data classes

Recipe IDorg.openrewrite.kotlin.migrate.autovalue.AutoValueToDataClassArtifactorg.openrewrite.recipe:rewrite-migrate-kotlin

Replaces a Java or Kotlin @AutoValue abstract class with a Kotlin data class and rewrites its Kotlin and Java callers: x() accessors become x property reads (getX() in Java) and the static or companion create(..) factory becomes the constructor. A Java class becomes a .kt file in place of the .java file. Only classes consisting of abstract accessors and a single forwarding factory are converted; every @AutoValue class is listed in the AutoValueClasses data table with the reason it was skipped.

Single recipeProprietary

Add to your build

Get a download tokenThis recipe is Moderne licensed, so the token must belong to a Moderne customer. It replaces YOUR_DOWNLOAD_TOKEN below.

~/.gradle/gradle.properties

codeGenomeUsername=you@example.com
codeGenomeToken=YOUR_DOWNLOAD_TOKEN

build.gradle.kts

plugins {
    id("org.openrewrite.rewrite") version("latest.release")
}

rewrite {
    activeRecipe("org.openrewrite.kotlin.migrate.autovalue.AutoValueToDataClass")
}

repositories {
    mavenCentral()
    maven {
        url = uri("https://artifacts.codegenomeproject.org/maven")
        credentials {
            username = providers.gradleProperty("codeGenomeUsername").get()
            password = providers.gradleProperty("codeGenomeToken").get()
        }
    }
}

dependencies {
    rewrite("org.openrewrite.recipe:rewrite-migrate-kotlin:0.10.0")
}

Then run

./gradlew rewriteRun

Usage

This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.

mod run . --recipe org.openrewrite.kotlin.migrate.autovalue.AutoValueToDataClass

If the recipe isn’t available locally, install it with:

mod config recipes jar install org.openrewrite.recipe:rewrite-migrate-kotlin:RELEASE

Options

NameTypeDescription
keepJavaAccessorsBooleanGive each property a @get:JvmName matching the AutoValue accessor, so Java call sites such as foo.bar() keep compiling unchanged instead of being rewritten to foo.getBar(). Factories still become constructors. Default false.

Data tables

Structured output this recipe can produce.

  • AutoValue classesEvery `@AutoValue` class found, with the reason it was not migrated to a data class where applicable.org.openrewrite.kotlin.migrate.autovalue.AutoValueClasses
  • Source files that had resultsSource files that were modified by the recipe run.org.openrewrite.table.SourcesFileResults
  • Source files that had search resultsSearch results that were found during the recipe run.org.openrewrite.table.SearchResults
  • Source files that errored on a recipeThe details of all errors produced by a recipe run.org.openrewrite.table.SourcesFileErrors
  • Recipe performanceStatistics used in analyzing the performance of recipes.org.openrewrite.table.RecipeRunStats