bool AMQListener::validateRequest()

in src/utils/ActiveMQAnalysisEngineService.cpp [760:828]


bool AMQListener::validateRequest(const TextMessage * textMessage, string & errmsg) {
  bool valid = true; 
  
  if ( textMessage->getCMSReplyTo() == NULL) 
    LOGWARN("AMQListener::validateRequest() JMSReplyTo is not set. " );    
  
  if (textMessage->getCMSReplyTo() == NULL &&
    !textMessage->propertyExists("MessageFrom") ) {
     errmsg = "Reply to destination not set.";
     return false;
  }  

  if (!textMessage->propertyExists("Command") ) {
    errmsg = "Required property 'Command' is not set.";
    LOGERROR("AMQListener::validateRequest " + errmsg);
    valid = false;  
  } else {
    int command = textMessage->getIntProperty("Command");   
    if (command != PROCESS_CAS_COMMAND &&
        command != GET_META_COMMAND &&
        command != CPC_COMMAND) {
        stringstream str;
        str << "Unexpected value for 'Command' " << command;
        errmsg = str.str(); 
        LOGERROR("AMQListener::validateRequest " + errmsg);
        valid=false;
    } else if (command == CPC_COMMAND) {
      if (iv_pEngine == NULL) {
        errmsg = "CPC request received but AnalysisEngine not available.";
        LOGERROR("AMQListener::validateRequest() " + errmsg);
        valid = false;
      }
    } else if (command == PROCESS_CAS_COMMAND) {
      if (iv_pCas == NULL || iv_pEngine == NULL) {
        errmsg = "Process Cas request but an AnalysisEngine and CAS not available.";
        LOGERROR("AMQListener::validateRequest() " + errmsg);
        valid = false;
      }
      if (!textMessage->propertyExists("Payload") ) {
        errmsg = "Required property 'Payload' is not set.";
        LOGERROR("AMQListener::validateRequest " + errmsg);
        valid = false;  
      } else {
        int payload = textMessage->getIntProperty("Payload");
        if (payload != XCAS_PAYLOAD && payload != XMI_PAYLOAD) {
           stringstream str;
           str << "Unexpected value for 'Payload' " << payload;
           errmsg = str.str();
           LOGERROR("AMQListener::validateRequest " + errmsg);
           valid=false;
        } 
		
		try {
          string text = textMessage->getText().c_str();
          if (text.length() == 0) {
            errmsg = "There is no payload data. Nothing to process.";
            LOGERROR("AMQListener::validateRequest " + errmsg);
            valid = false;  
          }
		} catch (CMSException& e) {
			errmsg = e.getMessage();
			LOGERROR("AMQListener::validateRequest " + e.getMessage());
			valid = false;
		}
      }
    }
  }
  return valid;
}