Skip to content

Commit c974d71

Browse files
committed
feat(eventing-service): init
1 parent a3b2178 commit c974d71

File tree

27 files changed

+190
-1046
lines changed

27 files changed

+190
-1046
lines changed

ticketing-eventing/eventing-service/pom.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898

9999
<dependencies>
100100

101-
<!-- Spring Boot -->
101+
<!-- Spring -->
102102
<dependency>
103103
<groupId>org.springframework.boot</groupId>
104104
<artifactId>spring-boot-starter-web</artifactId>
@@ -111,12 +111,14 @@
111111
<groupId>org.springframework.boot</groupId>
112112
<artifactId>spring-boot-starter-validation</artifactId>
113113
</dependency>
114-
115-
<!-- Spring Security -->
116114
<dependency>
117115
<groupId>org.springframework.boot</groupId>
118116
<artifactId>spring-boot-starter-security</artifactId>
119117
</dependency>
118+
<dependency>
119+
<groupId>org.springframework.cloud</groupId>
120+
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
121+
</dependency>
120122

121123
<!-- Other -->
122124
<dependency>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package de.muenchen.oss.dbs.ticketing.eventing.service.adapter.in.rest;
2+
3+
public record EventDTO(
4+
String ticket,
5+
String status,
6+
String status_id,
7+
String anliegenart,
8+
String lhmExtId
9+
// TODO additional payload or everything/partial as map?
10+
) {
11+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package de.muenchen.oss.dbs.ticketing.eventing.service.adapter.in.rest;
2+
3+
import de.muenchen.oss.dbs.ticketing.eventing.service.domain.model.Event;
4+
import org.mapstruct.Mapper;
5+
6+
@Mapper
7+
interface EventMapper {
8+
Event fromDto(String action, EventDTO dto);
9+
}
Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,43 @@
11
package de.muenchen.oss.dbs.ticketing.eventing.service.adapter.in.rest;
22

3+
import de.muenchen.oss.dbs.ticketing.eventing.service.configuration.DbsEventingProperties;
34
import de.muenchen.oss.dbs.ticketing.eventing.service.core.port.in.HandleEventInPort;
5+
import de.muenchen.oss.dbs.ticketing.eventing.service.domain.model.Event;
46
import lombok.RequiredArgsConstructor;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.http.HttpStatus;
59
import org.springframework.stereotype.Service;
610
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestBody;
12+
import org.springframework.web.bind.annotation.RequestHeader;
713
import org.springframework.web.bind.annotation.RestController;
14+
import org.springframework.web.server.ResponseStatusException;
815

916
@Service
1017
@RestController("/api/")
1118
@RequiredArgsConstructor
19+
@Slf4j
1220
public class RestAdapter {
21+
private static final String TRIGGER_HEADER = "X-Zammad-Trigger";
22+
private static final String ID_HEADER = "X-Zammad-Delivery";
23+
24+
private final DbsEventingProperties dbsEventingProperties;
1325
private final HandleEventInPort handleEventInPort;
26+
private final EventMapper eventMapper;
1427

1528
@PostMapping("event")
16-
void event() {
17-
29+
public void event(
30+
@RequestHeader(TRIGGER_HEADER) final String trigger,
31+
@RequestHeader(ID_HEADER) final String deliveryId,
32+
@RequestBody final EventDTO eventDto) {
33+
log.info("Received event {} from trigger {}: {}", deliveryId, trigger, eventDto);
34+
final String action = dbsEventingProperties.getTriggerMapping().get(trigger);
35+
if (action == null) {
36+
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "No mapping for trigger %s".formatted(trigger));
37+
}
38+
final Event event = eventMapper.fromDto(action, eventDto);
39+
log.debug("Mapped trigger {} and payload to event {}", trigger, event);
40+
handleEventInPort.handleEvent(event);
41+
log.debug("Handled event successfully");
1842
}
1943
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package de.muenchen.oss.dbs.ticketing.eventing.service.adapter.out.streaming;
2+
3+
import de.muenchen.oss.dbs.ticketing.eventing.service.core.port.out.SendEventOutPort;
4+
import de.muenchen.oss.dbs.ticketing.eventing.service.domain.exception.MessageOutException;
5+
import de.muenchen.oss.dbs.ticketing.eventing.service.domain.model.Event;
6+
import lombok.RequiredArgsConstructor;
7+
import lombok.extern.slf4j.Slf4j;
8+
import org.springframework.cloud.stream.function.StreamBridge;
9+
import org.springframework.stereotype.Service;
10+
11+
@Service
12+
@RequiredArgsConstructor
13+
@Slf4j
14+
public class StreamingAdapter implements SendEventOutPort {
15+
private static final String BINDING_NAME = "event-out";
16+
17+
private final StreamBridge streamBridge;
18+
19+
@Override
20+
public void sendEvent(final Event event) {
21+
final boolean successful;
22+
try {
23+
successful = streamBridge.send(BINDING_NAME, event);
24+
} catch (final RuntimeException e) {
25+
throw new MessageOutException("Exception while sending event %s".formatted(event), e);
26+
}
27+
if (!successful) {
28+
throw new MessageOutException("Event couldn't be send %s".formatted(event));
29+
}
30+
}
31+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.muenchen.oss.dbs.ticketing.eventing.service.configuration;
2+
3+
import jakarta.validation.constraints.NotNull;
4+
import java.util.Map;
5+
import lombok.Getter;
6+
import lombok.Setter;
7+
import org.springframework.boot.context.properties.ConfigurationProperties;
8+
import org.springframework.context.annotation.Configuration;
9+
10+
@Configuration
11+
@ConfigurationProperties("dbs.eventing")
12+
@Getter
13+
@Setter
14+
public class DbsEventingProperties {
15+
@NotNull private Map<String, String> triggerMapping;
16+
}

ticketing-eventing/eventing-service/src/main/java/de/muenchen/oss/dbs/ticketing/eventing/service/configuration/filter/CacheControlFilter.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

ticketing-eventing/eventing-service/src/main/java/de/muenchen/oss/dbs/ticketing/eventing/service/configuration/filter/ForwardedHeaderFilterConfiguration.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

ticketing-eventing/eventing-service/src/main/java/de/muenchen/oss/dbs/ticketing/eventing/service/configuration/filter/nfcconverter/NfcHelper.java

Lines changed: 0 additions & 155 deletions
This file was deleted.

0 commit comments

Comments
 (0)