@Override
public void handle(ServerFrame serverFrame) {
Frame frame = serverFrame.frame();
StompServerConnection connection = serverFrame.connection();
String txId = frame.getHeader(Frame.TRANSACTION);
if (txId == null) {
Frame error = Frames.createErrorFrame("Missing transaction id", Headers.create(), "COMMIT frames " +
"must contain the " +
"'transaction' header.");
connection.write(error).close();
return;
}
Transaction transaction = Transactions.instance().getTransaction(connection, txId);
if (transaction == null) {
Frame error = Frames.createErrorFrame("Unknown transaction",
Headers.create(Frame.TRANSACTION, txId),
"The transaction id is unknown.");
connection.write(error).close();
return;
}
replay(connection, transaction.getFrames());
transaction.clear();
Transactions.instance().unregisterTransaction(connection, txId);
Frames.handleReceipt(frame, connection);
}