Package org.axonframework.unitofwork

Examples of org.axonframework.unitofwork.UnitOfWork


        assertNotSame(loaded, load);
    }

    @Test
    public void testSaveSaga_InsideUnitOfWorkWithoutConnection() throws SQLException {
        UnitOfWork uow = DefaultUnitOfWork.startAndGet();

        String identifier = UUID.randomUUID().toString();
        StubSaga saga = new StubSaga(identifier);
        repository.storeSaga(saga);
        StubSaga loaded = (StubSaga) repository.load(identifier);
        repository.commit(loaded);

        Saga load = repository.load(identifier);
        assertNotSame(loaded, load);

        uow.commit();

        // the datasource should only have been asked once
        verify(dataSource, times(1)).getConnection();
    }
View Full Code Here


    }

    @Test
    public void testSendMessage_WithTransactionalUnitOfWork() throws IOException {
        TransactionManager<?> mockTransaction = new NoTransactionManager();
        UnitOfWork uow = DefaultUnitOfWork.startAndGet(mockTransaction);

        Connection connection = mock(Connection.class);
        when(connectionFactory.createConnection()).thenReturn(connection);
        Channel transactionalChannel = mock(Channel.class);
        when(transactionalChannel.isOpen()).thenReturn(true);
        when(connection.createChannel(true)).thenReturn(transactionalChannel);
        GenericEventMessage<String> message = new GenericEventMessage<String>("Message");
        when(serializer.serialize(message.getPayload(), byte[].class))
                .thenReturn(new SimpleSerializedObject<byte[]>("Message".getBytes(UTF_8), byte[].class, "String", "0"));
        when(serializer.serialize(message.getMetaData(), byte[].class))
                .thenReturn(new SerializedMetaData<byte[]>(new byte[0], byte[].class));
        testSubject.publish(message);

        verify(transactionalChannel).basicPublish(eq("mockExchange"), eq("java.lang"),
                                                  eq(false), eq(false),
                                                  any(AMQP.BasicProperties.class), isA(byte[].class));
        verify(transactionalChannel, never()).txCommit();
        verify(transactionalChannel, never()).close();

        uow.commit();
        verify(transactionalChannel).txCommit();
        verify(transactionalChannel).close();
    }
View Full Code Here

    }

    @Test
    public void testSendMessage_WithTransactionalUnitOfWork_ChannelClosedBeforeCommit() throws IOException {
        TransactionManager<?> mockTransaction = new NoTransactionManager();
        UnitOfWork uow = DefaultUnitOfWork.startAndGet(mockTransaction);

        Connection connection = mock(Connection.class);
        when(connectionFactory.createConnection()).thenReturn(connection);
        Channel transactionalChannel = mock(Channel.class);
        when(transactionalChannel.isOpen()).thenReturn(false);
        when(connection.createChannel(true)).thenReturn(transactionalChannel);
        GenericEventMessage<String> message = new GenericEventMessage<String>("Message");
        when(serializer.serialize(message.getPayload(), byte[].class))
                .thenReturn(new SimpleSerializedObject<byte[]>("Message".getBytes(UTF_8), byte[].class, "String", "0"));
        when(serializer.serialize(message.getMetaData(), byte[].class))
                .thenReturn(new SerializedMetaData<byte[]>(new byte[0], byte[].class));
        testSubject.publish(message);

        verify(transactionalChannel).basicPublish(eq("mockExchange"), eq("java.lang"),
                                                  eq(false), eq(false),
                                                  any(AMQP.BasicProperties.class), isA(byte[].class));
        verify(transactionalChannel, never()).txCommit();
        verify(transactionalChannel, never()).close();

        try {
            uow.commit();
            fail("Expected exception");
        } catch (EventPublicationFailedException e) {
            assertNotNull(e.getMessage());
        }
        verify(transactionalChannel, never()).txCommit();
View Full Code Here

        verify(transactionalChannel, never()).txCommit();
    }

    @Test
    public void testSendMessage_WithUnitOfWorkRollback() throws IOException {
        UnitOfWork uow = DefaultUnitOfWork.startAndGet();

        Connection connection = mock(Connection.class);
        when(connectionFactory.createConnection()).thenReturn(connection);
        Channel transactionalChannel = mock(Channel.class);
        when(connection.createChannel(true)).thenReturn(transactionalChannel);
        GenericEventMessage<String> message = new GenericEventMessage<String>("Message");
        when(serializer.serialize(message.getPayload(), byte[].class))
                .thenReturn(new SimpleSerializedObject<byte[]>("Message".getBytes(UTF_8), byte[].class, "String", "0"));
        when(serializer.serialize(message.getMetaData(), byte[].class))
                .thenReturn(new SerializedMetaData<byte[]>(new byte[0], byte[].class));
        testSubject.publish(message);

        verify(transactionalChannel).basicPublish(eq("mockExchange"), eq("java.lang"),
                                                  eq(false), eq(false),
                                                  any(AMQP.BasicProperties.class), isA(byte[].class));
        verify(transactionalChannel, never()).txRollback();
        verify(transactionalChannel, never()).txCommit();
        verify(transactionalChannel, never()).close();

        uow.rollback();
        verify(transactionalChannel, never()).txCommit();
        verify(transactionalChannel).txRollback();
        verify(transactionalChannel).close();
    }
