public ContextBase process(ContextBase context) { if (log.isDebugEnabled()) { log.debug("Receive request. |context-" + context.toString()); } String errCode = null; QueueRequest request = null; ContextBase result = new ContextBase(); if (StringUtils.isEmpty(context.get(Attributes.ATTR_ERROR_CODE))) context.put(Attributes.ATTR_ERROR_CODE, ErrorCode.SUCCESS); try { if (shutdownFlag.get()) { log.warn("Queue Manager is shuting down."); result.put(Attributes.ATTR_ERROR_CODE, ErrorCode.QUEUE_SHUTINGDOWN); return result; } errCode = validate(context); context.put(Attributes.ATTR_QUEUE_REQUEST_ID, context.get(Attributes.ATTR_TRANSACTION_ID)); if (!ErrorCode.SUCCESS.equals(errCode)) { result.put(Attributes.ATTR_ERROR_CODE, errCode); return result; } request = RequestDbFactory.getInstance().insert(context); if (request == null) { errCode = ErrorCode.DATABASE_EXCEPTION; result.put(Attributes.ATTR_ERROR_CODE, errCode); log.error( "Fail to insert context to queue db. | ErrorCode-" + errCode + " | context-" + context); return result; } QueueServer qServer = queues.get(request.getQueueId()); if (qServer == null) result.setErrorCode(ErrorCode.QUEUE_NOT_EXISTED); else result = qServer.process(request); if (!ErrorCode.SUCCESS.equals(result.getErrorCode())) { RequestDbFactory.getInstance().delete(request); log.error("Process put request to Queue failed. | result-" + result); } else { log.info("Process put request to Queue successful. | result-" + result); } return result; } catch (Exception e) { log.error( "Exception while processing received context. | context-" + context.toString() + " | ErrorMessage-" + e.getMessage(), e); result.put(Attributes.ATTR_ERROR_CODE, ErrorCode.SYS_INTERNAL_ERROR); return result; } }