Status: fixed in 2.0.3.3
You might have noticed that when using the ecm/model/FileTracker class in IBM Content Navigator, the callback is never called.
For instance if you are using the following code:
FileTracker.downloadAndTrackFiles(documentInfoObj, function (response) { console.log("Never invoked"); });
the callback is never called. This is because there is a defect in the FileTracker processMessage function, it does not look correctly for the callback because of a = missing in the condition:
var callbackResponse; if (response.responses && response.responses.length > 0) { var callbackResponse; for ( var i = 0; i < response.responses.length; i++) { if (response.responses[i].errorCode = this.SERVER_RESPONSE_CALLBACK) { callbackResponse = response.responses[i]; break; } } } else if (response.errorCode == this.SERVER_RESPONSE_CALLBACK) { callbackResponse = response; }
This is fixed in Fix Pack 3 though (2.0.3.3), so you can either upgrade or use a plugin to do an aspect around and replace the function by the correct one, which is:
processMessage: function(json, showSuccessMessage) { var methodName = "processMessage"; this.logEntry(methodName); var response = dojojson.fromJson(json); if (response.hasError) { var errorPrefix = "", inserts = []; var showError = true; if (response.errorCode == 7) {//ERROR_OPEN_FAILED errorPrefix = "runtime_file_tracking_file_not_found_error"; } else if (response.errorCode == 3) { errorPrefix = "runtime_file_tracking_ioexception_error"; } else if (response.errorCode == this.ERROR_NOT_TRACKED) { showError = false; } else if (response.errorCode == this.ERROR_OPEN_FAILED) { showError = true; errorPrefix = "runtime_file_tracking_open_error"; } else if (response.errorCode == this.ERROR_SAVE_FILE_FAILED) { showError = true; errorPrefix = "runtime_file_tracking_save_file_error"; } else if (response.errorCode == this.ERROR_SAVE_FILE_FAILED_AND_OPEN_FIALED) { showError = true; errorPrefix = "runtime_file_tracking_save_file_after_checkout_error"; } else if (response.errorCode == this.ERROR_ENVIRONMENT_VARIABLE_PATH_NOT_FOUND) { showError = true; errorPrefix = "runtime_file_tracking_ev_file_path_not_found_error"; } else if (response.errorCode == this.ERROR_OPEN_CONNECTION) { showError = true; errorPrefix = "runtime_file_tracking_ioexception_error"; } else if (response.errorCode == this.ERROR_FOLDER_NOT_FOUND) { showError = true; errorPrefix = "runtime_file_tracking_exact_file_path_not_found_error"; } else if (response.errorCode == this.ERROR_EXACT_PATH_NOT_FOUND) { showError = true; errorPrefix = "runtime_file_tracking_exact_file_path_not_found_error"; } else if (response.errorCode == this.ERROR_CANNOT_CREATE_TRACKING) { showError = false; errorPrefix = "runtime_file_tracking_exact_file_path_not_found_error"; } else if (response.errorCode == this.ERROR_DELETE_FILE_FAILED) { showError = true; errorPrefix = "runtime_file_tracking_cannot_delete_file_error"; } else { showError = true; errorPrefix = "runtime_file_tracking_generic_error"; } if (showError) { if (response.responses && response.responses[0].value) { inserts.push(response.responses[0].value); } else if (response.value) { inserts.push(response.value); } Desktop.addMessage(Message.createErrorMessage(errorPrefix, inserts, false)); } } else { var successMessage = ""; if (response.responses) { if (response.responses.length == 1 && ((response.responses[0].errorCode == this.ERROR_DELETE_FILE_FAILED || response.responses[0].errorCode == this.FOUND_TRACKED_RECORD_BY_FILE_PATH) || (response.responses[0].errorCode == this.FOUND_TRACKED_RECORD_BY_SCANNING) || (response.responses[0].errorCode == this.SUCCESSFULLY_TRACKED_FILE_USING_ADS))) { successMessage = string.substitute(ecm.messages.file_tracking_successfully_downloaded_document, [ response.responses[0].originalDocumentName, response.responses[0].value ]); } else if (response.responses.length > 1 && ((response.responses[0].errorCode == this.FOUND_TRACKED_RECORD_BY_FILE_PATH) || (response.responses[0].errorCode == this.FOUND_TRACKED_RECORD_BY_SCANNING) || (response.responses[0].errorCode == this.SUCCESSFULLY_TRACKED_FILE_USING_UD) || (response.responses[0].errorCode == this.SUCCESSFULLY_TRACKED_FILE_USING_ADS))) { var count = response.responses.length; var documentsDownloaded = []; for ( var i = 0; i < count; i++) { documentsDownloaded.push(response.responses[i].originalDocumentName); } successMessage = string.substitute(ecm.messages.file_tracking_successfully_downloaded_document, [ documentsDownloaded.join(",") ]); } } if (successMessage && successMessage.length > 0) { Desktop.addMessage(new Message({ number: 0, level: 0, text: successMessage })); } var callbackResponse; if (response.responses && response.responses.length > 0) { var callbackResponse; for ( var i = 0; i < response.responses.length; i++) { if (response.responses[i].errorCode == this.SERVER_RESPONSE_CALLBACK) { callbackResponse = response.responses[i]; break; } } } else if (response.errorCode == this.SERVER_RESPONSE_CALLBACK) { callbackResponse = response; } if (callbackResponse && callbackResponse.value) { var lookupId = callbackResponse.value.callbackId; if (lookupId && this.callbackMap[lookupId]) { var callbackFunc = this.callbackMap[lookupId]; if (callbackFunc) { callbackFunc(callbackResponse.value.response); } } } } this.logExit(methodName); return response; //MessageFactory.createErrorMessage = function(messagePrefix, inserts, backgroundRequest); },