Skip to content

Commit 476b271

Browse files
committed
done the integration
1 parent 8e61a42 commit 476b271

10 files changed

Lines changed: 66 additions & 31 deletions

File tree

mail-service/src/main/java/com/apssouza/eventsourcing/aggregates/AbstractAggregate.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
*/
1616
public abstract class AbstractAggregate implements Aggregate {
1717

18-
private String uuid;
18+
protected String uuid;
19+
1920
protected List<AppEvent> changes = new CopyOnWriteArrayList();
2021

2122
protected CopyOnWriteArrayList<AppEvent> appendChange(AppEvent event) {

mail-service/src/main/java/com/apssouza/eventsourcing/aggregates/EmailAggregate.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
*/
2323
public class EmailAggregate extends AbstractAggregate implements Aggregate {
2424

25-
private final String uuid;
2625
private final Email state;
2726

2827
public EmailAggregate(String uuid, List<AppEvent> changes) {

mail-service/src/main/java/com/apssouza/eventsourcing/eventstore/EventStoreRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ public interface EventStoreRepository extends JpaRepository<EventStream, Long> {
1212
Optional<EventStream> findByAggregateUUID(String uuid);
1313

1414
default EventStream saveEvents(String aggregateId, List<EventDescriptor> events) {
15-
final EventStream eventStream =
16-
findByAggregateUUID(aggregateId)
15+
final EventStream eventStream = findByAggregateUUID(aggregateId)
1716
.orElseGet(() -> new EventStream(aggregateId));
1817
eventStream.addEvents(events);
1918
return save(eventStream);

mail-service/src/main/java/com/apssouza/eventsourcing/queries/EmailQueryObject.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.apssouza.eventsourcing.events.EmailDeletedEvent;
66
import com.apssouza.mailservice.repository.EmailRepository;
77
import java.util.List;
8+
import java.util.Random;
89
import org.springframework.context.event.EventListener;
910
import org.springframework.stereotype.Component;
1011

@@ -29,6 +30,7 @@ public List<Email> all() {
2930

3031
@EventListener
3132
public void updateEmail(EmailCreatedEvent event) {
33+
System.out.println("event= "+ event.getEmail());
3234
emailRepository.save(event.getEmail());
3335
}
3436

mail-service/src/main/java/com/apssouza/mailservice/MailserviceApplication.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.context.annotation.ComponentScan;
56

67
@SpringBootApplication
8+
@ComponentScan(basePackages = {
9+
"com.apssouza.infra",
10+
"com.apssouza.eventsourcing",
11+
"com.apssouza.mailservice"
12+
})
713
public class MailserviceApplication {
814

915
public static void main(String[] args) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.apssouza.mailservice.controllers;
2+
3+
import com.apssouza.eventsourcing.entities.Email;
4+
import com.apssouza.mailservice.repository.EmailRepository;
5+
import java.util.List;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
/**
12+
*
13+
* @author apssouza
14+
*/
15+
@RestController
16+
@RequestMapping("/emails")
17+
public class EmailController {
18+
19+
@Autowired
20+
EmailRepository repository;
21+
22+
@GetMapping
23+
public List<Email> list() {
24+
return repository.findAll();
25+
}
26+
27+
}

mail-service/src/main/java/com/apssouza/mailservice/controllers/NotifyController.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77
import java.util.UUID;
88
import java.util.concurrent.CompletableFuture;
99
import java.util.concurrent.Executors;
10-
import java.util.logging.Level;
11-
import java.util.logging.Logger;
10+
import java.util.concurrent.Future;
11+
import java.util.function.Supplier;
1212
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.util.ReflectionUtils;
14+
import org.springframework.web.bind.annotation.GetMapping;
1315
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.ResponseBody;
1417
import org.springframework.web.bind.annotation.RestController;
1518

1619
/**
@@ -24,25 +27,26 @@ public class NotifyController {
2427
@Autowired
2528
EmailCommandHandler emailCommandHandler;
2629

27-
@RequestMapping("email")
28-
public CompletableFuture<String> sendEmail() {
29-
CompletableFuture<String> result = CompletableFuture.completedFuture("Email sent successfully");
30-
try {
30+
@GetMapping("email")
31+
public @ResponseBody Future<String> sendEmail() {
32+
Supplier supplier = () -> {
3133
String uuid = UUID.randomUUID().toString();
3234
EmailCreateCommand command = new EmailCreateCommand(
3335
uuid,
3436
new Email("Alexsandro", "[email protected]", EmailState.CREATED)
3537
);
3638
Executors.newCachedThreadPool().submit(() -> {
37-
emailCommandHandler.create(command);
38-
return null;
39+
try {
40+
emailCommandHandler.create(command);
41+
} catch (Exception ex) {
42+
ReflectionUtils.rethrowRuntimeException(ex);
43+
}
3944
});
40-
} catch (Exception ex) {
41-
Logger.getLogger(NotifyController.class.getName())
42-
.log(Level.SEVERE, null, ex);
43-
}
45+
return "Email sent successfully. - code= " + uuid;
46+
};
47+
48+
return CompletableFuture.supplyAsync(supplier, Executors.newCachedThreadPool());
4449

45-
return result;
4650
}
4751

4852
}

mail-service/src/main/java/com/apssouza/mailservice/integration/reminder/EventInput.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.apssouza.mailservice.integration.reminder;
22

33
import com.apssouza.eventsourcing.aggregates.EmailState;
4+
import com.apssouza.eventsourcing.commands.EmailCommandHandler;
45
import com.apssouza.eventsourcing.commands.EmailCreateCommand;
56
import com.apssouza.eventsourcing.entities.Email;
67
import java.util.UUID;
@@ -20,19 +21,27 @@
2021
public class EventInput {
2122

2223
Logger LOG = Logger.getLogger(EventInput.class);
24+
25+
private final EmailCommandHandler commanderHandler;
26+
27+
public EventInput(EmailCommandHandler commander) {
28+
this.commanderHandler = commander;
29+
}
30+
2331

2432
@StreamListener(
2533
target = Sink.INPUT,
2634
condition = "headers['type']=='TodoCreatedEvent'"
2735
)
28-
public void todoCreated(@Payload TodoCreatedEvent event) {
36+
public void todoCreated(@Payload TodoCreatedEvent event) throws Exception {
2937
LOG.info("Todo created");
3038
LOG.info("when = " + event.when());
3139
LOG.info("todo = " + event.getTodo().toString());
3240

3341
String uuid = UUID.randomUUID().toString();
3442
Email email = new Email("Alexsandro", "[email protected]", EmailState.CREATED);
3543
EmailCreateCommand command = new EmailCreateCommand(uuid, email);
44+
commanderHandler.create(command);
3645
}
3746

3847
}

mail-service/src/test/java/com/apssouza/eventsourcing/aggregates/EmailAggregateTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public void testCreate() throws Exception {
3636
assertEquals(email.getEmail(), result.getState().getEmail());
3737
assertEquals(email.getName(), result.getState().getName());
3838
AppEvent event = result.getUncommittedChanges().get(0);
39+
assertEquals(uuid, result.getUuid());
3940
assertEquals(uuid, event.uuid());
4041
assertEquals(EmailState.CREATED, result.getState().getState());
4142
}

oauth-server/src/main/java/com/apssouza/BasicApplication.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,9 @@
11
package com.apssouza;
22

3-
import java.io.IOException;
4-
import javax.servlet.Filter;
5-
import javax.servlet.FilterChain;
6-
import javax.servlet.FilterConfig;
7-
import javax.servlet.ServletException;
8-
import javax.servlet.ServletRequest;
9-
import javax.servlet.ServletResponse;
10-
import javax.servlet.http.HttpServletRequest;
11-
import javax.servlet.http.HttpServletResponse;
12-
import org.springframework.beans.factory.annotation.Value;
133
import org.springframework.boot.SpringApplication;
144
import org.springframework.boot.autoconfigure.SpringBootApplication;
15-
import org.springframework.boot.web.servlet.FilterRegistrationBean;
165
import org.springframework.cloud.netflix.feign.EnableFeignClients;
176
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
18-
import org.springframework.context.annotation.Bean;
19-
import org.springframework.http.HttpStatus;
207

218
@SpringBootApplication
229
@EnableHystrix

0 commit comments

Comments
 (0)