From 5fff9cf69543bee2007e26fc6b7c8944704eec4a Mon Sep 17 00:00:00 2001 From: Minecrell Date: Fri, 30 Apr 2021 11:54:55 +0200 Subject: [PATCH] Fix permissions generation when using register("...") It looks like asMap(...) doesn't return lazily registered values. Might be a bug, but using .associateBy { it.name } is at least as simple and does not have that problem. --- .../bukkit/BukkitPluginDescription.kt | 10 +++++----- .../nukkit/NukkitPluginDescription.kt | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt b/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt index 66efd9e..abeef44 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/bukkit/BukkitPluginDescription.kt @@ -54,10 +54,10 @@ class BukkitPluginDescription(project: Project) : Serializable { @Transient @JsonIgnore val permissions: NamedDomainObjectContainer = project.container(Permission::class.java) // Java/Jackson serialization for commands and permissions - internal val commandMap: Map = commands.asMap - @JsonProperty("commands") get() = field.toMap() // Return copy - internal val permissionMap: Map = permissions.asMap - @JsonProperty("permissions") get() = field.toMap() // Return copy + internal val commandMap: Map + @JsonProperty("commands") get() = commands.associateBy { it.name } + internal val permissionMap: Map + @JsonProperty("permissions") get() = permissions.associateBy { it.name } // For Groovy DSL fun commands(closure: Closure) = commands.configure(closure) @@ -82,7 +82,7 @@ class BukkitPluginDescription(project: Project) : Serializable { var children: List? @JsonIgnore get() = childrenMap?.filterValues { it }?.keys?.toList() set(value) { - childrenMap = value?.associate { it to true } + childrenMap = value?.associateWith { true } } @JsonProperty("children") var childrenMap: Map? = null diff --git a/src/main/kotlin/net/minecrell/pluginyml/nukkit/NukkitPluginDescription.kt b/src/main/kotlin/net/minecrell/pluginyml/nukkit/NukkitPluginDescription.kt index 8def94d..911c0cf 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/nukkit/NukkitPluginDescription.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/nukkit/NukkitPluginDescription.kt @@ -49,17 +49,17 @@ class NukkitPluginDescription(project: Project) : Serializable { // DSL provider for commands and permissions (not serialized) @Transient @JsonIgnore - val commands: NamedDomainObjectContainer = project.container(NukkitPluginDescription.Command::class.java) + val commands: NamedDomainObjectContainer = project.container(Command::class.java) @Transient @JsonIgnore - val permissions: NamedDomainObjectContainer = project.container(NukkitPluginDescription.Permission::class.java) { + val permissions: NamedDomainObjectContainer = project.container(Permission::class.java) { Permission(project, it) } // Java/Jackson serialization for commands and permissions - internal val commandMap: Map = commands.asMap - @JsonProperty("commands") get() = field.toMap() // Return copy - internal val permissionMap: Map = permissions.asMap - @JsonProperty("permissions") get() = field.toMap() // Return copy + internal val commandMap: Map + @JsonProperty("commands") get() = commands.associateBy { it.name } + internal val permissionMap: Map + @JsonProperty("permissions") get() = permissions.associateBy { it.name } // For Groovy DSL fun commands(closure: Closure) = commands.configure(closure) @@ -85,13 +85,13 @@ class NukkitPluginDescription(project: Project) : Serializable { // DSL provider for recursive children (not serialized) @Transient @JsonIgnore - val children: NamedDomainObjectContainer = project.container(NukkitPluginDescription.Permission::class.java) { + val children: NamedDomainObjectContainer = project.container(Permission::class.java) { Permission(project, it) } // Java/Jackson serialization for commands and permissions - internal val childrenMap: Map = children.asMap - @JsonProperty("children") get() = field.toMap() // Return copy + internal val childrenMap: Map + @JsonProperty("children") get() = children.associateBy { it.name } // For Groovy DSL fun children(closure: Closure) = children.configure(closure)