@@ -216,6 +216,8 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
216216 isNew = Constants .getLogAllMembersOnCreate ();
217217 }
218218
219+ boolean isDeleting = logType == TypeOfLog .Delete ;
220+
219221 final Collection <? extends IMendixObjectMember <?>> members = inputObject .getMembers (sudoContext ).values ();
220222 final List <IMendixObject > logLineList = new ArrayList <IMendixObject >(members .size ());
221223
@@ -228,20 +230,20 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
228230
229231 if (member instanceof MendixObjectReference ) {
230232 if (!member .getName ().startsWith ("System." ))
231- logLineList .addAll (createReferenceLogLine (logObject , (MendixObjectReference ) member , isNew ,
233+ logLineList .addAll (createReferenceLogLine (logObject , (MendixObjectReference ) member , isNew , isDeleting ,
232234 sudoContext , currentContext ));
233235 }
234236
235237 else if (member instanceof MendixObjectReferenceSet )
236- logLineList .addAll (createReferenceSetLogLine (logObject , (MendixObjectReferenceSet ) member , isNew ,
238+ logLineList .addAll (createReferenceSetLogLine (logObject , (MendixObjectReferenceSet ) member , isNew , isDeleting ,
237239 sudoContext , currentContext ));
238240
239241 else {
240242 final String attributeName = member .getName ();
241243
242244 if (!attributeName .startsWith ("System." ) && !attributeName .equals ("changedDate" )
243245 && !attributeName .equals ("createdDate" )) {
244- logLineList .addAll (createSingleLogLine (logObject , member , MemberType .Attribute .toString (), isNew ,
246+ logLineList .addAll (createSingleLogLine (logObject , member , MemberType .Attribute .toString (), isNew , isDeleting ,
245247 sudoContext ));
246248 }
247249 }
@@ -258,12 +260,12 @@ else if (member instanceof MendixObjectReferenceSet)
258260 }
259261
260262 private static List <IMendixObject > createSingleLogLine (final IMendixObject logObject , final IMendixObjectMember <?> member ,
261- final String memberType , final boolean isNew , final IContext context ) throws CoreException {
263+ final String memberType , final boolean isNew , final boolean isDeleting , final IContext context ) throws CoreException {
262264 final String oldValue = getMemberValueString (member , false , context );
263265 final String newValue = getMemberValueString (member , true , context );
264266
265267 final boolean newOrChangedAttribute = isNew || !oldValue .equals (newValue );
266- if (newOrChangedAttribute || !Constants .getIncludeOnlyChangedAttributes ()) {
268+ if (newOrChangedAttribute || isDeleting || !Constants .getIncludeOnlyChangedAttributes ()) {
267269 final IMendixObject logLine = Core .instantiate (context , LogLine .getType ());
268270
269271 logLine .setValue (context , LogLine .MemberNames .Member .toString (), member .getName ());
@@ -287,15 +289,15 @@ private static List<IMendixObject> createSingleLogLine(final IMendixObject logOb
287289 }
288290
289291 private static List <IMendixObject > createReferenceLogLine (final IMendixObject logObject , final MendixObjectReference member ,
290- final boolean isNew , final IContext sudocontext , final IContext currentcontext ) throws CoreException {
292+ final boolean isNew , final boolean isDeleting , final IContext sudocontext , final IContext currentcontext ) throws CoreException {
291293 IContext context = member .hasReadAccess (currentcontext ) ? currentcontext : sudocontext ;
292294
293295 // get current and previous id
294296 final IMendixIdentifier currentId = member .getValue (context );
295297 final IMendixIdentifier previousId = member .getOriginalValue (context );
296298
297- final boolean newOrChangedObject = !Objects .equals (currentId , previousId ) || isNew ;
298- if (!Constants .getIncludeOnlyChangedAttributes () || newOrChangedObject ) {
299+ final boolean newOrChangedObject = isNew || !Objects .equals (currentId , previousId );
300+ if (newOrChangedObject || isDeleting || !Constants .getIncludeOnlyChangedAttributes ()) {
299301 final List <IMendixObject > logLineList = new ArrayList <IMendixObject >();
300302 final IMendixObject logLine = Core .instantiate (sudocontext , LogLine .getType ());
301303
@@ -386,7 +388,8 @@ private static IMendixObject createMendixObject(final String objectType, final M
386388 final IMendixIdentifier i2 ) -> (int ) (i1 .toLong () - i2 .toLong ());
387389
388390 private static List <IMendixObject > createReferenceSetLogLine (final IMendixObject logObject ,
389- final MendixObjectReferenceSet member , final boolean isNew , final IContext sudocontext , final IContext currentcontext )
391+ final MendixObjectReferenceSet member , final boolean isNew , final boolean isDeleting ,
392+ final IContext sudocontext , final IContext currentcontext )
390393 throws CoreException {
391394
392395 IContext context = member .hasReadAccess (currentcontext ) ? currentcontext : sudocontext ;
@@ -397,8 +400,8 @@ private static List<IMendixObject> createReferenceSetLogLine(final IMendixObject
397400 currentIdList .sort (IDCOMPARATOR );
398401 previousIdList .sort (IDCOMPARATOR );
399402
400- final boolean newOrChangedObjects = !Objects .equals (currentIdList , previousIdList ) || isNew ;
401- if (!Constants .getIncludeOnlyChangedAttributes () || newOrChangedObjects ) {
403+ final boolean newOrChangedObjects = isNew || !Objects .equals (currentIdList , previousIdList );
404+ if (newOrChangedObjects || isDeleting || !Constants .getIncludeOnlyChangedAttributes ()) {
402405
403406 // The size below is just a good guess
404407 final List <IMendixObject > logLineList = new ArrayList <IMendixObject >(currentIdList .size () + 1 );
0 commit comments