Skip to content

Commit

Permalink
Add synchronized blocks to model get and set methods
Browse files Browse the repository at this point in the history
  • Loading branch information
jennantilla committed Nov 3, 2023
1 parent 1847cb4 commit ae758cf
Showing 1 changed file with 20 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -436,19 +436,21 @@ open class Model(
tag: String = ModelChangeTags.NORMAL,
forceChange: Boolean = false,
) {
val oldValue = data[name]
synchronized(data) {
val oldValue = data[name]

if (oldValue == value && !forceChange) {
return
}
if (oldValue == value && !forceChange) {
return
}

if (value != null) {
data[name] = value
} else if (data.containsKey(name)) {
data.remove(name)
}
if (value != null) {
data[name] = value
} else if (data.containsKey(name)) {
data.remove(name)
}

notifyChanged(name, name, tag, oldValue, value)
notifyChanged(name, name, tag, oldValue, value)
}
}

/**
Expand Down Expand Up @@ -634,12 +636,14 @@ open class Model(
name: String,
create: (() -> Any?)? = null,
): Any? {
return if (data.containsKey(name) || create == null) {
data[name]
} else {
val defaultValue = create()
data[name] = defaultValue as Any?
defaultValue
synchronized(data) {
return if (data.containsKey(name) || create == null) {
data[name]
} else {
val defaultValue = create()
data[name] = defaultValue as Any?
defaultValue
}
}
}

Expand Down

0 comments on commit ae758cf

Please sign in to comment.