public void onMessage(OrderCancelRequest message, SessionID sessionID) throws FieldNotFound,
UnsupportedMessageType, IncorrectTagValue {
String symbol = message.getString(Symbol.FIELD);
char side = message.getChar(Side.FIELD);
String id = message.getString(OrigClOrdID.FIELD);
Order order = orderMatcher.find(symbol, side, id);
if (order != null) {
order.cancel();
cancelOrder(order);
orderMatcher.erase(order);
} else {
OrderCancelReject fixOrderReject = new OrderCancelReject(new OrderID("NONE"), new ClOrdID(message.getString(ClOrdID.FIELD)),
new OrigClOrdID(message.getString(OrigClOrdID.FIELD)), new OrdStatus(OrdStatus.REJECTED), new CxlRejResponseTo(CxlRejResponseTo.ORDER_CANCEL_REQUEST));
String senderCompId = message.getHeader().getString(SenderCompID.FIELD);
String targetCompId = message.getHeader().getString(TargetCompID.FIELD);
fixOrderReject.getHeader().setString(SenderCompID.FIELD, targetCompId);
fixOrderReject.getHeader().setString(TargetCompID.FIELD, senderCompId);
try {
Session.sendToTarget(fixOrderReject, targetCompId, senderCompId);
} catch (SessionNotFound e) {
}
}
}