@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
49 lines (40 loc) • 2.67 kB
JavaScript
;
var odataUri = require('./../uri/oDataUriParser');
var serviceProcessor = require('./../serializer/serviceSerializer');
var metadataProcessor = require('./../serializer/metadataSerializer');
var batchProcessor = require('./../processor/batchProcessor');
var resourceProcessor = require('./resourceProcessor');
var batchRunState = require('./../utils/batch/batchConst').runState;
var Measurement = require('./../utils/measurement');
exports.processRequest = function (context, asyncDone) {
try {
context.logger.silly("processor", "processRequest");
var oData = context.oData;
if (oData.kind === odataUri.URI_KIND_Service) {
Measurement.measureWithCB(serviceProcessor.process, context, asyncDone, 'serviceProcessor.process');
} else if (oData.kind === odataUri.URI_KIND_MetaData) {
Measurement.measureWithCB(metadataProcessor.process, context, asyncDone, 'metadataProcessor.process');
} else if (oData.kind === odataUri.URI_KIND_Batch) {
Measurement.measureWithCB(batchProcessor.process, context, asyncDone, 'batchProcessor.process'); // $batch-request itself
} else if (oData.kind === odataUri.URI_KIND_Resource) {
if (!context.batchContext) {
// regular request processing
Measurement.measureWithCB(resourceProcessor.process, context, asyncDone, 'resourceProcessor.process');
} else {
var batchContext = context.batchContext; // $batch-request: operation processing (based on status)
if (batchContext.status === batchRunState.createTables) { // on batch changes: all temp. tables of all operations are generated at beginning batch
Measurement.measureWithCB(resourceProcessor.processInBatchCreateTables, context, asyncDone, 'processInBatchCreateTables');
}else if (batchContext.status === batchRunState.execution) {
Measurement.measureWithCB(resourceProcessor.processInBatch, context, asyncDone, 'processInBatch');
}else if (batchContext.status === batchRunState.preCommitRun) {
Measurement.measureWithCB(resourceProcessor.processInBatchPreCommitRun, context, asyncDone, 'processInBatchPreCommitRun');
} else if (batchContext.status === batchRunState.postCommitRun) {
Measurement.measureWithCB(resourceProcessor.processInBatchPostCommitRun, context, asyncDone, 'processInBatchPostCommitRun');
}
}
}
}
catch (ex) {
return asyncDone(ex);
}
};