View Full Code Here

        when(serializer.serialize(message.getPayload(), byte[].class))
                .thenReturn(new SimpleSerializedObject<byte[]>("Message".getBytes(UTF_8), byte[].class, "String", "0"));
        when(serializer.serialize(message.getMetaData(), byte[].class))
                .thenReturn(new SerializedMetaData<byte[]>(new byte[0], byte[].class));

        UnitOfWork uow = DefaultUnitOfWork.startAndGet();

        testSubject.publish(message);
        verify(channel, never()).waitForConfirms();

        uow.commit();

        verify(channel).confirmSelect();
        verify(channel).basicPublish(eq("mockExchange"), eq("java.lang"),
                                     eq(false), eq(false),
                                     any(AMQP.BasicProperties.class), isA(byte[].class));
View Full Code Here

    }

    private Object doDispatch(CommandMessage<?> command, CommandHandler commandHandler) throws Throwable {
        logger.debug("Dispatching command [{}]", command.getCommandName());
        statistics.recordReceivedCommand();
        UnitOfWork unitOfWork = unitOfWorkFactory.createUnitOfWork();
        InterceptorChain chain = new DefaultInterceptorChain(command, unitOfWork, commandHandler, handlerInterceptors);

        Object returnValue;
        try {
            returnValue = chain.proceed();
        } catch (Throwable throwable) {
            if (rollbackConfiguration.rollBackOn(throwable)) {
                unitOfWork.rollback(throwable);
            } else {
                unitOfWork.commit();
            }
            throw throwable;
        }

        unitOfWork.commit();
        return returnValue;
    }
View Full Code Here


    @Test
    public void testDispatchCommand_UnitOfWorkIsCommittedOnCheckedException() {
        UnitOfWorkFactory mockUnitOfWorkFactory = mock(DefaultUnitOfWorkFactory.class);
        UnitOfWork mockUnitOfWork = mock(UnitOfWork.class);
        when(mockUnitOfWorkFactory.createUnitOfWork()).thenReturn(mockUnitOfWork);

        testSubject.setUnitOfWorkFactory(mockUnitOfWorkFactory);
        testSubject.subscribe(String.class.getName(), new CommandHandler<String>() {
            @Override
View Full Code Here

        repository = new EventSourcingRepository<SimpleAggregateRoot>(new SimpleAggregateFactory(), eventStore,
                                                                      strategy);
        mockEventBus = mock(EventBus.class);
        repository.setEventBus(mockEventBus);

        UnitOfWork uow = DefaultUnitOfWork.startAndGet();
        SimpleAggregateRoot aggregate = new SimpleAggregateRoot();
        repository.add(aggregate);
        uow.commit();

        reset(mockEventBus);
        aggregateIdentifier = aggregate.getIdentifier();
    }
View Full Code Here

        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    awaitFor.await();
                    UnitOfWork uow = DefaultUnitOfWork.startAndGet();
                    SimpleAggregateRoot aggregate = repository.load(aggregateIdentifier, null);
                    aggregate.doOperation();
                    aggregate.doOperation();
                    uow.commit();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                } finally {
                    reportDone.countDown();
                }
View Full Code Here

    @SuppressWarnings("unchecked")
    private RetryPolicy processNextEntry() {
        final EventMessage<?> event = nextEvent();
        ProcessingResult processingResult = ProcessingResult.REGULAR;
        if (event != null) {
            UnitOfWork uow = null;
            try {
                uow = unitOfWorkFactory.createUnitOfWork();
                processingResult = doHandle(event);
                if (processingResult.requiresRollback()) {
                    uow.rollback();
                } else {
                    uow.commit();
                }
                if (processingResult.requiresRescheduleEvent()) {
                    eventQueue.addFirst(event);
                } else if (processingResult.isFailure()) {
                    notifyProcessingHandlers();
                    eventProcessingMonitor.onEventProcessingFailed(Arrays.<EventMessage>asList(event),
                                                                   processingResult.getError());
                } else {
                    processedEvents.add(event);
                }
                retryAfter = System.currentTimeMillis() + processingResult.waitTime();
            } catch (RuntimeException e) {
                processingResult = new ProcessingResult(errorHandler.handleError(e, event, null), e);
                if (processingResult.requiresRescheduleEvent()) {
                    eventQueue.addFirst(event);
                    retryAfter = System.currentTimeMillis() + processingResult.waitTime();
                }
                // the batch failed.
                if (uow != null && uow.isStarted()) {
                    uow.rollback();
                }

                if (!processingResult.requiresRescheduleEvent()) {
                    // report successful messages to far...
                    notifyProcessingHandlers();
View Full Code Here

TOP

Related Classes of org.axonframework.unitofwork.UnitOfWork

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.