对于我拥有的功能,我遇到了一些奇怪的行为,我无法解释发生了什么。我已经把它展示给了一位也对此感到困惑的同事。
在我的问题中包含的代码中。
- 在调试行“Value=”之后,我的 for 循环被正确破坏并且调试行“Completed Value=”执行,然后是我的函数“updateBookingRecordWithConfirmationResponse”,然后是调试行“After updatefunctionCalled”。到目前为止,这一切都是正确的。接下来发生的事情很奇怪。
- 调试语句 "Completed Value=" 再次执行,函数 "updateBookingRecordWithConfirmationResponse" 再次执行,然后调试行 "After updatefunctionCalled" 再次执行。这不应该发生第二次。我的函数“walkThroughReservationNode”没有被再次调用,但调试日志和调用 updateBookingRecordWithConfirmationResponse 可以。
如果有人可以从此处详述的代码中看到我的代码中的错误在哪里,或者可能导致 for 循环之后的进程再次执行的原因,将不胜感激。
提前致谢。
private void walkThroughReservationNode(DOM.XmlNode envelope) {
System.debug('in walkThroughReservationNode');
ReservationConfirmationWrapper reservationConfirmationWrapper =
new reservationConfirmationWrapper();
for (DOM.XMLNode childNode : envelope.getChildElements()) {
system.debug('in for loop');
if (childNode.getName() == 'UniqueID') {
System.debug('uniqueIDNodeVal=' + childNode.getAttribute('ID', ''));
reservationConfirmationWrapper.bookingId = childNode.getAttribute('ID', '');
} else if (childNode.getName() == 'ReservationID') {
System.debug('Value=' + childNode.getAttribute('ID_Value', ''));
reservationConfirmationWrapper.confirmationNumber = childNode.getAttribute('ID_Value', '');
break;
} else if (childNode.getName() == 'Warning') {
System.debug('Warning Exists ' + childNode.getText());
reservationConfirmationWrapper.warningMessage = childNode.getText();
break;
} else {
system.debug('before new walkthrough');
walkThroughReservationNode(childNode);
}
}
System.debug('Completed Value=' + reservationConfirmationWrapper.confirmationNumber);
updateBookingRecordWithConfirmationResponse(reservationConfirmationWrapper);
System.debug('After updatefunctionCalled');
}