Change mutate on drafts to be a bit faster.
This commit is contained in:
parent
f9b1563bdd
commit
11de7015c2
1 changed files with 14 additions and 19 deletions
|
@ -107,27 +107,23 @@ public abstract class AbstractEntityDraft<E> implements Drafted<E> {
|
|||
return (T) mutate(this.<T>methodNameFor(getter), value);
|
||||
}
|
||||
|
||||
public Object mutate(String key, Object value) {
|
||||
public <T> T mutate(String key, T value) {
|
||||
Objects.requireNonNull(key);
|
||||
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (entity != null) {
|
||||
Map<String, Object> map = entity.toMap();
|
||||
|
||||
if (map.containsKey(key) && !value.equals(map.get(key))) {
|
||||
backingMap.put(key, value);
|
||||
return value;
|
||||
}
|
||||
|
||||
return map.get(key);
|
||||
} else {
|
||||
backingMap.put(key, value);
|
||||
|
||||
return null;
|
||||
if (value != null) {
|
||||
if (entity != null) {
|
||||
if (entityMap.containsKey(key)) {
|
||||
T currentValue = this.<T>fetch(key);
|
||||
if (currentValue != null && !value.equals(currentValue)) {
|
||||
backingMap.put(key, value);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
backingMap.put(key, value);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private <T> String methodNameFor(Getter<T> getter) {
|
||||
|
@ -153,7 +149,6 @@ public abstract class AbstractEntityDraft<E> implements Drafted<E> {
|
|||
|
||||
private <T> T fetch(String key) {
|
||||
T value = (T) backingMap.get(key);
|
||||
|
||||
if (value == null) {
|
||||
value = (T) entityMap.get(key);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue