Rahul Khimasia
Rahul Khimasia

Reputation: 503

Error defining delete task

I am getting errors with the following block of DSL script.

val DerbyDbDataFolder: File = file("DerbyDbData")
val DerbyLog: File = file("derby.log")

tasks {
    var cleanDerbyDbData by creating (Delete::class) {
        delete(DerbyDbDataFolder)
        delete(DerbyLog)
    }

    "clean" {
        dependsOn(cleanDerbyDbData)
    }
}

But I get the following error message.

       var cleanDerbyDbData by creating (Delete::class) {
                               ^ Missing 'setValue(Nothing?, KProperty<*>, Delete)' method on delegate of type 'PolymorphicDomainObjectContainer<Delete>'

What is this error message and how do I fix it?

Upvotes: 1

Views: 238

Answers (1)

sa1nt
sa1nt

Reputation: 366

TLDR

Define cleanDerbyDbData as a val instead of var:

val DerbyDbDataFolder: File = file("DerbyDbData")
val DerbyLog: File = file("derby.log")

tasks {
    val cleanDerbyDbData by creating (Delete::class) {
        delete(DerbyDbDataFolder)
        delete(DerbyLog)
    }

    "clean" {
        dependsOn(cleanDerbyDbData)
    }
}

Details

cleanDerbyDbData is a delegated property, and for it to be a var, the expression to the right of by must return a mutable value. The PolymorphicDomainObjectContainerDelegateProvider returned by the creating() function doesn't provide any setters, and this is the error you're seeing.

Upvotes: 1

Related Questions