@@ -214,6 +214,8 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
214214 isNew = Constants .getLogAllMembersOnCreate ();
215215 }
216216
217+ boolean isDeleting = logType == TypeOfLog .Delete ;
218+
217219 final Collection <? extends IMendixObjectMember <?>> members = inputObject .getMembers (sudoContext ).values ();
218220 final List <IMendixObject > logLineList = new ArrayList <IMendixObject >(members .size ());
219221
@@ -226,20 +228,20 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
226228
227229 if (member instanceof MendixObjectReference ) {
228230 if (!member .getName ().startsWith ("System." ))
229- logLineList .addAll (createReferenceLogLine (logObject , (MendixObjectReference ) member , isNew ,
231+ logLineList .addAll (createReferenceLogLine (logObject , (MendixObjectReference ) member , isNew , isDeleting ,
230232 sudoContext , currentContext ));
231233 }
232234
233235 else if (member instanceof MendixObjectReferenceSet )
234- logLineList .addAll (createReferenceSetLogLine (logObject , (MendixObjectReferenceSet ) member , isNew ,
236+ logLineList .addAll (createReferenceSetLogLine (logObject , (MendixObjectReferenceSet ) member , isNew , isDeleting ,
235237 sudoContext , currentContext ));
236238
237239 else {
238240 final String attributeName = member .getName ();
239241
240242 if (!attributeName .startsWith ("System." ) && !attributeName .equals ("changedDate" )
241243 && !attributeName .equals ("createdDate" )) {
242- logLineList .addAll (createSingleLogLine (logObject , member , MemberType .Attribute .toString (), isNew ,
244+ logLineList .addAll (createSingleLogLine (logObject , member , MemberType .Attribute .toString (), isNew , isDeleting ,
243245 sudoContext ));
244246 }
245247 }
@@ -256,12 +258,12 @@ else if (member instanceof MendixObjectReferenceSet)
256258 }
257259
258260 private static List <IMendixObject > createSingleLogLine (final IMendixObject logObject , final IMendixObjectMember <?> member ,
259- final String memberType , final boolean isNew , final IContext context ) throws CoreException {
261+ final String memberType , final boolean isNew , final boolean isDeleting , final IContext context ) throws CoreException {
260262 final String oldValue = getMemberValueString (member , false , context );
261263 final String newValue = getMemberValueString (member , true , context );
262264
263265 final boolean newOrChangedAttribute = isNew || !oldValue .equals (newValue );
264- if (newOrChangedAttribute || !Constants .getIncludeOnlyChangedAttributes ()) {
266+ if (newOrChangedAttribute || isDeleting || !Constants .getIncludeOnlyChangedAttributes ()) {
265267 final IMendixObject logLine = Core .instantiate (context , LogLine .getType ());
266268
267269 logLine .setValue (context , LogLine .MemberNames .Member .toString (), member .getName ());
@@ -285,15 +287,15 @@ private static List<IMendixObject> createSingleLogLine(final IMendixObject logOb
285287 }
286288
287289 private static List <IMendixObject > createReferenceLogLine (final IMendixObject logObject , final MendixObjectReference member ,
288- final boolean isNew , final IContext sudocontext , final IContext currentcontext ) throws CoreException {
290+ final boolean isNew , final boolean isDeleting , final IContext sudocontext , final IContext currentcontext ) throws CoreException {
289291 IContext context = member .hasReadAccess (currentcontext ) ? currentcontext : sudocontext ;
290292
291293 // get current and previous id
292294 final IMendixIdentifier currentId = member .getValue (context );
293295 final IMendixIdentifier previousId = member .getOriginalValue (context );
294296
295- final boolean newOrChangedObject = !Objects .equals (currentId , previousId ) || isNew ;
296- if (!Constants .getIncludeOnlyChangedAttributes () || newOrChangedObject ) {
297+ final boolean newOrChangedObject = isNew || !Objects .equals (currentId , previousId );
298+ if (newOrChangedObject || isDeleting || !Constants .getIncludeOnlyChangedAttributes ()) {
297299 final List <IMendixObject > logLineList = new ArrayList <IMendixObject >();
298300 final IMendixObject logLine = Core .instantiate (sudocontext , LogLine .getType ());
299301
@@ -384,7 +386,8 @@ private static IMendixObject createMendixObject(final String objectType, final M
384386 final IMendixIdentifier i2 ) -> (int ) (i1 .toLong () - i2 .toLong ());
385387
386388 private static List <IMendixObject > createReferenceSetLogLine (final IMendixObject logObject ,
387- final MendixObjectReferenceSet member , final boolean isNew , final IContext sudocontext , final IContext currentcontext )
389+ final MendixObjectReferenceSet member , final boolean isNew , final boolean isDeleting ,
390+ final IContext sudocontext , final IContext currentcontext )
388391 throws CoreException {
389392
390393 IContext context = member .hasReadAccess (currentcontext ) ? currentcontext : sudocontext ;
@@ -395,8 +398,8 @@ private static List<IMendixObject> createReferenceSetLogLine(final IMendixObject
395398 currentIdList .sort (IDCOMPARATOR );
396399 previousIdList .sort (IDCOMPARATOR );
397400
398- final boolean newOrChangedObjects = !Objects .equals (currentIdList , previousIdList ) || isNew ;
399- if (!Constants .getIncludeOnlyChangedAttributes () || newOrChangedObjects ) {
401+ final boolean newOrChangedObjects = isNew || !Objects .equals (currentIdList , previousIdList );
402+ if (newOrChangedObjects || isDeleting || !Constants .getIncludeOnlyChangedAttributes ()) {
400403
401404 // The size below is just a good guess
402405 final List <IMendixObject > logLineList = new ArrayList <IMendixObject >(currentIdList .size () + 1 );
0 commit comments