Comment from Mustapha Zorgati

This commit is contained in:
Jörg Heffner 2020-04-22 11:18:42 +02:00
parent 7836590311
commit 8442be7903
2 changed files with 9 additions and 51 deletions

View File

@ -1,40 +0,0 @@
package pro.taskana.common.internal.util;
import java.lang.reflect.Field;
public class FieldAndValuePairTriplet {
private Field field;
private Object oldValue;
private Object newValue;
public FieldAndValuePairTriplet(Field field, Object oldValue, Object newValue) {
this.field = field;
this.oldValue = oldValue;
this.newValue = newValue;
}
public Field getField() {
return field;
}
public void setField(Field field) {
this.field = field;
}
public Object getOldValue() {
return oldValue;
}
public void setOldValue(Object oldValue) {
this.oldValue = oldValue;
}
public Object getNewValue() {
return newValue;
}
public void setNewValue(Object newValue) {
this.newValue = newValue;
}
}

View File

@ -37,9 +37,9 @@ import pro.taskana.common.internal.CustomPropertySelector;
import pro.taskana.common.internal.InternalTaskanaEngine;
import pro.taskana.common.internal.security.CurrentUserContext;
import pro.taskana.common.internal.util.CheckedFunction;
import pro.taskana.common.internal.util.FieldAndValuePairTriplet;
import pro.taskana.common.internal.util.IdGenerator;
import pro.taskana.common.internal.util.Pair;
import pro.taskana.common.internal.util.Triplet;
import pro.taskana.spi.history.api.events.task.ClaimCancelledEvent;
import pro.taskana.spi.history.api.events.task.ClaimedEvent;
import pro.taskana.spi.history.api.events.task.CompletedEvent;
@ -886,33 +886,31 @@ public class TaskServiceImpl implements TaskService {
currentClass = currentClass.getSuperclass();
}
Predicate<FieldAndValuePairTriplet> areFieldsNotEqual =
Predicate<Triplet<Field, Object, Object>> areFieldsNotEqual =
fieldAndValuePairTriplet ->
!Objects.equals(
fieldAndValuePairTriplet.getOldValue(), fieldAndValuePairTriplet.getNewValue());
Predicate<FieldAndValuePairTriplet> isFieldNotCustomAttributes =
fieldAndValuePairTriplet.getMiddle(), fieldAndValuePairTriplet.getRight());
Predicate<Triplet<Field, Object, Object>> isFieldNotCustomAttributes =
fieldAndValuePairTriplet ->
!fieldAndValuePairTriplet.getField().getName().equals("customAttributes");
!fieldAndValuePairTriplet.getLeft().getName().equals("customAttributes");
List<JSONObject> changedAttributes =
fields.stream()
.peek(field -> field.setAccessible(true))
.map(
CheckedFunction.wrap(
field ->
new FieldAndValuePairTriplet(
field, field.get(oldTaskImpl), field.get(newTaskImpl))))
field -> new Triplet<>(field, field.get(oldTaskImpl), field.get(newTaskImpl))))
.filter(areFieldsNotEqual.and(isFieldNotCustomAttributes))
.map(
fieldAndValuePairTriplet -> {
JSONObject changedAttribute = new JSONObject();
changedAttribute.put("fieldName", fieldAndValuePairTriplet.getField().getName());
changedAttribute.put("fieldName", fieldAndValuePairTriplet.getLeft().getName());
changedAttribute.put(
"oldValue",
Optional.ofNullable(fieldAndValuePairTriplet.getOldValue()).orElse(""));
Optional.ofNullable(fieldAndValuePairTriplet.getMiddle()).orElse(""));
changedAttribute.put(
"newValue",
Optional.ofNullable(fieldAndValuePairTriplet.getNewValue()).orElse(""));
Optional.ofNullable(fieldAndValuePairTriplet.getRight()).orElse(""));
return changedAttribute;
})
.collect(Collectors.toList());