public Tx getTx(Object txid) { Tx tx = inflightTransactions.get(txid); if (tx == null) { synchronized (inflightTransactions) { tx = inflightTransactions.get(txid); if (tx == null) { tx = new Tx(); inflightTransactions.put(txid, tx); } } } return tx; }
List<Future<Object>> results = tx.commit(); boolean doneSomething = false; for (Future<Object> result : results) {
List<Future<Object>> results = tx.commit(); boolean doneSomething = false; for (Future<Object> result : results) {
List<Future<Object>> results = tx.commit(); boolean doneSomething = false; for (Future<Object> result : results) {
List<Future<Object>> results = tx.commit(); boolean doneSomething = false; for (Future<Object> result : results) {
List<Future<Object>> results = tx.commit(); boolean doneSomething = false; for (Future<Object> result : results) {
/** * @param message * @throws IOException */ void addMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.addMessage(ctx, message); return AbstractMessageStore.FUTURE; } }); } } else { destination.addMessage(context, message); } }
/** * @param ack * @throws IOException */ final void removeMessage(ConnectionContext context, final MessageStore destination, final MessageAck ack) throws IOException { if (ack.isInTransaction()) { if (ack.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions()== false) { destination.removeMessage(context, ack); } else { Tx tx = getTx(ack.getTransactionId()); tx.add(new RemoveMessageCommand(context) { @Override public MessageAck getMessageAck() { return ack; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.removeMessage(ctx, ack); return AbstractMessageStore.FUTURE; } }); } } else { destination.removeMessage(context, ack); } }
/** * @param message * @throws IOException */ void addMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.addMessage(ctx, message); return AbstractMessageStore.FUTURE; } }); } } else { destination.addMessage(context, message); } }
/** * @param ack * @throws IOException */ final void removeMessage(ConnectionContext context, final MessageStore destination, final MessageAck ack) throws IOException { if (ack.isInTransaction()) { if (ack.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions()== false) { destination.removeMessage(context, ack); } else { Tx tx = getTx(ack.getTransactionId()); tx.add(new RemoveMessageCommand(context) { @Override public MessageAck getMessageAck() { return ack; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.removeMessage(ctx, ack); return AbstractMessageStore.FUTURE; } }); } } else { destination.removeMessage(context, ack); } }
/** * @param ack * @throws IOException */ final void removeMessage(ConnectionContext context, final MessageStore destination, final MessageAck ack) throws IOException { if (ack.isInTransaction()) { if (ack.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions()== false) { destination.removeMessage(context, ack); } else { Tx tx = getTx(ack.getTransactionId()); tx.add(new RemoveMessageCommand(context) { @Override public MessageAck getMessageAck() { return ack; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.removeMessage(ctx, ack); return AbstractMessageStore.FUTURE; } }); } } else { destination.removeMessage(context, ack); } }
Future<Object> asyncAddQueueMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); return AbstractMessageStore.FUTURE; } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { return destination.asyncAddQueueMessage(ctx, message); } }); return AbstractMessageStore.FUTURE; } } else { return destination.asyncAddQueueMessage(context, message); } }
/** * @param ack * @throws IOException */ final void removeMessage(ConnectionContext context, final MessageStore destination, final MessageAck ack) throws IOException { if (ack.isInTransaction()) { if (ack.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions()== false) { destination.removeMessage(context, ack); } else { Tx tx = getTx(ack.getTransactionId()); tx.add(new RemoveMessageCommand(context) { @Override public MessageAck getMessageAck() { return ack; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.removeMessage(ctx, ack); return AbstractMessageStore.FUTURE; } }); } } else { destination.removeMessage(context, ack); } }
/** * @param message * @throws IOException */ void addMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.addMessage(ctx, message); return AbstractMessageStore.FUTURE; } }); } } else { destination.addMessage(context, message); } }
ListenableFuture<Object> asyncAddQueueMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); return AbstractMessageStore.FUTURE; } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { return destination.asyncAddQueueMessage(ctx, message); } }); return AbstractMessageStore.FUTURE; } } else { return destination.asyncAddQueueMessage(context, message); } }
/** * @param message * @throws IOException */ void addMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { destination.addMessage(ctx, message); return AbstractMessageStore.FUTURE; } }); } } else { destination.addMessage(context, message); } }
ListenableFuture<Object> asyncAddTopicMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions()==false) { destination.addMessage(context, message); return AbstractMessageStore.FUTURE; } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { return destination.asyncAddTopicMessage(ctx, message); } }); return AbstractMessageStore.FUTURE; } } else { return destination.asyncAddTopicMessage(context, message); } }
ListenableFuture<Object> asyncAddQueueMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); return AbstractMessageStore.FUTURE; } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { return destination.asyncAddQueueMessage(ctx, message); } }); return AbstractMessageStore.FUTURE; } } else { return destination.asyncAddQueueMessage(context, message); } }
Future<Object> asyncAddTopicMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions()==false) { destination.addMessage(context, message); return AbstractMessageStore.FUTURE; } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future run(ConnectionContext ctx) throws IOException { return destination.asyncAddTopicMessage(ctx, message); } }); return AbstractMessageStore.FUTURE; } } else { return destination.asyncAddTopicMessage(context, message); } }
ListenableFuture<Object> asyncAddQueueMessage(ConnectionContext context, final MessageStore destination, final Message message) throws IOException { if (message.getTransactionId() != null) { if (message.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.addMessage(context, message); return AbstractMessageStore.FUTURE; } else { Tx tx = getTx(message.getTransactionId()); tx.add(new AddMessageCommand(context) { @Override public Message getMessage() { return message; } @Override public Future<Object> run(ConnectionContext ctx) throws IOException { return destination.asyncAddQueueMessage(ctx, message); } }); return AbstractMessageStore.FUTURE; } } else { return destination.asyncAddQueueMessage(context, message); } }