Skip to content

Commit 6cadb30

Browse files
Handle cases for events without user code in web objects (#1051)
1 parent 5135b17 commit 6cadb30

File tree

1 file changed

+28
-17
lines changed
  • dotnet/src/dotnetframework/GxClasses/Middleware

1 file changed

+28
-17
lines changed

dotnet/src/dotnetframework/GxClasses/Middleware/GXHttp.cs

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -557,21 +557,29 @@ private void ParseMetadata()
557557
#else
558558
JObject eventMetadata = JSONHelper.ReadJSON<JObject>((string)targetObj.EventsMetadata[eventName.ToString()]);
559559
#endif
560-
eventHandlers[eventCount] = (string)eventMetadata["handler"];
561-
JArray eventInputParms = (JArray)eventMetadata["iparms"];
562-
foreach (JObject inputParm in eventInputParms)
560+
if (eventMetadata != null)
563561
{
564-
AddParmsMetadata(inputParm, DynAjaxEventContext.inParmsMetadata, DynAjaxEventContext.inParmsMetadataHash);
565-
eventUseInternalParms[eventCount] = eventUseInternalParms[eventCount] || IsInternalParm(inputParm);
566-
}
567-
JArray eventOutputParms = (JArray)eventMetadata["oparms"];
568-
if (eventOutputParms != null)
569-
{
570-
foreach (JObject outputParm in eventOutputParms)
562+
eventHandlers[eventCount] = (string)eventMetadata["handler"];
563+
JArray eventInputParms = (JArray)eventMetadata["iparms"];
564+
foreach (JObject inputParm in eventInputParms)
565+
{
566+
AddParmsMetadata(inputParm, DynAjaxEventContext.inParmsMetadata, DynAjaxEventContext.inParmsMetadataHash);
567+
eventUseInternalParms[eventCount] = eventUseInternalParms[eventCount] || IsInternalParm(inputParm);
568+
}
569+
JArray eventOutputParms = (JArray)eventMetadata["oparms"];
570+
if (eventOutputParms != null)
571571
{
572-
AddParmsMetadata(outputParm, DynAjaxEventContext.outParmsMetadata, DynAjaxEventContext.outParmsMetadataHash);
572+
foreach (JObject outputParm in eventOutputParms)
573+
{
574+
AddParmsMetadata(outputParm, DynAjaxEventContext.outParmsMetadata, DynAjaxEventContext.outParmsMetadataHash);
575+
}
573576
}
574577
}
578+
else
579+
{
580+
GXLogging.Warn(log, "The event ", eventName, " is not implemented");
581+
eventHandlers[eventCount] = string.Empty;
582+
}
575583
eventCount++;
576584
}
577585
}
@@ -1024,14 +1032,17 @@ private void DoInvoke(object[] MethodParms)
10241032
for (int i = 0; i < eventHandlers.Length; i++)
10251033
{
10261034
string handler = eventHandlers[i];
1027-
if (i > 0)
1035+
if (!string.IsNullOrEmpty(handler))
10281036
{
1029-
targetObj.PrepareForReuse();
1037+
if (i > 0)
1038+
{
1039+
targetObj.PrepareForReuse();
1040+
}
1041+
_ = targetObj.GetType().InvokeMember(handler, BindingFlags.Public |
1042+
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod,
1043+
Type.DefaultBinder,
1044+
targetObj, (eventUseInternalParms[i] ? MethodParms : null));
10301045
}
1031-
_ = targetObj.GetType().InvokeMember(handler, BindingFlags.Public |
1032-
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod,
1033-
Type.DefaultBinder,
1034-
targetObj, (eventUseInternalParms[i] ? MethodParms : null));
10351046
}
10361047
}
10371048
}

0 commit comments

Comments
 (0)