From 4c0f540416b63743a2265bca4b91bf0c08d5b6aa Mon Sep 17 00:00:00 2001 From: zeldal Date: Fri, 18 Aug 2017 18:58:07 +0300 Subject: [PATCH] eventapis-10 Ability to register custom rollback functions. --- .../eventapis/{view => api}/RollbackSpec.java | 7 +--- .../cassandra/ConcurrentEventException.java | 2 -- .../cassandra/DefaultConcurrencyResolver.java | 2 -- .../kloia/eventapis/common/EventRecorder.java | 4 --- .../eventapis/common/PublishedEvent.java | 2 +- .../eventapis/view/AggregateListener.java | 35 ++++++++++++++++-- .../kloia/eventapis/view/EntityFunction.java | 1 - kafka-tester/src/main/java/Eventapis.java | 2 -- .../sample/commands/CreateOrderCommand.java | 4 +-- .../sample/commands/ProcessOrderCommand.java | 8 ++--- .../sample/configuration/Components.java | 5 ++- .../event/PaymentSuccessEventHandler.java | 6 ++-- .../event/StockReservedEventHandler.java | 6 ++-- .../dto/command/OrderPaidCommandDto.java | 1 - .../sample/dto/event/ReserveStockEvent.java | 2 +- .../java/com/kloia/sample/model/Order.java | 1 - .../sample/configuration/Components.java | 5 ++- .../controller/PaymentEventController.java | 6 ---- .../controller/PaymentRestController.java | 2 -- .../event/DoPaymentEventHandler.java | 6 ++-- .../sample/dto/event/PaymentSuccessEvent.java | 2 +- samples/pom.xml | 4 +-- .../commands/CreateStockCommandHandler.java | 4 +-- .../sample/configuration/Components.java | 5 ++- .../controller/StockRestController.java | 1 - .../configuration/EventMessageConverter.java | 2 +- .../spring/filter/OpContextFilter.java | 2 +- .../api/store/filter/EntityRestTemplate.java | 36 +++++++++---------- .../filter/RequestResponseDumpFilter.java | 10 ++++-- .../api/store/rest/EventController.java | 15 +++++--- store/src/main/resources/ignite.xml | 8 ++--- 31 files changed, 102 insertions(+), 94 deletions(-) rename java-api/src/main/java/com/kloia/eventapis/{view => api}/RollbackSpec.java (52%) diff --git a/java-api/src/main/java/com/kloia/eventapis/view/RollbackSpec.java b/java-api/src/main/java/com/kloia/eventapis/api/RollbackSpec.java similarity index 52% rename from java-api/src/main/java/com/kloia/eventapis/view/RollbackSpec.java rename to java-api/src/main/java/com/kloia/eventapis/api/RollbackSpec.java index 0b6fdd3..14821f6 100644 --- a/java-api/src/main/java/com/kloia/eventapis/view/RollbackSpec.java +++ b/java-api/src/main/java/com/kloia/eventapis/api/RollbackSpec.java @@ -1,11 +1,6 @@ -package com.kloia.eventapis.view; +package com.kloia.eventapis.api; -import com.google.common.reflect.TypeToken; import com.kloia.eventapis.common.PublishedEvent; -import lombok.Getter; -import lombok.NonNull; - -import java.lang.reflect.ParameterizedType; /** * Created by zeldalozdemir on 21/02/2017. diff --git a/java-api/src/main/java/com/kloia/eventapis/cassandra/ConcurrentEventException.java b/java-api/src/main/java/com/kloia/eventapis/cassandra/ConcurrentEventException.java index 2dbe6b9..760ae5a 100644 --- a/java-api/src/main/java/com/kloia/eventapis/cassandra/ConcurrentEventException.java +++ b/java-api/src/main/java/com/kloia/eventapis/cassandra/ConcurrentEventException.java @@ -1,7 +1,5 @@ package com.kloia.eventapis.cassandra; -import com.kloia.eventapis.exception.EventStoreException; - public class ConcurrentEventException extends Exception { private Exception exception; diff --git a/java-api/src/main/java/com/kloia/eventapis/cassandra/DefaultConcurrencyResolver.java b/java-api/src/main/java/com/kloia/eventapis/cassandra/DefaultConcurrencyResolver.java index 220843b..cb90373 100644 --- a/java-api/src/main/java/com/kloia/eventapis/cassandra/DefaultConcurrencyResolver.java +++ b/java-api/src/main/java/com/kloia/eventapis/cassandra/DefaultConcurrencyResolver.java @@ -3,8 +3,6 @@ import com.kloia.eventapis.common.EventKey; import com.kloia.eventapis.exception.EventStoreException; -import java.util.UUID; - public class DefaultConcurrencyResolver implements ConcurrencyResolver { @Override public void tryMore() throws ConcurrentEventException { diff --git a/java-api/src/main/java/com/kloia/eventapis/common/EventRecorder.java b/java-api/src/main/java/com/kloia/eventapis/common/EventRecorder.java index 8d758a6..b908904 100644 --- a/java-api/src/main/java/com/kloia/eventapis/common/EventRecorder.java +++ b/java-api/src/main/java/com/kloia/eventapis/common/EventRecorder.java @@ -1,12 +1,8 @@ package com.kloia.eventapis.common; -import com.datastax.driver.core.querybuilder.Clause; import com.kloia.eventapis.cassandra.ConcurrencyResolver; -import com.kloia.eventapis.cassandra.ConcurrentEventException; import com.kloia.eventapis.cassandra.EntityEvent; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.view.Entity; -import com.kloia.eventapis.view.EntityFunctionSpec; import java.util.List; import java.util.Optional; diff --git a/java-api/src/main/java/com/kloia/eventapis/common/PublishedEvent.java b/java-api/src/main/java/com/kloia/eventapis/common/PublishedEvent.java index e869b1a..e1e357b 100644 --- a/java-api/src/main/java/com/kloia/eventapis/common/PublishedEvent.java +++ b/java-api/src/main/java/com/kloia/eventapis/common/PublishedEvent.java @@ -1,8 +1,8 @@ package com.kloia.eventapis.common; -import com.kloia.eventapis.api.Views; import com.fasterxml.jackson.annotation.JsonView; +import com.kloia.eventapis.api.Views; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/java-api/src/main/java/com/kloia/eventapis/view/AggregateListener.java b/java-api/src/main/java/com/kloia/eventapis/view/AggregateListener.java index 16ef4e2..a871acd 100644 --- a/java-api/src/main/java/com/kloia/eventapis/view/AggregateListener.java +++ b/java-api/src/main/java/com/kloia/eventapis/view/AggregateListener.java @@ -1,32 +1,63 @@ package com.kloia.eventapis.view; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.reflect.TypeToken; import com.kloia.eventapis.api.EventRepository; +import com.kloia.eventapis.api.RollbackSpec; import com.kloia.eventapis.api.ViewQuery; +import com.kloia.eventapis.cassandra.EntityEvent; +import com.kloia.eventapis.common.PublishedEvent; import com.kloia.eventapis.exception.EventStoreException; import com.kloia.eventapis.pojos.Operation; import com.kloia.eventapis.pojos.TransactionState; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; +import java.lang.reflect.ParameterizedType; +import java.util.AbstractMap; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j public class AggregateListener { ViewQuery viewQuery; EventRepository eventRepository; SnapshotRepository snapshotRepository; + private ObjectMapper objectMapper; + private final Map,RollbackSpec>> rollbackSpecMap; - public AggregateListener(ViewQuery viewQuery, EventRepository eventRepository, SnapshotRepository snapshotRepository, List rollbackSpecs) { + public AggregateListener(ViewQuery viewQuery, EventRepository eventRepository, SnapshotRepository snapshotRepository, List rollbackSpecs, ObjectMapper objectMapper) { this.viewQuery = viewQuery; this.eventRepository = eventRepository; this.snapshotRepository = snapshotRepository; + this.objectMapper = objectMapper; + rollbackSpecMap = new HashMap<>(); + rollbackSpecs.forEach(rollbackSpec -> { + ParameterizedType type = (ParameterizedType) TypeToken.of(rollbackSpec.getClass()).getSupertype(RollbackSpec.class).getType(); + try { + Class publishedEventClass = (Class) Class.forName(type.getActualTypeArguments()[0].getTypeName()); + rollbackSpecMap.put(publishedEventClass.getSimpleName(), new AbstractMap.SimpleEntry<>(publishedEventClass, rollbackSpec)); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + }); } public void listenOperations(ConsumerRecord data) { try { log.info("Incoming Message: " + data.key()+ " "+ data.value()); if (data.value().getTransactionState() == TransactionState.TXN_FAILED) { - eventRepository.markFail(data.key()); + List entityEvents = eventRepository.markFail(data.key()); + entityEvents.forEach(entityEvent -> { + try { + Map.Entry, RollbackSpec> specEntry = rollbackSpecMap.get(entityEvent.getEventType()); + if(specEntry != null) + specEntry.getValue().rollback(new EntityEventWrapper<>(specEntry.getKey(),objectMapper,entityEvent).getEventData()); + } catch (EventStoreException e) { + log.warn(e.getMessage(),e); + } + }); snapshotRepository.save(viewQuery.queryByOpId(data.key())); }else if (data.value().getTransactionState() == TransactionState.TXN_SUCCEDEED) { snapshotRepository.save(viewQuery.queryByOpId(data.key())); diff --git a/java-api/src/main/java/com/kloia/eventapis/view/EntityFunction.java b/java-api/src/main/java/com/kloia/eventapis/view/EntityFunction.java index 0ebeb65..9506dad 100644 --- a/java-api/src/main/java/com/kloia/eventapis/view/EntityFunction.java +++ b/java-api/src/main/java/com/kloia/eventapis/view/EntityFunction.java @@ -1,7 +1,6 @@ package com.kloia.eventapis.view; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.view.EntityEventWrapper; /** * Created by zeldalozdemir on 21/02/2017. diff --git a/kafka-tester/src/main/java/Eventapis.java b/kafka-tester/src/main/java/Eventapis.java index 77284d5..3e57719 100644 --- a/kafka-tester/src/main/java/Eventapis.java +++ b/kafka-tester/src/main/java/Eventapis.java @@ -1,12 +1,10 @@ import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.admin.AdminClient; -import org.apache.kafka.clients.admin.AdminClientConfig; import org.apache.kafka.clients.admin.TopicListing; import org.apache.kafka.clients.producer.ProducerConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.core.ResolvableType; import java.util.Collection; import java.util.HashMap; diff --git a/samples/order-service/src/main/java/com/kloia/sample/commands/CreateOrderCommand.java b/samples/order-service/src/main/java/com/kloia/sample/commands/CreateOrderCommand.java index 7c4cb2c..b9f82b1 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/commands/CreateOrderCommand.java +++ b/samples/order-service/src/main/java/com/kloia/sample/commands/CreateOrderCommand.java @@ -1,9 +1,9 @@ package com.kloia.sample.commands; import com.kloia.eventapis.api.CommandHandler; -import com.kloia.eventapis.view.EntityFunctionSpec; -import com.kloia.eventapis.common.EventKey; import com.kloia.eventapis.api.EventRepository; +import com.kloia.eventapis.common.EventKey; +import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.sample.dto.command.CreateOrderCommandDto; import com.kloia.sample.dto.event.OrderCreatedEvent; import com.kloia.sample.model.Order; diff --git a/samples/order-service/src/main/java/com/kloia/sample/commands/ProcessOrderCommand.java b/samples/order-service/src/main/java/com/kloia/sample/commands/ProcessOrderCommand.java index 185cf95..46e303b 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/commands/ProcessOrderCommand.java +++ b/samples/order-service/src/main/java/com/kloia/sample/commands/ProcessOrderCommand.java @@ -1,12 +1,12 @@ package com.kloia.sample.commands; -import com.kloia.eventapis.common.EventKey; import com.kloia.eventapis.api.CommandHandler; -import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.eventapis.api.EventRepository; -import com.kloia.eventapis.exception.EventStoreException; +import com.kloia.eventapis.api.RollbackSpec; import com.kloia.eventapis.api.ViewQuery; -import com.kloia.eventapis.view.RollbackSpec; +import com.kloia.eventapis.common.EventKey; +import com.kloia.eventapis.exception.EventStoreException; +import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.sample.dto.command.ProcessOrderCommandDto; import com.kloia.sample.dto.event.ReserveStockEvent; import com.kloia.sample.model.Order; diff --git a/samples/order-service/src/main/java/com/kloia/sample/configuration/Components.java b/samples/order-service/src/main/java/com/kloia/sample/configuration/Components.java index 9c9a1c0..ae2495e 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/configuration/Components.java +++ b/samples/order-service/src/main/java/com/kloia/sample/configuration/Components.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.api.IUserContext; +import com.kloia.eventapis.api.RollbackSpec; import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.cassandra.CassandraEventRecorder; import com.kloia.eventapis.cassandra.CassandraSession; @@ -14,7 +15,6 @@ import com.kloia.eventapis.spring.configuration.EventApisConfiguration; import com.kloia.eventapis.view.AggregateListener; import com.kloia.eventapis.view.EntityFunctionSpec; -import com.kloia.eventapis.view.RollbackSpec; import com.kloia.sample.model.Order; import com.kloia.sample.repository.OrderRepository; import lombok.extern.slf4j.Slf4j; @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.OptionalInt; @Configuration @Slf4j @@ -43,7 +42,7 @@ public class Components { @Bean AggregateListener snapshotRecorder(ViewQuery orderViewRepository, EventRepository orderEventRepository, OrderRepository orderRepository, Optional> rollbackSpecs) { - return new AggregateListener(orderViewRepository, orderEventRepository, orderRepository, rollbackSpecs.orElseGet(ArrayList::new)); + return new AggregateListener(orderViewRepository, orderEventRepository, orderRepository, rollbackSpecs.orElseGet(ArrayList::new), objectMapper); } @Bean diff --git a/samples/order-service/src/main/java/com/kloia/sample/controller/event/PaymentSuccessEventHandler.java b/samples/order-service/src/main/java/com/kloia/sample/controller/event/PaymentSuccessEventHandler.java index b43a874..162bc45 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/controller/event/PaymentSuccessEventHandler.java +++ b/samples/order-service/src/main/java/com/kloia/sample/controller/event/PaymentSuccessEventHandler.java @@ -1,13 +1,13 @@ package com.kloia.sample.controller.event; import com.kloia.eventapis.api.EventHandler; +import com.kloia.eventapis.api.EventRepository; +import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.cassandra.ConcurrentEventException; import com.kloia.eventapis.common.EventKey; -import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.eventapis.exception.EventPulisherException; -import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.api.ViewQuery; +import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.sample.dto.event.OrderPaidEvent; import com.kloia.sample.dto.event.PaymentSuccessEvent; import com.kloia.sample.model.Order; diff --git a/samples/order-service/src/main/java/com/kloia/sample/controller/event/StockReservedEventHandler.java b/samples/order-service/src/main/java/com/kloia/sample/controller/event/StockReservedEventHandler.java index f28fa1c..2f6675c 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/controller/event/StockReservedEventHandler.java +++ b/samples/order-service/src/main/java/com/kloia/sample/controller/event/StockReservedEventHandler.java @@ -1,13 +1,13 @@ package com.kloia.sample.controller.event; import com.kloia.eventapis.api.EventHandler; +import com.kloia.eventapis.api.EventRepository; +import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.cassandra.ConcurrentEventException; import com.kloia.eventapis.common.EventKey; -import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.eventapis.exception.EventPulisherException; -import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.api.ViewQuery; +import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.sample.dto.event.PaymentProcessEvent; import com.kloia.sample.dto.event.StockReservedEvent; import com.kloia.sample.model.Order; diff --git a/samples/order-service/src/main/java/com/kloia/sample/dto/command/OrderPaidCommandDto.java b/samples/order-service/src/main/java/com/kloia/sample/dto/command/OrderPaidCommandDto.java index ff63cc7..698beb5 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/dto/command/OrderPaidCommandDto.java +++ b/samples/order-service/src/main/java/com/kloia/sample/dto/command/OrderPaidCommandDto.java @@ -1,6 +1,5 @@ package com.kloia.sample.dto.command; -import com.kloia.sample.model.PaymentInformation; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/samples/order-service/src/main/java/com/kloia/sample/dto/event/ReserveStockEvent.java b/samples/order-service/src/main/java/com/kloia/sample/dto/event/ReserveStockEvent.java index d5bd12f..921f97c 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/dto/event/ReserveStockEvent.java +++ b/samples/order-service/src/main/java/com/kloia/sample/dto/event/ReserveStockEvent.java @@ -1,9 +1,9 @@ package com.kloia.sample.dto.event; import com.fasterxml.jackson.annotation.JsonView; +import com.kloia.eventapis.api.Views; import com.kloia.eventapis.common.EventType; import com.kloia.eventapis.common.PublishedEvent; -import com.kloia.eventapis.api.Views; import com.kloia.sample.model.PaymentInformation; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/samples/order-service/src/main/java/com/kloia/sample/model/Order.java b/samples/order-service/src/main/java/com/kloia/sample/model/Order.java index 9bd0f32..686c8f9 100644 --- a/samples/order-service/src/main/java/com/kloia/sample/model/Order.java +++ b/samples/order-service/src/main/java/com/kloia/sample/model/Order.java @@ -2,7 +2,6 @@ import com.kloia.eventapis.view.Entity; import lombok.AllArgsConstructor; -import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; diff --git a/samples/payment-service/src/main/java/com/kloia/sample/configuration/Components.java b/samples/payment-service/src/main/java/com/kloia/sample/configuration/Components.java index ffa0984..373f2dd 100644 --- a/samples/payment-service/src/main/java/com/kloia/sample/configuration/Components.java +++ b/samples/payment-service/src/main/java/com/kloia/sample/configuration/Components.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.api.IUserContext; +import com.kloia.eventapis.api.RollbackSpec; import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.cassandra.CassandraEventRecorder; import com.kloia.eventapis.cassandra.CassandraSession; @@ -14,10 +15,8 @@ import com.kloia.eventapis.spring.configuration.EventApisConfiguration; import com.kloia.eventapis.view.AggregateListener; import com.kloia.eventapis.view.EntityFunctionSpec; -import com.kloia.eventapis.view.RollbackSpec; import com.kloia.sample.model.Payment; import com.kloia.sample.repository.PaymentRepository; -import com.sun.javafx.scene.control.skin.VirtualFlow; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -43,7 +42,7 @@ public class Components { @Bean AggregateListener snapshotRecorder(ViewQuery paymentViewRepository, EventRepository paymentEventRepository, PaymentRepository paymentRepository, Optional> rollbackSpecs) { - return new AggregateListener(paymentViewRepository, paymentEventRepository, paymentRepository, rollbackSpecs.orElseGet(ArrayList::new)); + return new AggregateListener(paymentViewRepository, paymentEventRepository, paymentRepository, rollbackSpecs.orElseGet(ArrayList::new),objectMapper); } @Bean diff --git a/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentEventController.java b/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentEventController.java index cafef69..762aa07 100644 --- a/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentEventController.java +++ b/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentEventController.java @@ -1,12 +1,6 @@ package com.kloia.sample.controller; -import com.kloia.eventapis.exception.EventPulisherException; -import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.sample.controller.event.DoPaymentEventHandler; -import com.kloia.sample.dto.event.PaymentProcessEvent; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Controller; diff --git a/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentRestController.java b/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentRestController.java index 3d7e93c..0f53574 100644 --- a/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentRestController.java +++ b/samples/payment-service/src/main/java/com/kloia/sample/controller/PaymentRestController.java @@ -2,8 +2,6 @@ import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.common.EventRecorder; -import com.kloia.sample.controller.event.DoPaymentEventHandler; import com.kloia.sample.model.Payment; import com.kloia.sample.repository.PaymentRepository; import lombok.extern.slf4j.Slf4j; diff --git a/samples/payment-service/src/main/java/com/kloia/sample/controller/event/DoPaymentEventHandler.java b/samples/payment-service/src/main/java/com/kloia/sample/controller/event/DoPaymentEventHandler.java index a5ebd1a..e7542ac 100644 --- a/samples/payment-service/src/main/java/com/kloia/sample/controller/event/DoPaymentEventHandler.java +++ b/samples/payment-service/src/main/java/com/kloia/sample/controller/event/DoPaymentEventHandler.java @@ -1,13 +1,13 @@ package com.kloia.sample.controller.event; import com.kloia.eventapis.api.EventHandler; +import com.kloia.eventapis.api.EventRepository; +import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.cassandra.ConcurrentEventException; -import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.eventapis.common.EventKey; import com.kloia.eventapis.exception.EventPulisherException; -import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.api.ViewQuery; +import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.sample.dto.event.PaymentProcessEvent; import com.kloia.sample.dto.event.PaymentSuccessEvent; import com.kloia.sample.model.Payment; diff --git a/samples/payment-service/src/main/java/com/kloia/sample/dto/event/PaymentSuccessEvent.java b/samples/payment-service/src/main/java/com/kloia/sample/dto/event/PaymentSuccessEvent.java index dd53745..d88a2be 100644 --- a/samples/payment-service/src/main/java/com/kloia/sample/dto/event/PaymentSuccessEvent.java +++ b/samples/payment-service/src/main/java/com/kloia/sample/dto/event/PaymentSuccessEvent.java @@ -1,9 +1,9 @@ package com.kloia.sample.dto.event; import com.fasterxml.jackson.annotation.JsonView; +import com.kloia.eventapis.api.Views; import com.kloia.eventapis.common.EventType; import com.kloia.eventapis.common.PublishedEvent; -import com.kloia.eventapis.api.Views; import lombok.Data; @Data diff --git a/samples/pom.xml b/samples/pom.xml index 5cd4e6c..b0f1dee 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -156,11 +156,11 @@ querydsl-jpa ${querydsl.version} - + diff --git a/samples/stock-service/src/main/java/com/kloia/sample/commands/CreateStockCommandHandler.java b/samples/stock-service/src/main/java/com/kloia/sample/commands/CreateStockCommandHandler.java index 04c2f38..6b52c8c 100644 --- a/samples/stock-service/src/main/java/com/kloia/sample/commands/CreateStockCommandHandler.java +++ b/samples/stock-service/src/main/java/com/kloia/sample/commands/CreateStockCommandHandler.java @@ -1,10 +1,10 @@ package com.kloia.sample.commands; import com.kloia.eventapis.api.CommandHandler; -import com.kloia.eventapis.view.EntityFunctionSpec; -import com.kloia.eventapis.common.EventKey; import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.api.ViewQuery; +import com.kloia.eventapis.common.EventKey; +import com.kloia.eventapis.view.EntityFunctionSpec; import com.kloia.sample.dto.command.CreateStockCommandDto; import com.kloia.sample.dto.event.StockCreatedEvent; import com.kloia.sample.model.Stock; diff --git a/samples/stock-service/src/main/java/com/kloia/sample/configuration/Components.java b/samples/stock-service/src/main/java/com/kloia/sample/configuration/Components.java index c417b7f..dea6963 100644 --- a/samples/stock-service/src/main/java/com/kloia/sample/configuration/Components.java +++ b/samples/stock-service/src/main/java/com/kloia/sample/configuration/Components.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.kloia.eventapis.api.EventRepository; import com.kloia.eventapis.api.IUserContext; +import com.kloia.eventapis.api.RollbackSpec; import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.cassandra.CassandraEventRecorder; import com.kloia.eventapis.cassandra.CassandraSession; @@ -14,7 +15,6 @@ import com.kloia.eventapis.spring.configuration.EventApisConfiguration; import com.kloia.eventapis.view.AggregateListener; import com.kloia.eventapis.view.EntityFunctionSpec; -import com.kloia.eventapis.view.RollbackSpec; import com.kloia.sample.model.Stock; import com.kloia.sample.repository.StockRepository; import lombok.extern.slf4j.Slf4j; @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.OptionalInt; @Configuration @Slf4j @@ -44,7 +43,7 @@ public class Components { @Bean AggregateListener snapshotRecorder(ViewQuery stockViewRepository, EventRepository stockEventRepository, StockRepository stockRepository, Optional> rollbackSpecs){ - return new AggregateListener(stockViewRepository,stockEventRepository, stockRepository, rollbackSpecs.orElseGet(ArrayList::new) ); + return new AggregateListener(stockViewRepository,stockEventRepository, stockRepository, rollbackSpecs.orElseGet(ArrayList::new), objectMapper ); } @Bean diff --git a/samples/stock-service/src/main/java/com/kloia/sample/controller/StockRestController.java b/samples/stock-service/src/main/java/com/kloia/sample/controller/StockRestController.java index 900e9ba..41950f0 100644 --- a/samples/stock-service/src/main/java/com/kloia/sample/controller/StockRestController.java +++ b/samples/stock-service/src/main/java/com/kloia/sample/controller/StockRestController.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.kloia.eventapis.api.ViewQuery; import com.kloia.eventapis.exception.EventStoreException; -import com.kloia.eventapis.common.EventRecorder; import com.kloia.sample.commands.CreateStockCommandHandler; import com.kloia.sample.model.Stock; import com.kloia.sample.repository.StockRepository; diff --git a/spring-integration/src/main/java/com/kloia/eventapis/spring/configuration/EventMessageConverter.java b/spring-integration/src/main/java/com/kloia/eventapis/spring/configuration/EventMessageConverter.java index 3515254..2137e9d 100644 --- a/spring-integration/src/main/java/com/kloia/eventapis/spring/configuration/EventMessageConverter.java +++ b/spring-integration/src/main/java/com/kloia/eventapis/spring/configuration/EventMessageConverter.java @@ -2,9 +2,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.TypeFactory; +import com.kloia.eventapis.api.IUserContext; import com.kloia.eventapis.common.OperationContext; import com.kloia.eventapis.kafka.PublishedEventWrapper; -import com.kloia.eventapis.api.IUserContext; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.common.errors.SerializationException; import org.springframework.kafka.support.converter.MessagingMessageConverter; diff --git a/spring-integration/src/main/java/com/kloia/eventapis/spring/filter/OpContextFilter.java b/spring-integration/src/main/java/com/kloia/eventapis/spring/filter/OpContextFilter.java index beeca9d..7bdc6a1 100644 --- a/spring-integration/src/main/java/com/kloia/eventapis/spring/filter/OpContextFilter.java +++ b/spring-integration/src/main/java/com/kloia/eventapis/spring/filter/OpContextFilter.java @@ -39,7 +39,7 @@ protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServl operationContext.switchContext(opIdStr); } else { String opId = operationContext.generateContext(); - httpServletResponse.setHeader("opId",opId.toString()); + httpServletResponse.setHeader("opId",opId); } diff --git a/store/src/main/java/com/kloia/eventapis/api/store/filter/EntityRestTemplate.java b/store/src/main/java/com/kloia/eventapis/api/store/filter/EntityRestTemplate.java index c91df12..e1b44f4 100644 --- a/store/src/main/java/com/kloia/eventapis/api/store/filter/EntityRestTemplate.java +++ b/store/src/main/java/com/kloia/eventapis/api/store/filter/EntityRestTemplate.java @@ -1,24 +1,24 @@ package com.kloia.eventapis.api.store.filter; - import com.kloia.eventapis.pojos.Event; - import com.kloia.eventapis.pojos.Operation; - import com.kloia.eventapis.pojos.TransactionState; - import lombok.Data; - import lombok.extern.slf4j.Slf4j; - import org.apache.ignite.Ignite; - import org.apache.ignite.IgniteCache; - import org.apache.ignite.cache.CachePeekMode; - import org.springframework.beans.factory.annotation.Autowired; - import org.springframework.http.HttpEntity; - import org.springframework.http.HttpHeaders; - import org.springframework.http.HttpMethod; - import org.springframework.http.ResponseEntity; - import org.springframework.web.client.RestTemplate; +import com.kloia.eventapis.pojos.Event; +import com.kloia.eventapis.pojos.Operation; +import com.kloia.eventapis.pojos.TransactionState; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.ignite.Ignite; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.cache.CachePeekMode; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; - import java.util.ArrayList; - import java.util.Map; - import java.util.Optional; - import java.util.UUID; +import java.util.ArrayList; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; /** * Created by mesutcan.gurle on 02/02/17. diff --git a/store/src/main/java/com/kloia/eventapis/api/store/filter/RequestResponseDumpFilter.java b/store/src/main/java/com/kloia/eventapis/api/store/filter/RequestResponseDumpFilter.java index d00a8aa..3abf2a0 100644 --- a/store/src/main/java/com/kloia/eventapis/api/store/filter/RequestResponseDumpFilter.java +++ b/store/src/main/java/com/kloia/eventapis/api/store/filter/RequestResponseDumpFilter.java @@ -7,12 +7,18 @@ import org.springframework.stereotype.Component; import org.springframework.web.filter.AbstractRequestLoggingFilter; -import javax.servlet.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; -import java.io.*; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.PrintWriter; import java.util.Collection; import java.util.Locale; diff --git a/store/src/main/java/com/kloia/eventapis/api/store/rest/EventController.java b/store/src/main/java/com/kloia/eventapis/api/store/rest/EventController.java index c05b97b..323bfa1 100644 --- a/store/src/main/java/com/kloia/eventapis/api/store/rest/EventController.java +++ b/store/src/main/java/com/kloia/eventapis/api/store/rest/EventController.java @@ -1,6 +1,11 @@ package com.kloia.eventapis.api.store.rest; -import com.kloia.eventapis.pojos.*; +import com.kloia.eventapis.pojos.Event; +import com.kloia.eventapis.pojos.EventState; +import com.kloia.eventapis.pojos.IEventType; +import com.kloia.eventapis.pojos.IOperationEvents; +import com.kloia.eventapis.pojos.Operation; +import com.kloia.eventapis.pojos.TransactionState; import lombok.extern.slf4j.Slf4j; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; @@ -15,15 +20,15 @@ import org.springframework.http.ResponseEntity; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.core.KafkaTemplate; -import org.springframework.messaging.support.GenericMessage; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.PostConstruct; -import java.util.*; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; /** * Created by zeldalozdemir on 22/01/2017. diff --git a/store/src/main/resources/ignite.xml b/store/src/main/resources/ignite.xml index ad3f8eb..9f0c613 100644 --- a/store/src/main/resources/ignite.xml +++ b/store/src/main/resources/ignite.xml @@ -20,12 +20,8 @@ --> + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd">