Package org.axonframework.domain

Examples of org.axonframework.domain.DomainEventMessage


    public DomainEventStream readEvents(String type, Object identifier) {
        long snapshotSequenceNumber = -1;
        EntityManager entityManager = entityManagerProvider.getEntityManager();
        SerializedDomainEventData lastSnapshotEvent = eventEntryStore.loadLastSnapshotEvent(type, identifier,
                                                                                            entityManager);
        DomainEventMessage snapshotEvent = null;
        if (lastSnapshotEvent != null) {
            try {
                snapshotEvent = new GenericDomainEventMessage<Object>(
                        identifier,
                        lastSnapshotEvent.getSequenceNumber(),
                        serializer.deserialize(lastSnapshotEvent.getPayload()),
                        (Map<String, Object>) serializer.deserialize(lastSnapshotEvent.getMetaData()));
                snapshotSequenceNumber = snapshotEvent.getSequenceNumber();
            } catch (RuntimeException ex) {
                logger.warn("Error while reading snapshot event entry. "
                                    + "Reconstructing aggregate on entire event stream. Caused by: {} {}",
                            ex.getClass().getName(),
                            ex.getMessage());
View Full Code Here


            return;
        }

        OutputStream out = null;
        try {
            DomainEventMessage next = eventsToStore.next();
            if (next.getSequenceNumber() == 0
                    && eventFileResolver.eventFileExists(type, next.getAggregateIdentifier())) {
                throw new ConflictingModificationException("Could not create event stream for aggregate, such stream "
                                                                   + "already exists, type=" + type + ", id="
                                                                   + next.getAggregateIdentifier());
            }
            out = eventFileResolver.openEventFileForWriting(type, next.getAggregateIdentifier());
            FileSystemEventMessageWriter eventMessageWriter =
                    new FileSystemEventMessageWriter(new DataOutputStream(out), eventSerializer);
            do {
                eventMessageWriter.writeEventMessage(next);
                if (eventsToStore.hasNext()) {
View Full Code Here

            if (!eventFileResolver.eventFileExists(type, aggregateIdentifier)) {
                throw new EventStreamNotFoundException(type, aggregateIdentifier);
            }

            InputStream eventFileInputStream = eventFileResolver.openEventFileForReading(type, aggregateIdentifier);
            DomainEventMessage snapshotEvent;
            try {
                snapshotEvent = readSnapshotEvent(type, aggregateIdentifier, eventFileInputStream);
                // trigger deserialization
                snapshotEvent.getPayload();
            } catch (Exception e) {
                // error while reading snapshot. We ignore it
                snapshotEvent = null;
                // we need to reset the stream, as it points to the event after the snapshot
                IOUtils.closeQuietly(eventFileInputStream);
View Full Code Here

        }
    }

    private DomainEventMessage readSnapshotEvent(String type, Object identifier, InputStream eventFileInputStream)
            throws IOException {
        DomainEventMessage snapshotEvent = null;
        if (eventFileResolver.snapshotFileExists(type, identifier)) {
            InputStream snapshotEventFile = eventFileResolver.openSnapshotFileForReading(type, identifier);
            FileSystemSnapshotEventReader fileSystemSnapshotEventReader =
                    new FileSystemSnapshotEventReader(eventFileInputStream, snapshotEventFile, eventSerializer);
            snapshotEvent = fileSystemSnapshotEventReader.readSnapshotEvent(type, identifier);
View Full Code Here

        return !next.isEmpty();
    }

    @Override
    public DomainEventMessage next() {
        final DomainEventMessage nextMessage = next.poll();
        if (next.isEmpty()) {
            next.addAll(doReadNext());
        }
        return nextMessage;
    }
View Full Code Here

    }

    @Override
    public void appendEvents(String type, DomainEventStream events) {
        while (events.hasNext()) {
            DomainEventMessage event = events.next();
            doStoreEvent(type, event);
        }
    }
View Full Code Here

    public void createSnapshot(String typeIdentifier, String aggregateIdentifier) {
        DomainEventStream eventStream = null;
        try {
            eventStream = eventStore.readEvents(typeIdentifier, aggregateIdentifier);
            DomainEventMessage snapshotEvent = createSnapshot(typeIdentifier, eventStream);
            if (snapshotEvent != null) {
                eventStore.appendSnapshotEvent(typeIdentifier, snapshotEvent);
            }
        } finally {
            IOUtils.closeQuietlyIfCloseable(eventStream);
View Full Code Here

    }

    private DomainEventMessage createSnapshot(String typeIdentifier, DomainEventStream eventStream) {
        AggregateFactory<?> aggregateFactory = aggregateFactories.get(typeIdentifier);

        DomainEventMessage firstEvent = eventStream.peek();
        Object aggregateIdentifier = firstEvent.getAggregateIdentifier();

        EventSourcedAggregateRoot aggregate = aggregateFactory.createAggregate(aggregateIdentifier, firstEvent);
        aggregate.initializeState(eventStream);

        return new GenericDomainEventMessage<EventSourcedAggregateRoot>(
View Full Code Here

        private CommitEntry(String aggregateType, Serializer eventSerializer, List<DomainEventMessage> events) {
            this.aggregateType = aggregateType;
            this.aggregateIdentifier = events.get(0).getAggregateIdentifier().toString();
            this.firstSequenceNumber = events.get(0).getSequenceNumber();
            this.firstTimestamp = events.get(0).getTimestamp().toString();
            final DomainEventMessage lastEvent = events.get(events.size() - 1);
            this.lastTimestamp = lastEvent.getTimestamp().toString();
            this.lastSequenceNumber = lastEvent.getSequenceNumber();
            eventEntries = new EventEntry[events.size()];
            for (int i = 0, eventsLength = events.size(); i < eventsLength; i++) {
                DomainEventMessage event = events.get(i);
                eventEntries[i] = new EventEntry(eventSerializer, event);
            }
        }
View Full Code Here

        testSubject.appendEvents("test", aggregate2.getUncommittedEvents());
        DomainEventStream events = testSubject.readEvents("test", aggregate1.getIdentifier());
        List<DomainEventMessage> actualEvents = new ArrayList<DomainEventMessage>();
        long expectedSequenceNumber = 0L;
        while (events.hasNext()) {
            DomainEventMessage event = events.next();
            actualEvents.add(event);
            // Tests AXON-169
            assertNotNull(event.getIdentifier());
            assertEquals("Events are read back in the wrong order",
                         expectedSequenceNumber,
                         event.getSequenceNumber());
            expectedSequenceNumber++;
        }
        assertEquals(aggregate1.getUncommittedEventCount(), actualEvents.size());
    }
View Full Code Here

TOP

Related Classes of org.axonframework.domain.DomainEventMessage

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.