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.
This commit is contained in:
Minecrell 2021-04-30 11:54:55 +02:00
parent c60658d745
commit 5fff9cf695
2 changed files with 14 additions and 14 deletions

View file

@ -54,10 +54,10 @@ class BukkitPluginDescription(project: Project) : Serializable {
@Transient @JsonIgnore val permissions: NamedDomainObjectContainer<Permission> = project.container(Permission::class.java) @Transient @JsonIgnore val permissions: NamedDomainObjectContainer<Permission> = project.container(Permission::class.java)
// Java/Jackson serialization for commands and permissions // Java/Jackson serialization for commands and permissions
internal val commandMap: Map<String, Command> = commands.asMap internal val commandMap: Map<String, Command>
@JsonProperty("commands") get() = field.toMap() // Return copy @JsonProperty("commands") get() = commands.associateBy { it.name }
internal val permissionMap: Map<String, Permission> = permissions.asMap internal val permissionMap: Map<String, Permission>
@JsonProperty("permissions") get() = field.toMap() // Return copy @JsonProperty("permissions") get() = permissions.associateBy { it.name }
// For Groovy DSL // For Groovy DSL
fun commands(closure: Closure<Unit>) = commands.configure(closure) fun commands(closure: Closure<Unit>) = commands.configure(closure)
@ -82,7 +82,7 @@ class BukkitPluginDescription(project: Project) : Serializable {
var children: List<String>? var children: List<String>?
@JsonIgnore get() = childrenMap?.filterValues { it }?.keys?.toList() @JsonIgnore get() = childrenMap?.filterValues { it }?.keys?.toList()
set(value) { set(value) {
childrenMap = value?.associate { it to true } childrenMap = value?.associateWith { true }
} }
@JsonProperty("children") var childrenMap: Map<String, Boolean>? = null @JsonProperty("children") var childrenMap: Map<String, Boolean>? = null

View file

@ -49,17 +49,17 @@ class NukkitPluginDescription(project: Project) : Serializable {
// DSL provider for commands and permissions (not serialized) // DSL provider for commands and permissions (not serialized)
@Transient @JsonIgnore @Transient @JsonIgnore
val commands: NamedDomainObjectContainer<NukkitPluginDescription.Command> = project.container(NukkitPluginDescription.Command::class.java) val commands: NamedDomainObjectContainer<Command> = project.container(Command::class.java)
@Transient @JsonIgnore @Transient @JsonIgnore
val permissions: NamedDomainObjectContainer<NukkitPluginDescription.Permission> = project.container(NukkitPluginDescription.Permission::class.java) { val permissions: NamedDomainObjectContainer<Permission> = project.container(Permission::class.java) {
Permission(project, it) Permission(project, it)
} }
// Java/Jackson serialization for commands and permissions // Java/Jackson serialization for commands and permissions
internal val commandMap: Map<String, NukkitPluginDescription.Command> = commands.asMap internal val commandMap: Map<String, Command>
@JsonProperty("commands") get() = field.toMap() // Return copy @JsonProperty("commands") get() = commands.associateBy { it.name }
internal val permissionMap: Map<String, NukkitPluginDescription.Permission> = permissions.asMap internal val permissionMap: Map<String, Permission>
@JsonProperty("permissions") get() = field.toMap() // Return copy @JsonProperty("permissions") get() = permissions.associateBy { it.name }
// For Groovy DSL // For Groovy DSL
fun commands(closure: Closure<Unit>) = commands.configure(closure) fun commands(closure: Closure<Unit>) = commands.configure(closure)
@ -85,13 +85,13 @@ class NukkitPluginDescription(project: Project) : Serializable {
// DSL provider for recursive children (not serialized) // DSL provider for recursive children (not serialized)
@Transient @JsonIgnore @Transient @JsonIgnore
val children: NamedDomainObjectContainer<NukkitPluginDescription.Permission> = project.container(NukkitPluginDescription.Permission::class.java) { val children: NamedDomainObjectContainer<Permission> = project.container(Permission::class.java) {
Permission(project, it) Permission(project, it)
} }
// Java/Jackson serialization for commands and permissions // Java/Jackson serialization for commands and permissions
internal val childrenMap: Map<String, NukkitPluginDescription.Permission> = children.asMap internal val childrenMap: Map<String, Permission>
@JsonProperty("children") get() = field.toMap() // Return copy @JsonProperty("children") get() = children.associateBy { it.name }
// For Groovy DSL // For Groovy DSL
fun children(closure: Closure<Unit>) = children.configure(closure) fun children(closure: Closure<Unit>) = children.configure(closure)