/** * Returns an InvalidMessage Exception with optionally attached FIX message. * * @param errorMessage error description * @param fixMessage problematic FIX message * @return InvalidMessage Exception */ static InvalidMessage newInvalidMessageException(String errorMessage, Message fixMessage) { if (fixMessage != null) { return new InvalidMessage(errorMessage, fixMessage); } return new InvalidMessage(errorMessage); } }
/** * Returns an InvalidMessage Exception with optionally attached FIX message. * * @param errorMessage error description * @param fixMessage problematic FIX message * @return InvalidMessage Exception */ static InvalidMessage newInvalidMessageException(String errorMessage, Message fixMessage) { if (fixMessage != null) { return new InvalidMessage(errorMessage, fixMessage); } return new InvalidMessage(errorMessage); } }
public static String getMessageType(String messageString) throws InvalidMessage { final String value = getStringField(messageString, 35); if (value == null) { throw new InvalidMessage("Missing or garbled message type in " + messageString); } return value; }
private void validateCheckSum(String messageData) throws InvalidMessage { try { // Body length is checked at the protocol layer final int checksum = trailer.getInt(CheckSum.FIELD); if (checksum != MessageUtils.checksum(messageData)) { // message will be ignored if checksum is wrong or missing throw new InvalidMessage("Expected CheckSum=" + MessageUtils.checksum(messageData) + ", Received CheckSum=" + checksum + " in " + messageData); } } catch (final FieldNotFound e) { throw new InvalidMessage("Field not found: " + e.field + " in " + messageData); } }
private String getMsgType() throws InvalidMessage { try { return header.getString(MsgType.FIELD); } catch (final FieldNotFound e) { throw new InvalidMessage(e.getMessage() + " in " + messageData); } }
throw new InvalidMessage("Equal sign not found in field" + " in " + messageData); } catch (final NumberFormatException e) { position = messageData.indexOf('\001', position + 1) + 1; throw new InvalidMessage("Bad tag format: " + e.getMessage() + " in " + messageData); throw new InvalidMessage("SOH not found at end of field: " + tag + " in " + messageData); fieldLength = fields.getInt(lengthField); } catch (final FieldNotFound e) { throw new InvalidMessage("Tag " + e.field + " not found in " + messageData); sohOffset = messageData.indexOf('\001', sohOffset + 1); if (sohOffset == -1) { throw new InvalidMessage("SOH not found at end of field: " + tag + " in " + messageData);
/** * Utility method for parsing a message. This should only be used for parsing messages from * FIX versions 4.4 or earlier. * * @param messageFactory * @param dataDictionary * @param messageString * @return the parsed message * @throws InvalidMessage */ public static Message parse(MessageFactory messageFactory, DataDictionary dataDictionary, String messageString) throws InvalidMessage { final int index = messageString.indexOf(FIELD_SEPARATOR); if (index < 0) { throw new InvalidMessage("Message does not contain any field separator"); } final String beginString = messageString.substring(2, index); final String messageType = getMessageType(messageString); final quickfix.Message message = messageFactory.create(beginString, messageType); message.fromString(messageString, dataDictionary, dataDictionary != null); return message; }
/** * Utility method for parsing a message. This should only be used for parsing messages from * FIX versions 4.4 or earlier. * * @param messageFactory * @param dataDictionary * @param messageString * @return the parsed message * @throws InvalidMessage */ public static Message parse(MessageFactory messageFactory, DataDictionary dataDictionary, String messageString) throws InvalidMessage { final int index = messageString.indexOf(FIELD_SEPARATOR); if (index < 0) { throw new InvalidMessage("Message does not contain any field separator"); } final String beginString = messageString.substring(2, index); final String messageType = getMessageType(messageString); final quickfix.Message message = messageFactory.create(beginString, messageType); message.fromString(messageString, dataDictionary, dataDictionary != null); return message; }
/** * Utility method for parsing a mesasge. This should only be used for parsing messages from * FIX versions 4.4 or earlier. * * @param messageFactory * @param dataDictionary * @param messageString * @return the parsed message * @throws InvalidMessage */ public static Message parse(MessageFactory messageFactory, DataDictionary dataDictionary, String messageString) throws InvalidMessage { final int index = messageString.indexOf(FIELD_SEPARATOR); if (index < 0) { throw new InvalidMessage("Message does not contain any field separator"); } final String beginString = messageString.substring(2, index); final String messageType = getMessageType(messageString); final quickfix.Message message = messageFactory.create(beginString, messageType); message.fromString(messageString, dataDictionary, dataDictionary != null); return message; }
private static ApplVerID getApplVerID(Session session, String messageString) throws InvalidMessage { ApplVerID applVerID = null; final String applVerIdString = getStringField(messageString, ApplVerID.FIELD); if (applVerIdString != null) { applVerID = new ApplVerID(applVerIdString); } if (applVerID == null) { applVerID = session.getTargetDefaultApplicationVersionID(); } if (applVerID == null && isLogon(messageString)) { final String defaultApplVerIdString = getStringField(messageString, DefaultApplVerID.FIELD); if (defaultApplVerIdString != null) { applVerID = new ApplVerID(defaultApplVerIdString); } } if (applVerID == null) { throw new InvalidMessage("Can't determine ApplVerID for message"); } return applVerID; }
private void parseHeader(DataDictionary dd, boolean doValidation) throws InvalidMessage { if (doValidation) { final boolean validHeaderFieldOrder = isNextField(dd, header, BeginString.FIELD) && isNextField(dd, header, BodyLength.FIELD) && isNextField(dd, header, MsgType.FIELD); if (!validHeaderFieldOrder) { // Invalid message preamble (first three fields) is a serious // condition and is handled differently from other message parsing errors. throw new InvalidMessage("Header fields out of order in " + messageData); } } StringField field = extractField(dd, header); while (field != null && isHeaderField(field, dd)) { header.setField(field); if (dd != null && dd.isGroup(DataDictionary.HEADER_ID, field.getField())) { parseGroup(DataDictionary.HEADER_ID, field, dd, dd, header, doValidation); } field = extractField(dd, header); } pushBack(field); }
throw new InvalidMessage("The group " + groupCountTag + " must set the delimiter field " + firstField + " in " + messageData);