From a3b0aecda24dc074056a2cc60a6b6c3a449a7f56 Mon Sep 17 00:00:00 2001 From: Roeland Salij Date: Mon, 28 Aug 2017 11:39:00 +0200 Subject: [PATCH 1/2] Fixed bug where data was retrieved using the system context. This caused a problem with calculated attributes where currentUser was used in the MF. --- src/AuditTrailModule/Audit trail.mpr | Bin 952320 -> 952320 bytes .../audittrail/log/CreateLogObject.java | 67 +++++++++--------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/src/AuditTrailModule/Audit trail.mpr b/src/AuditTrailModule/Audit trail.mpr index 305e088d8b9db050ad93d3026fbebe5220048dc3..694fcbcb2681450cb0b4ad8f94a36243328051f7 100644 GIT binary patch delta 116 zcmV-)0E_>CkUD^nI*=Oy6OkN40TY2>g3;1BGA&g delta 116 zcmV-)0E_>CkUD^nI*=Oy5|JE30TO{=g3;1BGA&gl2b WGBlU1^9)b{Fo*v047dLC4FZ&LEGM-9 diff --git a/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java b/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java index dac390e..f5dbf3c 100644 --- a/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java +++ b/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java @@ -178,8 +178,8 @@ else if( logObject.hasMember(association) ) { } - if( createLogLines(auditableObject, logObject, sudoContext, logType, association) > 0 ) { - + if( createLogLines(auditableObject, logObject, sudoContext, context, logType, association) > 0 ) { + Core.commit(sudoContext, logObject); return logObject; } else if( CreateLogObjectWithoutMemberChanges ) { @@ -193,7 +193,7 @@ else if( CreateLogObjectWithoutMemberChanges ) { } } - private static int createLogLines(IMendixObject inputObject, IMendixObject logObject, IContext sudoContext, TypeOfLog logType, String skipAssociation ) throws CoreException{ + private static int createLogLines(IMendixObject inputObject, IMendixObject logObject, IContext sudoContext,IContext currentContext, TypeOfLog logType, String skipAssociation ) throws CoreException{ boolean isNew = false; if( logType != TypeOfLog.Delete ) { // The object is new @@ -222,11 +222,11 @@ private static int createLogLines(IMendixObject inputObject, IMendixObject logOb line = null; if (member instanceof MendixObjectReference){ if( !member.getName().startsWith("System.") ) - line = createReferenceLogLine(logObject, member, isNew, sudoContext); + line = createReferenceLogLine(logObject, member, isNew, sudoContext, currentContext); } else if( member instanceof MendixObjectReferenceSet) - line = createReferenceSetLogLine(logObject, member, isNew, sudoContext); + line = createReferenceSetLogLine(logObject, member, isNew, sudoContext,currentContext); else{ String attributeName = member.getName(); @@ -241,7 +241,6 @@ else if( member instanceof MendixObjectReferenceSet) } if( logLineList.size() > 0 ) { - Core.commit(sudoContext, logObject); Core.commit(sudoContext, logLineList); return logLineList.size(); @@ -278,31 +277,31 @@ private static IMendixObject createSingleLogLine( IMendixObject logObject, IMend } - private static IMendixObject createReferenceLogLine(IMendixObject logObject, IMendixObjectMember member, boolean isNew, IContext context) throws CoreException { + private static IMendixObject createReferenceLogLine(IMendixObject logObject, IMendixObjectMember member, boolean isNew, IContext sudocontext, IContext currentcontext) throws CoreException { //get current and previous id - IMendixIdentifier cID = (IMendixIdentifier) member.getValue(context); - IMendixIdentifier pID = (IMendixIdentifier) member.getOriginalValue(context); + IMendixIdentifier cID = (IMendixIdentifier) member.getValue(currentcontext); + IMendixIdentifier pID = (IMendixIdentifier) member.getOriginalValue(currentcontext); // Get the values of reference objects - String pValue = getValueFromReference(pID, context); - String newValue = getValueFromReference(cID, context); + String pValue = getValueFromReference(pID, currentcontext); + String newValue = getValueFromReference(cID, currentcontext); if( IncludeOnlyChangedAttributes == false || !pValue.equals(newValue) || isNew ) { - IMendixObject logLine = Core.instantiate(context, LogLine.getType()); + IMendixObject logLine = Core.instantiate(sudocontext, LogLine.getType()); - logLine.setValue(context, LogLine.MemberNames.Member.toString(), member.getName() ); - logLine.setValue(context, LogLine.MemberNames.MemberType.toString(), MemberType.Reference.toString() ); - logLine.setValue(context, LogLine.MemberNames.LogLine_Log.toString(), logObject.getId() ); - logLine.setValue(context, LogLine.MemberNames.NewValue.toString(), newValue ); + logLine.setValue(sudocontext, LogLine.MemberNames.Member.toString(), member.getName() ); + logLine.setValue(sudocontext, LogLine.MemberNames.MemberType.toString(), MemberType.Reference.toString() ); + logLine.setValue(sudocontext, LogLine.MemberNames.LogLine_Log.toString(), logObject.getId() ); + logLine.setValue(sudocontext, LogLine.MemberNames.NewValue.toString(), newValue ); if (isNew) - logLine.setValue(context, LogLine.MemberNames.OldValue.toString(), "" ); + logLine.setValue(sudocontext, LogLine.MemberNames.OldValue.toString(), "" ); else - logLine.setValue(context, LogLine.MemberNames.OldValue.toString(), pValue ); + logLine.setValue(sudocontext, LogLine.MemberNames.OldValue.toString(), pValue ); - if( !logLine.getValue(context, LogLine.MemberNames.OldValue.toString()).equals(logLine.getValue(context, LogLine.MemberNames.NewValue.toString())) || isNew ) { + if( !logLine.getValue(sudocontext, LogLine.MemberNames.OldValue.toString()).equals(logLine.getValue(sudocontext, LogLine.MemberNames.NewValue.toString())) || isNew ) { _logNode.trace("Member: " + member.getName() + " has changed."); - logObject.setValue(context, Log.MemberNames.NumberOfChangedMembers.toString(), (Integer) logObject.getValue(context, Log.MemberNames.NumberOfChangedMembers.toString()) + 1 ); + logObject.setValue(sudocontext, Log.MemberNames.NumberOfChangedMembers.toString(), (Integer) logObject.getValue(sudocontext, Log.MemberNames.NumberOfChangedMembers.toString()) + 1 ); } return logLine; @@ -337,39 +336,39 @@ private static String getValueFromReference(IMendixIdentifier ID, IContext conte @SuppressWarnings("unchecked") - private static IMendixObject createReferenceSetLogLine(IMendixObject logObject, IMendixObjectMember member, boolean isNew, IContext context) throws CoreException { + private static IMendixObject createReferenceSetLogLine(IMendixObject logObject, IMendixObjectMember member, boolean isNew, IContext sudocontext, IContext currentcontext) throws CoreException { String currentValue = "", previousValue = ""; - List currentIDList = (List) member.getValue(context); - List previousIDList = (List) member.getOriginalValue(context); + List currentIDList = (List) member.getValue(currentcontext); + List previousIDList = (List) member.getOriginalValue(currentcontext); if ( currentIDList != null && currentIDList.size() > 0 ) { for (IMendixIdentifier id : currentIDList) { - currentValue += getValueFromReference(id, context); + currentValue += getValueFromReference(id, currentcontext); } } if ( previousIDList != null && previousIDList.size() > 0 ) { for (IMendixIdentifier id : previousIDList) { - previousValue += getValueFromReference(id, context); + previousValue += getValueFromReference(id, currentcontext); } } if( IncludeOnlyChangedAttributes == false || !previousValue.equals(currentValue) || isNew ) { - IMendixObject logLine = Core.instantiate(context, LogLine.getType()); - logLine.setValue(context, LogLine.MemberNames.Member.toString(), member.getName() ); - logLine.setValue(context, LogLine.MemberNames.MemberType.toString(), MemberType.ReferenceSet.toString() ); - logLine.setValue(context, LogLine.MemberNames.LogLine_Log.toString(), logObject.getId() ); - logLine.setValue(context, LogLine.MemberNames.NewValue.toString(), currentValue ); + IMendixObject logLine = Core.instantiate(sudocontext, LogLine.getType()); + logLine.setValue(sudocontext, LogLine.MemberNames.Member.toString(), member.getName() ); + logLine.setValue(sudocontext, LogLine.MemberNames.MemberType.toString(), MemberType.ReferenceSet.toString() ); + logLine.setValue(sudocontext, LogLine.MemberNames.LogLine_Log.toString(), logObject.getId() ); + logLine.setValue(sudocontext, LogLine.MemberNames.NewValue.toString(), currentValue ); if (isNew) - logLine.setValue(context, LogLine.MemberNames.OldValue.toString(), "" ); + logLine.setValue(sudocontext, LogLine.MemberNames.OldValue.toString(), "" ); else - logLine.setValue(context, LogLine.MemberNames.OldValue.toString(), previousValue ); + logLine.setValue(sudocontext, LogLine.MemberNames.OldValue.toString(), previousValue ); - if( !logLine.getValue(context, LogLine.MemberNames.OldValue.toString()).equals(logLine.getValue(context, LogLine.MemberNames.NewValue.toString())) || isNew ) { + if( !logLine.getValue(sudocontext, LogLine.MemberNames.OldValue.toString()).equals(logLine.getValue(currentcontext, LogLine.MemberNames.NewValue.toString())) || isNew ) { _logNode.trace("Member: " + member.getName() + " has changed."); - logObject.setValue(context, Log.MemberNames.NumberOfChangedMembers.toString(), (Integer) logObject.getValue(context, Log.MemberNames.NumberOfChangedMembers.toString()) + 1 ); + logObject.setValue(sudocontext, Log.MemberNames.NumberOfChangedMembers.toString(), (Integer) logObject.getValue(currentcontext, Log.MemberNames.NumberOfChangedMembers.toString()) + 1 ); } return logLine; From e383260bf4dfddf58ececbea2ac0f2ab07331948 Mon Sep 17 00:00:00 2001 From: Roeland Salij Date: Mon, 28 Aug 2017 11:46:51 +0200 Subject: [PATCH 2/2] Added a fix which was applied in Team server project earlier to ensure the commit of the parent logobject grouping all loglines. --- .../javasource/audittrail/log/CreateLogObject.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java b/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java index f5dbf3c..ee5cc84 100644 --- a/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java +++ b/src/AuditTrailModule/javasource/audittrail/log/CreateLogObject.java @@ -241,6 +241,7 @@ else if( member instanceof MendixObjectReferenceSet) } if( logLineList.size() > 0 ) { + Core.commit(sudoContext, logObject); Core.commit(sudoContext, logLineList); return logLineList.size();